個々の操作のコストを測定する
.NET SDK を使用して、個々の操作のコストを RU/秒の観点から測定することもできます。 これはあらかじめ応答ヘッダーに含まれているので、カスタムのオプション オブジェクトを使用する必要はありません。
以下に示したのは、C# のサンプル コード ブロックです。コンテナーを受け取って新しいオブジェクトを作成した後、Container クラスの CreateItemAsync メソッドを使用して、作成操作を実行し、その結果を ItemResponse<> 型の変数に格納しています。
Container container = client.GetContainer("cosmicworks", "products");
Product item = new(
$"{Guid.NewGuid()}",
$"{Guid.NewGuid()}",
"Road Bike",
500,
"rd-bk-500"
);
ItemResponse<Product> response = await container.CreateItemAsync<Product>(item);
ItemResponse<> 変数は、さまざまなことに利用できますが、この例で取り上げるのは 2 つの用途のみです。
まず、この変数には、指定したジェネリック型の項目のインスタンスを逆シリアル化して出力する Resource プロパティが格納されています。 このリソースは、サーバー側の Azure Cosmos DB for NoSQL で直近に作成された項目です。
2 点目は、この変数には、double 型の値を返す RequestCharge プロパティが格納されています。この値は、この操作で消費された要求ユニット数を表します。
Product createdItem = response.Resource;
Console.WriteLine($"RUs:\t{response.RequestCharge:0.00}");
このコードを実行すると、単一の操作で項目の作成に費やされた要求ユニット使用量が出力ウィンドウに表示されます。
RUs: 7.05