Sie können Daten mit Tools wie mongoimport und mongorestore in Cloud Firestore laden.
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 Last, die das System empfängt.
Die lastbasierte Aufteilung erfolgt automatisch, ohne dass eine Vorkonfiguration erforderlich ist. Das Cloud Firestore-System zur lastbasierten Aufteilung hat einige wichtige, einzigartige Merkmale im Vergleich zu anderen Dokumentdatenbanken, die Sie bei der Modellierung Ihrer Daten berücksichtigen sollten.
Die verteilte Natur von Cloud Firestore kann Änderungen an einigen Designentscheidungen erfordern, 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 muss möglicherweise an die Größe Ihres Clients angepasst werden.
mongorestore
Wenn Sie das mongorestore-Tool verwenden, entfernen Sie den Parameter retryWrites=false aus Ihrem Verbindungsstring, um die Stabilität bei vorübergehenden Fehlern zu verbessern.
Um die Ladezeit in Cloud Firestore zu verkürzen, können Sie auch die Anzahl der Einfüge-Worker pro Sammlung mit dem Flag --numInsertionWorkersPerCollection und die Anzahl der parallelen Sammlungen mit dem Flag --numParallelCollections erhöhen. Die richtigen Einstellungen müssen möglicherweise an die Größe Ihres Kunden angepasst werden.
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. Sie müssen keine komplexen Pooling- oder Warteschlangenfunktionen 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 nutzen: Mit Diensten wie Cloud Run kann Ihr System die Anzahl der für die Datenverarbeitung erforderlichen Rechen-Worker skalieren.
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 Massenladen großer Mengen von Informationen ist es wichtig, eine Wiederholungsstrategie für fehlgeschlagene Schreibvorgänge beizubehalten, ohne den größeren Massenladevorgang zu unterbrechen.