Best Practices für das Laden von Daten im Bulk

Auf dieser Seite werden die Best Practices für das Bulk-Laden von Daten in Firestore mit MongoDB-Kompatibilität mit Tools wie mongoimport beschrieben.

Firestore ist ein hochgradig verteiltes System, das automatisch skaliert wird, um den Anforderungen Ihres Unternehmens gerecht zu werden. Firestore teilt und kombiniert Ihre Daten dynamisch basierend auf der Last, die das System empfängt.

Die lastbasierte Aufteilung erfolgt automatisch und erfordert keine Vorkonfiguration. Das Firestore-System zur lastbasierten Aufteilung hat einige wichtige, einzigartige Eigenschaften im Vergleich zu anderen Dokumentdatenbanken, die Sie bei der Modellierung Ihrer Daten berücksichtigen sollten.

Die verteilte Architektur von 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 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 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 Datenverarbeitung erforderlichen Rechen-Worker skalieren.

Vorübergehende Fehler

Bei der Arbeit mit einem großen verteilten System wie Firestore können vorübergehende Fehler auftreten, z. B. Netzwerkprobleme oder Konflikte bei einem Dokument.

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.