NoSQL için Azure Cosmos DB'deki işlemler için istek birimi ücretini bulma

UYGULANANLAR: NoSQL

Azure Cosmos DB; SQL, MongoDB, Cassandra, Gremlin ve Tablo gibi birçok API'yi destekler. Her API'nin kendi veritabanı işlemleri kümesi vardır. Bu işlemler basit nokta okuma ve yazma işlemlerinden karmaşık sorgulara kadar değişir. Her veritabanı işlemi, işlemin karmaşıklığı temelinde sistem kaynaklarını kullanır.

Tüm veritabanı işlemlerinin maliyeti Azure Cosmos DB tarafından normalleştirilir ve istek birimleri (RU) ile ifade edilir. İstek ücreti , tüm veritabanı işlemleriniz tarafından kullanılan istek birimleridir. RU'ları, Azure Cosmos DB tarafından desteklenen veritabanı işlemlerini gerçekleştirmek için gereken CPU, IOPS ve bellek gibi sistem kaynaklarını soyutlayan bir performans para birimi olarak düşünebilirsiniz. Kapsayıcınızla etkileşimde bulunurken hangi API'yi kullanırsanız kullanın, maliyetler her zaman RU cinsinden ölçülür. Veritabanı işleminin yazma, nokta okuma veya sorgulama olması fark etmez; maliyetler her zaman RU cinsinden ölçülür. Daha fazla bilgi edinmek için bkz . Azure Cosmos DB'de İstek Birimleri.

Bu makalede, NoSQL için Azure Cosmos DB'de bir kapsayıcıda çalıştırılacak herhangi bir işlem için istek birimi tüketimini bulmanın farklı yolları açıklanmaktadır. Farklı bir API kullanıyorsanız bkz . MongoDB IÇIN API, Cassandra IÇIN API, Gremlin için API ve Tablo için API.

Şu anda yalnızca Azure portalını kullanarak veya SDK'lardan biri aracılığıyla Azure Cosmos DB'den gönderilen yanıtı inceleyerek tüketimi ölçebilirsiniz. NoSQL için API kullanıyorsanız, bir işlem için istek ücretini bulmak için birden çok seçeneğiniz vardır.

Azure portal’ı kullanma

  1. Azure Portal oturum açın.

  2. Yeni bir Azure Cosmos DB hesabı oluşturun ve bu hesabı verilerle besleyin veya zaten veri içeren mevcut bir Azure Cosmos DB hesabını seçin.

  3. Veri Gezgini bölmesine gidin ve üzerinde çalışmak istediğiniz kapsayıcıyı seçin.

  4. Yeni SQL Sorgusu'nu seçin.

  5. Geçerli bir sorgu girin ve Sorguyu Yürüt'e tıklayın.

  6. Yürüttüğüniz isteğin gerçek istek ücretini görüntülemek için Sorgu İstatistikleri'ni seçin.

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

.NET SDK’yı kullanma

.NET SDK v2'den döndürülen nesneler bir RequestCharge özelliği kullanıma sunar:

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;
}

Java SDK'sını kullanma

Java SDK'sından döndürülen nesneler bir getRequestCharge() yöntemi kullanıma sunar:

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();
});

Daha fazla bilgi için bkz . Hızlı Başlangıç: NoSQL için Azure Cosmos DB hesabı kullanarak Java uygulaması derleme.

Node.js SDK'sını kullanma

Node.js SDK'sından döndürülen nesneler, temel alınan HTTP API'sinin döndürdiği tüm üst bilgileri eşleyen bir headers alt nesne gösterir. İstek ücreti anahtarı altında x-ms-request-charge sağlanır:

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'];
}

Daha fazla bilgi için bkz . Hızlı Başlangıç: NoSQL için Azure Cosmos DB hesabı kullanarak Node.js uygulaması derleme.

Python SDK'yı kullanma

Python SDK'sından Container alınan nesne, yürütülen son işlem için temel alınan HTTP API'sinin döndürdiği tüm üst bilgileri eşleyen bir last_response_headers sözlük sunar. İstek ücreti anahtarı altında x-ms-request-charge sağlanır:

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"]

Daha fazla bilgi için bkz . Hızlı Başlangıç: NoSQL için Azure Cosmos DB hesabı kullanarak Python uygulaması derleme.

Sonraki adımlar

RU tüketiminizi iyileştirme hakkında bilgi edinmek için şu makalelere bakın: