データの一括読み込みのベスト プラクティス

Cloud Firestore Enterprise エディションにのみ関連します。

このページでは、mongoimport などのツールを使用して MongoDB 互換の Cloud Firestore にデータを一括読み込みする際のベスト プラクティスについて説明します。

Cloud Firestore は、ビジネスのニーズに合わせて自動スケーリングを提供する高度に分散されたシステムです。Cloud Firestore は、システムが受け取った負荷に基づいてデータを動的に分割して結合します。

負荷ベースの分割は、事前構成なしで自動的に行われます。Cloud Firestore ロードベースの分割システムには、他のドキュメント データベースと比較して重要な独自の特徴があります。データをモデル化する際は、これらの特徴を念頭に置く必要があります。

Cloud Firestore の分散型という性質上、一部の設計上の選択を変更する必要がある場合があります。特に、プライマリ レプリカが書き込みスループットのボトルネックとなるデータベース向けに最適化されたワークロードでは、変更が必要になることがあります。

ベスト プラクティス

シングル スレッド クライアントで大量のデータを処理するワークロードでは、ボトルネックが発生する可能性があります。クライアントとサーバーのスループットが同様に一致しているため、クライアントはシングル スレッドを使用してデータを一括読み込みできる場合があります。Cloud Firestore データベースは並列処理を大幅に増やすことができますが、クライアントを構成してリクエストを並列で送信する必要があります。

mongoimport

mongoimport ツールを使用する場合、リクエストはデフォルトで順番に実行されます。Cloud Firestore への読み込み時間を短縮するには、--numInsertionWorkers フラグを使用してワーカーの数を設定します。適切な設定はクライアントのサイズによって調整が必要になる場合がありますが、通常は少なくとも 32 から始めることをおすすめします。

非同期プログラミング

MongoDB 互換 API を使用して独自のソフトウェアを開発する場合は、次の方法で並列処理を改善できます。

  • 非同期フレームワーク: 非同期フレームワークを使用すると、リクエストを並行して処理して応答できます。データベースへの呼び出しを行う際に、複雑なプーリングやキューイングを開発する必要はありません。各リクエスト フローは独立した接続を使用し、データベース呼び出しを並行して行うことができます。
  • 並列化されたコンピューティング サービスを使用する: Cloud Run などのサービスを使用すると、システムはデータの処理に必要なコンピューティング ワーカーの数をスケーリングできます。

一時的な障害

Cloud Firestore などの大規模な分散システムを使用していると、ネットワークの不具合やドキュメントの競合などの一時的な障害が発生することがあります。

大量の情報を一括読み込みする場合は、大規模な一括読み込みオペレーションを失敗させることなく、失敗した書き込みの再試行戦略を維持することが重要です。