Azure Cosmos DB の要求ユニットRequest Units in Azure Cosmos DB

Azure Cosmos DB では、プロビジョニングするスループットおよび消費するストレージに対して時間単位で支払います。With Azure Cosmos DB, you pay for the throughput you provision and the storage you consume on an hourly basis. Azure Cosmos データベースで常に十分なシステム リソースを確実に使用できるようにするには、スループットをプロビジョニングする必要があります。Throughput must be provisioned to ensure that sufficient system resources are available for your Azure Cosmos database at all times. Azure Cosmos DB の SLA かそれ以上を満たすのに十分なリソースが必要です。You need enough resources to meet or exceed the Azure Cosmos DB SLAs.

Azure Cosmos DB では、多くの API (SQL、MongoDB、Cassandra、Gremlin、Table など) がサポートされています。Azure Cosmos DB supports many APIs, such as SQL, MongoDB, Cassandra, Gremlin, and Table. 各 API には、固有のデータベース操作のセットがあります。Each API has its own set of database operations. これらの操作の範囲は、単純なポイント読み取り/書き込みから、複雑なクエリまで及びます。These operations range from simple point reads and writes to complex queries. 各データベース操作は、それらの操作の複雑さに基づいて、システム リソースを消費します。Each database operation consumes system resources based on the complexity of the operation.

すべてのデータベース操作のコストは Azure Cosmos DB によって正規化され、"要求ユニット" (RU) によって表されます。The cost of all database operations is normalized by Azure Cosmos DB and is expressed by Request Units (or RUs, for short). 1 秒間の RU は、スループットのための通貨と考えることができます。You can think of RUs per second as the currency for throughput. 1 秒あたりの RU は、速度に基づく通貨です。RUs per second is a rate-based currency. それにより、Azure Cosmos DB によってサポートされるデータベース操作を実行するために必要な CPU、IOPS、メモリなどのシステム リソースが抽象化されます。It abstracts the system resources such as CPU, IOPS, and memory that are required to perform the database operations supported by Azure Cosmos DB.

1 KB のアイテムを読み取るコストは 1 要求ユニット (つまり 1 RU) です。The cost to read a 1 KB item is 1 Request Unit (or 1 RU). その他のすべてのデータベース操作にも、同様に RU を使用してコストが割り当てられます。All other database operations are similarly assigned a cost using RUs. Azure Cosmos コンテナーの操作に使用する API に関係なく、コストは RU によって測定されます。No matter which API you use to interact with your Azure Cosmos container, costs are always measured by RUs. 書き込み、読み取り、クエリのどのデータベース操作でも、コストは常に RU で測定されます。Whether the database operation is a write, read, or query, costs are always measured in RUs.

次の図では、RU の高度な概念を示します。The following image shows the high-level idea of RUs:

データベース操作による要求ユニットの消費

容量を管理および計画するために、Azure Cosmos DB では、特定のデータセットに対する特定のデータベース操作の RU の数が決定的であることが確認されます。To manage and plan capacity, Azure Cosmos DB ensures that the number of RUs for a given database operation over a given dataset is deterministic. すべてのデータベース操作によって消費される RU の数を追跡するには、応答ヘッダーを調べます。You can examine the response header to track the number of RUs that are consumed by any database operation. RU 使用量に影響を与える要因とアプリケーションのスループット要件を理解したら、費用対効果の高い方法でアプリケーションを実行できます。When you understand the factors that affect RU charges and your application's throughput requirements, you can run your application cost effectively.

アプリケーションの RU の数は秒単位でプロビジョニングします (増分は 100 RU/秒)。You provision the number of RUs for your application on a per-second basis in increments of 100 RUs per second. アプリケーション用にプロビジョニングされたスループットをスケーリングするには、いつでも RU の値を増やしたり減らしたりできます。To scale the provisioned throughput for your application, you can increase or decrease the number of RUs at any time. 増減の変更は 100 RU 単位で行うことができます。You can scale in increments or decrements of 100 RUs. 変更は、プログラムまたは Azure portal を使用して行うことができます。You can make your changes either programmatically or by using the Azure portal. 課金は時間単位です。You are billed on an hourly basis.

次の 2 つの個別の細分性でスループットをプロビジョニングできます。You can provision throughput at two distinct granularities:

要求ユニットの考慮事項Request Unit considerations

プロビジョニングする 1 秒あたりの RU 数を推定するときは、次の要因を検討します。While you estimate the number of RUs per second to provision, consider the following factors:

  • アイテムのサイズ:アイテムのサイズが増加すると、そのアイテムの読み取りまたは書き込みのために消費される RU の数も増加します。Item size: As the size of an item increases, the number of RUs consumed to read or write the item also increases.

  • アイテムのインデックス付け:既定では、アイテムごとにインデックスが自動的に作成されます。Item indexing: By default, each item is automatically indexed. コンテナー内の一部のアイテムにインデックスを作成しないように選択すると、消費される RU は少なくなります。Fewer RUs are consumed if you choose not to index some of your items in a container.

  • アイテム プロパティの数:すべてのプロパティで既定のインデックス作成を実行した場合、アイテム プロパティの数が増加すると、アイテムを書き込むために消費される RU の数が増加します。Item property count: Assuming the default indexing is on all properties, the number of RUs consumed to write an item increases as the item property count increases.

  • インデックス付きプロパティ:各コンテナーのインデックス ポリシーによって、既定でインデックスが作成されるプロパティが決まります。Indexed properties: An index policy on each container determines which properties are indexed by default. 書き込み操作の RU 消費量を削減するには、インデックス付きプロパティの数を制限します。To reduce the RU consumption for write operations, limit the number of indexed properties.

  • データの一貫性:強力な有界整合性制約の整合性レベルでは、他の緩和された整合性レベルの場合と比べて、読み取り操作の実行中に約 2 倍の RU が消費されます。Data consistency: The strong and bounded staleness consistency levels consume approximately two times more RUs while performing read operations when compared to that of other relaxed consistency levels.

  • クエリのパターン:クエリの複雑さは、操作のために消費される RU の数に影響を与えます。Query patterns: The complexity of a query affects how many RUs are consumed for an operation. クエリ操作のコストに影響する要因は次のとおりです。Factors that affect the cost of query operations include:

    • クエリ結果の数The number of query results
    • 述語の数The number of predicates
    • 述語の性質The nature of the predicates
    • ユーザー定義関数の数The number of user-defined functions
    • ソース データのサイズThe size of the source data
    • 結果セットのサイズThe size of the result set
    • プロジェクションProjections

    Azure Cosmos DB では、同じデータに対する同じクエリが、繰り返しの実行で常に同じ数の RU を要することが保証されます。Azure Cosmos DB guarantees that the same query on the same data always costs the same number of RUs on repeated executions.

  • スクリプトの使用:クエリと同様に、ストアド プロシージャとトリガーは、実行される操作の複雑さに基づいて RU を消費します。Script usage: As with queries, stored procedures and triggers consume RUs based on the complexity of the operations that are performed. アプリケーションを開発する場合は、要求使用量ヘッダーを調べて、各操作で消費される RU 量をより深く理解してください。As you develop your application, inspect the request charge header to better understand how much RU capacity each operation consumes.

次の手順Next steps