Azure Cosmos DB Bulk Executor ライブラリの概要Azure Cosmos DB bulk executor library overview

Azure Cosmos DB は高速で柔軟なグローバル分散データベース サービスであり、弾力的にスケールアウトして以下をサポートするように設計されています。Azure Cosmos DB is a fast, flexible, and globally distributed database service that is designed to elastically scale out to support:

  • 読み取りと書き込みの大きなスループット (1 秒あたり数百万回の操作)。Large read and write throughput (millions of operations per second).
  • 予測可能なミリ秒単位の待機時間での、大量のトランザクション データと運用データの格納 (数百テラバイトまたはそれ以上)。Storing high volumes of (hundreds of terabytes, or even more) transactional and operational data with predictable millisecond latency.

Bulk Executor ライブラリは、このような大きなスループットとストレージを利用するのに役立ちます。The bulk executor library helps you leverage this massive throughput and storage. Bulk Executor ライブラリを使うと、一括インポート API と一括更新 API を通じて、Azure Cosmos DB で一括操作を実行できます。The bulk executor library allows you to perform bulk operations in Azure Cosmos DB through bulk import and bulk update APIs. 以下のセクションでは Bulk Executor ライブラリの機能についてさらに説明します。You can read more about the features of bulk executor library in the following sections.

注意

現時点では、Bulk Executor ライブラリはインポート操作と更新操作をサポートし、Azure Cosmos DB SQL API アカウントと Gremlin API アカウントによってのみサポートされます。Currently, bulk executor library supports import and update operations and this library is supported by Azure Cosmos DB SQL API and Gremlin API accounts only.

Bulk Executor ライブラリの主な機能Key features of the bulk executor library

  • コンテナーに割り当てられているスループットを最大限に利用するために必要なクライアント側計算リソースが大幅に減少します。It significantly reduces the client-side compute resources needed to saturate the throughput allocated to a container. クライアント コンピューターの CPU を最大限に利用した状態で比較した場合、一括インポート API を使ってデータを書き込むシングル スレッド アプリケーションは、データを並列に書き込むマルチ スレッド アプリケーションの 10 倍の書き込みスループットを達成します。A single threaded application that writes data using the bulk import API achieves 10 times greater write throughput when compared to a multi-threaded application that writes data in parallel while saturating the client machine's CPU.

  • ライブラリ内で効率的に処理することにより、要求レートの制限、要求タイムアウト、およびその他の一時的な例外を処理するアプリケーション ロジックを記述する単調なタスクを抽象化します。It abstracts away the tedious tasks of writing application logic to handle rate limiting of request, request timeouts, and other transient exceptions by efficiently handling them within the library.

  • 一括操作を実行するアプリケーションをスケールアウトするシンプルなメカニズムを提供します。Azure VM で実行する 1 つの Bulk Executor インスタンスは 500K RU/秒以上を消費でき、個々のクライアント VM にインスタンスを追加することでより高いスループットを実現できます。It provides a simplified mechanism for applications performing bulk operations to scale out. A single bulk executor instance running on an Azure VM can consume greater than 500K RU/s and you can achieve a higher throughput rate by adding additional instances on individual client VMs.

  • スケールアウト アーキテクチャを使用することで、1 時間以内に 1 テラバイトを超えるデータを一括インポートできます。It can bulk import more than a terabyte of data within an hour by using a scale-out architecture.

  • Azure Cosmos DB コンテナー内の既存のデータを、パッチとして一括更新できます。It can bulk update existing data in Azure Cosmos DB containers as patches.

BulkExecutor の動作方法How does the Bulk Executor operate?

ドキュメントをインポートまたは更新する一括操作がエンティティのバッチでトリガーされると、最初に、その Azure Cosmos DB パーティション キーの範囲に対応するバケットにシャッフルされます。When a bulk operation to import or update documents is triggered with a batch of entities, they are initially shuffled into buckets corresponding to their Azure Cosmos DB partition key range. パーティション キーの範囲に対応する各バケット内では、バケットがミニバッチに分割され、各ミニバッチはサーバー側でコミットされるペイロードとして機能します。Within each bucket that corresponds to a partition key range, they are broken down into mini-batches and each mini-batch act as a payload that is committed on the server-side. Bulk Executor ライブラリには、これらのミニバッチをパーティション キーの範囲内と範囲間の両方で同時実行するための最適化が組み込まれています。The bulk executor library has built in optimizations for concurrent execution of these mini-batches both within and across partition key ranges. 次の図では、Bulk Executor が異なるパーティション キーにデータをバッチ処理する方法を示しています。Following image illustrates how bulk executor batches data into different partition keys:

BulkExecutor のアーキテクチャ

BulkExecutor ライブラリは、コレクションに割り当てられているスループットを最大限に活用します。The Bulk Executor library makes sure to maximally utilize the throughput allocated to a collection. Azure Cosmos DB の各パーティション キー範囲に対して  AIMD スタイルの輻輳制御メカニズムを使用し、レートの制限とタイムアウトを効率的に処理します。It uses an AIMD-style congestion control mechanism for each Azure Cosmos DB partition key range to efficiently handle rate limiting and timeouts.

次の手順Next Steps

  • .NETJava で BulkExecutor ライブラリを使用するサンプル アプリケーションを試して、さらに詳しく学習してください。Learn more by trying out the sample applications consuming the Bulk Executor library in .NET and Java.
  • .NETJava の Bulk Executor SDK 情報とリリース ノートを確認してください。Check out the bulk executor SDK information and release notes in .NET and Java.
  • BulkExecutor ライブラリは Cosmos DB Spark コネクタに統合されています。詳しくは、Azure Cosmos DB Spark コネクタに関する記事をご覧ください。The Bulk Executor library is integrated into the Cosmos DB Spark connector, to learn more, see Azure Cosmos DB Spark connector article.
  • Bulk Executor ライブラリは、データをコピーするために Azure Data Factory の Azure Cosmos DB コネクタの新しいバージョンにも統合されています。The bulk executor library is also integrated into a new version of Azure Cosmos DB connector for Azure Data Factory to copy data.