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 die Anforderungen Ihres Unternehmens zu erfüllen. Cloud Firestore teilt und kombiniert Ihre Daten dynamisch basierend auf der Last, die das System erhält.
Die lastbasierte Aufteilung erfolgt automatisch und erfordert keine Vorkonfiguration. Das Cloud Firestore lastbasierte Aufteilungssystem hat einige wichtige, einzigartige Merkmale im Vergleich zu anderen Dokumentdatenbanken, die Sie bei der Modellierung Ihrer Daten berücksichtigen sollten.
Cloud Firestore's verteilte Natur kann eine Änderung einiger Designentscheidungen erfordern, insbesondere bei Arbeitslasten, die für Datenbanken optimiert wurden, bei denen das primäre Replikat der Engpass für den Schreibdurchsatz ist.
Best Practices
Arbeitslasten, bei denen große Datenmengen in einem einzelnen Thread-Client verarbeitet werden, können einen Engpass verursachen. Clients können möglicherweise Single-Threading verwenden, um Daten im Bulk-Verfahren zu laden, da der Durchsatz von Client und Server ähnlich ist. Eine Cloud Firestore Datenbank kann deutlich mehr Parallelität verarbeiten. Dazu müssen Sie jedoch Clients so konfigurieren, dass sie Anfragen parallel senden.
mongoimport
Bei Verwendung des Tools mongoimport werden Anfragen standardmäßig sequenziell gestellt.
Um die Ladezeit in Cloud Firestore zu verbessern,
legen Sie die Anzahl der Worker mit dem --numInsertionWorkers Flag fest.
Die richtige Einstellung muss möglicherweise an die Größe Ihres Clients angepasst werden. Wir empfehlen jedoch im Allgemeinen, 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 beantworten. Es ist nicht erforderlich, komplexe Pooling- oder Warteschlangen zu entwickeln, wenn Sie Aufrufe an Ihre Datenbank senden. Jeder Anfragenfluss kann unabhängige Verbindungen verwenden und Datenbankaufrufe parallel ausführen.
- Parallele Compute-Angebote verwenden: Mit Diensten wie Cloud Run, kann Ihr System die Anzahl der Compute-Worker skalieren, die zum Verarbeiten von Daten erforderlich sind.
Vorübergehende Fehler
Bei der Arbeit mit einem großen verteilten System wie Cloud Firestore können vorübergehende Fehler auftreten, z. B. Netzwerkprobleme oder Konflikte bei einem Dokument.
Beim Bulk-Laden großer Datenmengen ist es wichtig, eine Wiederholungsstrategie für fehlgeschlagene Schreibvorgänge beizubehalten, ohne den größeren Bulk-Ladevorgang zu unterbrechen.