Best Practices für das Laden von Bulk-Daten

Massendaten 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 erhält.

Die lastbasierte Aufteilung erfolgt automatisch und ohne vorherige Konfiguration. 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.

Die verteilte Natur von Cloud Firestore kann die Ä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 in großen Mengen 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.

mongorestore

Wenn Sie das Tool mongorestore verwenden, entfernen Sie den Parameter retryWrites=false aus Ihrer Verbindungsstring, um die Resilienz gegenüber vorübergehenden Fehlern zu verbessern.

Um die Ladezeit in Cloud Firestore zu verbessern, können Sie auch die Anzahl der Einfügungs-Worker pro Sammlung mit dem --numInsertionWorkersPerCollection Flag und die Anzahl der parallelen Sammlungen mit dem --numParallelCollections Flag erhöhen. Die richtigen Einstellungen müssen möglicherweise an die Größe Ihres Clients 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. Beim Aufrufen Ihrer Datenbank ist es nicht erforderlich, komplexe Pooling- oder Warteschlangensysteme zu entwickeln. Jeder Anfragenfluss kann unabhängige Verbindungen verwenden und Datenbankaufrufe parallel ausführen.
  • Parallele Computing-Angebote verwenden: Mit Diensten wie Cloud Run kann Ihr System die Anzahl der für die Datenverarbeitung erforderlichen Computing-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.

Wenn Sie große Mengen an Informationen in großen Mengen laden, ist es wichtig, eine Wiederholungsstrategie für fehlgeschlagene Schreibvorgänge beizubehalten, ohne den größeren Massenlade-Vorgang zu unterbrechen.