Temukan biaya unit permintaan untuk operasi di Azure Cosmos DB untuk NoSQL

BERLAKU UNTUK: NoSQL

Azure Cosmos DB mendukung banyak API, seperti SQL, MongoDB, Cassandra, Gremlin, dan Table. Setiap API memiliki set operasi database sendiri. Operasi ini berkisar dari titik baca dan tulis sederhana hingga kueri yang kompleks. Setiap operasi database menggunakan sumber daya sistem berdasarkan kompleksitas operasi.

Biaya semua operasi database dinormalisasi oleh Azure Cosmos DB dan dinyatakan dengan unit permintaan (RU). Biaya permintaan adalah unit permintaan yang digunakan oleh semua operasi database Anda. Anda bisa menganggap RU sebagai performa yang saat ini mengabstraksi sumber daya sistem seperti CPU, IOPS, dan memori yang diperlukan untuk melakukan operasi database yang didukung oleh Microsoft Azure Cosmos DB. API apa pun yang Anda gunakan untuk berinteraksi dengan kontainer Azure Cosmos Anda, biayanya selalu diukur dengan RU. Terlepas dari operasi database berupa tulis, baca, atau kueri, biayanya selalu diukur dalam RU. Untuk mempelajari lebih lanjut, lihat Unit Permintaan di Azure Cosmos DB.

Artikel ini menyajikan berbagai cara agar Anda dapat menemukan konsumsi unit permintaan untuk operasi apa pun yang dijalankan terhadap kontainer di Azure Cosmos DB untuk NoSQL. Jika Anda menggunakan API yang berbeda, lihat API untuk MongoDB, API untuk Cassandra, API untuk Gremlin, dan API untuk Tabel.

Saat ini, Anda dapat mengukur penggunaan hanya dengan menggunakan portal Azure atau dengan memeriksa respons yang dikirim dari Azure Cosmos DB melalui salah satu SDK. Jika Anda menggunakan API untuk NoSQL, Anda memiliki beberapa opsi untuk menemukan biaya permintaan untuk operasi.

Menggunakan portal Azure

  1. Masuk ke portal Azure.

  2. Buat akun Azure Cosmos DB baru dan umpankan dengan data, atau pilih akun Azure Cosmos DB yang sudah ada yang sudah berisi data.

  3. Masuk ke panel Data Explorer, lalu pilih kontainer yang ingin Anda kerjakan.

  4. Pilih Kueri SQL Baru.

  5. Masukkan kueri yang valid, lalu pilih Jalankan Kueri .

  6. Pilih Statistik Kueri untuk menampilkan daya permintaan aktual untuk permintaan yang Anda jalankan.

    Screenshot of a SQL query request charge in the Azure portal.

Menggunakan .NET SDK

Objek yang dikembalikan dari .NET SDK v2 mengekspos properti RequestCharge:

ResourceResponse<Document> fetchDocumentResponse = await client.ReadDocumentAsync(
    UriFactory.CreateDocumentUri("database", "container", "itemId"),
    new RequestOptions
    {
        PartitionKey = new PartitionKey("partitionKey")
    });
var requestCharge = fetchDocumentResponse.RequestCharge;

StoredProcedureResponse<string> storedProcedureCallResponse = await client.ExecuteStoredProcedureAsync<string>(
    UriFactory.CreateStoredProcedureUri("database", "container", "storedProcedureId"),
    new RequestOptions
    {
        PartitionKey = new PartitionKey("partitionKey")
    });
requestCharge = storedProcedureCallResponse.RequestCharge;

IDocumentQuery<dynamic> query = client.CreateDocumentQuery(
    UriFactory.CreateDocumentCollectionUri("database", "container"),
    "SELECT * FROM c",
    new FeedOptions
    {
        PartitionKey = new PartitionKey("partitionKey")
    }).AsDocumentQuery();
