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
Azure Portal’ında oturum açın.
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.
Veri Gezgini bölmesine gidin ve üzerinde çalışmak istediğiniz kapsayıcıyı seçin.
Yeni SQL Sorgusu'nu seçin.
Geçerli bir sorgu girin ve Sorguyu Yürüt'e tıklayın.
Yürüttüğüniz isteğin gerçek istek ücretini görüntülemek için Sorgu İstatistikleri'ni seçin.
.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 sunar. İ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": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"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="aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
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:
- Azure Cosmos DB'de İstek birimleri
- Azure Cosmos DB’de sağlanan işlem hızını iyileştirme
- Azure Cosmos DB'de sorgu maliyetini iyileştirme
- Sağlanan aktarım hızını genel olarak ölçeklendirme
- Azure Cosmos DB'de sağlanan aktarım hızına giriş
- Kapsayıcı için aktarım hızı sağlama
- Azure Cosmos DB'de içgörülerle izleme ve hata ayıklama