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 などの大規模な分散システムを操作していると、ネットワークの不具合やドキュメントの競合などの一時的な障害が発生することがあります。
大量の情報を一括読み込みする場合は、大規模な一括読み込みオペレーションを失敗させずに、失敗した書き込みの再試行戦略を維持することが重要です。