while (query.HasMoreResults)
{
    FeedResponse<dynamic> queryResponse = await query.ExecuteNextAsync<dynamic>();
    requestCharge = queryResponse.RequestCharge;
}

Menggunakan Java SDK

Objek yang dikembalikan dari Java SDK mengekspos metode getRequestCharge():

RequestOptions requestOptions = new RequestOptions();
requestOptions.setPartitionKey(new PartitionKey("partitionKey"));

Observable<ResourceResponse<Document>> readDocumentResponse = client.readDocument(String.format("/dbs/%s/colls/%s/docs/%s", "database", "container", "itemId"), requestOptions);
readDocumentResponse.subscribe(result -> {
    double requestCharge = result.getRequestCharge();
});

Observable<StoredProcedureResponse> storedProcedureResponse = client.executeStoredProcedure(String.format("/dbs/%s/colls/%s/sprocs/%s", "database", "container", "storedProcedureId"), requestOptions, null);
storedProcedureResponse.subscribe(result -> {
    double requestCharge = result.getRequestCharge();
});

FeedOptions feedOptions = new FeedOptions();
feedOptions.setPartitionKey(new PartitionKey("partitionKey"));

Observable<FeedResponse<Document>> feedResponse = client
    .queryDocuments(String.format("/dbs/%s/colls/%s", "database", "container"), "SELECT * FROM c", feedOptions);
feedResponse.forEach(result -> {
    double requestCharge = result.getRequestCharge();
});

Untuk informasi selengkapnya, lihat Mulai Cepat: Membangun aplikasi Java dengan menggunakan akun Azure Cosmos DB for NoSQL.

Menggunakan Node.js SDK

Objek yang dikembalikan dari Node.js SDK mengekspos headers sub-objek yang memetakan semua header yang dikembalikan oleh HTTP API yang mendasarinya. Biaya permintaan tersedia dalam kunci x-ms-request-charge:

const item = await client
    .database('database')
    .container('container')
    .item('itemId', 'partitionKey')
    .read();
var requestCharge = item.headers['x-ms-request-charge'];

const storedProcedureResult = await client
    .database('database')
    .container('container')
    .storedProcedure('storedProcedureId')
    .execute({
        partitionKey: 'partitionKey'
    });
requestCharge = storedProcedureResult.headers['x-ms-request-charge'];

const query = client.database('database')
    .container('container')
    .items
    .query('SELECT * FROM c', {
        partitionKey: 'partitionKey'
    });
while (query.hasMoreResults()) {
    var result = await query.executeNext();
    requestCharge = result.headers['x-ms-request-charge'];
}

Untuk informasi selengkapnya, lihat Mulai Cepat: Membuat aplikasi Node.js dengan menggunakan akun Azure Cosmos DB for NoSQL.

Menggunakan Python SDK

Objek Container dari Python SDK mengekspos kamus last_response_headers yang memetakan semua header yang dikembalikan oleh HTTP API yang mendasarinya untuk operasi terakhir yang dijalankan. Biaya permintaan tersedia dalam kunci x-ms-request-charge:

new_item = {
    "id": "70b63682-b93a-4c77-aad2-65501347265f",
    "partition_key": "61dba35b-4f02-45c5-b648-c6badc0cbd79",
    "name": "Yamba Surfboard"
}
container.create_item(new_item)

request_charge = container.client_connection.last_response_headers["x-ms-request-charge"]
existing_item = container.read_item(
    item="70b63682-b93a-4c77-aad2-65501347265f"
    partition_key="61dba35b-4f02-45c5-b648-c6badc0cbd79"
)

request_charge = container.client_connection.last_response_headers["x-ms-request-charge"]

Untuk informasi selengkapnya, lihat Mulai Cepat: Membuat aplikasi Python dengan menggunakan akun Azure Cosmos DB for NoSQL.

Langkah berikutnya

Untuk mempelajari tentang mengoptimalkan konsumsi RU Anda, baca artikel berikut: