Nur für die Cloud Firestore Enterprise-Edition relevant. |
Auf dieser Seite werden die Best Practices für das Bulk-Laden von Daten in Cloud Firestore mit MongoDB-Kompatibilität 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 Ihre Daten dynamisch auf und kombiniert sie wieder, je nach der vom System empfangenen Last.
Die lastbasierte Aufteilung erfolgt automatisch und erfordert keine Vorkonfiguration. 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 einen Engpass verursachen. Clients können möglicherweise Singlethreading 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 Anfragen parallel gesendet werden.
mongoimport
Wenn Sie das mongoimport
-Tool verwenden, werden Anfragen standardmäßig sequenziell gestellt.
Um die Ladezeit in Cloud Firestore zu verkürzen, 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 APIs 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 Warteschlangenmechanismen zu entwickeln, wenn Sie Aufrufe an Ihre Datenbank senden. Für jeden Anfragefluss können unabhängige Verbindungen verwendet und die Datenbankaufrufe parallel ausgeführt werden.
- 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.