Auf dieser Seite werden die Best Practices für das Bulk-Laden von Daten in Cloud Firestore mit Tools wie mongoimport beschrieben.
Cloud Firestore ist ein hochgradig verteiltes System, das automatisch skaliert wird, um den Anforderungen Ihres Unternehmens gerecht zu werden. Cloud Firestore teilt und kombiniert Ihre Daten dynamisch basierend auf der vom System empfangenen Last.
Die lastbasierte Aufteilung erfolgt automatisch, ohne dass eine Vorkonfiguration erforderlich ist. Das lastbasierte Aufteilungssystem von Cloud Firestore hat einige wichtige, einzigartige Merkmale im Vergleich zu anderen Dokumentdatenbanken, die Sie bei der Modellierung Ihrer Daten berücksichtigen sollten.
Aufgrund der verteilten Natur von Cloud Firestore müssen möglicherweise einige Designentscheidungen geändert werden, insbesondere bei Arbeitslasten, die für Datenbanken optimiert wurden, in denen das primäre Replikat der Engpass für den Schreibdurchsatz ist.
Best Practices
Arbeitslasten, bei denen große Datenmengen in einem Single-Thread-Client verarbeitet werden, können zu einem Engpass führen. Clients können möglicherweise Single-Threading verwenden, um Daten im Bulk zu laden, da der Durchsatz von Client und Server ähnlich ist. Eine Cloud Firestore-Datenbank kann deutlich mehr Parallelität verarbeiten, aber dazu müssen Sie Clients so konfigurieren, dass sie Anfragen parallel senden.
mongoimport
Wenn Sie das mongoimport-Tool verwenden, werden Anfragen standardmäßig sequenziell gestellt.
Um die Ladezeit in Cloud Firestore zu verbessern, legen Sie die Anzahl der Worker mit dem Flag --numInsertionWorkers fest.
Die richtige Einstellung hängt von der Größe Ihres Kunden ab. Wir empfehlen jedoch, mit mindestens 32 zu beginnen.
Asynchrone Programmierung
Wenn Sie Ihre eigene Software mit MongoDB-kompatiblen Vorgängen entwickeln, können Sie die Parallelität auf folgende Weise verbessern:
- Asynchrone Frameworks: Mit asynchronen Frameworks können Sie Anfragen parallel verarbeiten und darauf reagieren. Es ist nicht erforderlich, komplexe Pooling- oder Warteschlangensysteme zu entwickeln, wenn Sie Aufrufe an Ihre Datenbank senden. Jeder Anfragefluss kann unabhängige Verbindungen verwenden und seine Datenbankaufrufe parallel ausführen.
- Parallele Rechenangebote verwenden: Mit Diensten wie Cloud Run kann Ihr System die Anzahl der für die Verarbeitung von Daten erforderlichen Rechen-Worker skalieren.
Vorübergehende Fehler
Bei der Arbeit mit einem großen verteilten System wie Cloud Firestore können vorübergehende Fehler wie Netzwerkprobleme oder Konflikte bei einem Dokument auftreten.
Beim Bulk-Laden großer Mengen an Informationen ist es wichtig, eine Wiederholungsstrategie für fehlgeschlagene Schreibvorgänge beizubehalten, ohne den größeren Bulk-Ladevorgang zu unterbrechen.