Azure Cosmos DB Bulk Executor ライブラリの概要
適用対象: NoSQL
Azure Cosmos DB は、高速で柔軟なグローバル分散データベース サービスであり、弾力的にスケールアウトして以下をサポートします。
- 1 秒あたり数百万回の操作の読み取りと書き込みの大規模スループット。
- 数百テラバイトまたはそれ以上の大量のトランザクション データとオペレーショナル データを、ミリ秒単位の予測可能な待機時間で保存する。
バルク エグゼキューター ライブラリは、この膨大なスループットとストレージを使用するのに役立ちます。 Bulk Executor ライブラリを使うと、一括インポート API と一括更新 API を通じて、Azure Cosmos DB で一括操作を実行できます。 以下のセクションでは Bulk Executor ライブラリの機能についてさらに説明します。
Note
現在、バルク エグゼキューター ライブラリではインポートと更新の操作がサポートされています。 このライブラリは、Azure Cosmos DB API では NoSQL および Gremlin のアカウントに対してのみサポートされています。
重要
バルク エグゼキューター ライブラリは現在、サーバーレス アカウントではサポートされていません。 .NET では、SDK の V3 バージョンで使用できる一括サポートを使用することをお勧めします。
Bulk Executor ライブラリの主な機能
バルク エグゼキューター ライブラリを使用すると、コンテナーに割り当てられたスループットを飽和させるために必要なクライアント側のコンピューティング リソースが大幅に削減されます。 一括インポート API を使用してデータを書き込むシングル スレッド アプリケーションは、クライアント マシンの CPU を飽和状態にしながらデータを並列に書き込むマルチスレッド アプリケーションと比較して、10 倍の書き込みスループットを実現します。
バルク エグゼキューター ライブラリは、要求レートの制限、要求タイムアウト、およびその他の一時的な例外を処理するアプリケーション ロジックを記述する単調なタスクを抽象化します。 ライブラリ内でそれらが効率的に処理されます。
これにより、アプリケーションが一括操作を実行してスケールアウトするための簡略化されたメカニズムが提供されます。Azure 仮想マシン上で実行される 1 つのバルク エグゼキューター インスタンスは、500 K RU/秒を超える消費をする可能性があります。 個々のクライアント仮想マシンにインスタンスを追加すると、より高いスループット レートを実現できます。
バルク エグゼキューター ライブラリは、スケールアウト アーキテクチャを使用して、1 時間以内に 1 テラバイトを超えるデータを一括インポートできます。
Azure Cosmos DB コンテナー内の既存のデータを、パッチとして一括更新できます。
Bulk Executor の動作方法
ドキュメントをインポートまたは更新する一括操作がエンティティのバッチでトリガーされると、最初に、その Azure Cosmos DB パーティション キーの範囲に対応するバケットにシャッフルされます。 パーティション キーの範囲に対応する各バケット内では、バケットがミニバッチに分割されます。
各ミニバッチはサーバー側でコミットされるペイロードとして機能します。 バルク エグゼキューター ライブラリには、これらのミニバッチをパーティション キーの範囲内と範囲間の両方で同時実行するための最適化が組み込まれています。
次の図では、バルク エグゼキューターが異なるパーティション キーにデータをバッチ処理する方法を示しています。
Bulk Executor ライブラリは、コレクションに割り当てられているスループットを最大限に活用します。 Azure Cosmos DB の各パーティション キー範囲に対して AIMD スタイルの輻輳制御メカニズムを使用し、レートの制限とタイムアウトを効率的に処理します。
バルク エグゼキューター ライブラリを使用するサンプル アプリケーションの詳細については、「Bulk Executor .NET ライブラリを使用して Azure Cosmos DB で一括操作を実行する」および「Azure Cosmos DB のデータに対して一括操作を実行する」を参照してください。
参照情報については、.NET バルク エグゼキューター ライブラリと Java バルク エグゼキューター ライブラリに関するページを参照してください。