Vyhledání poplatku za jednotku žádosti pro operace ve službě Azure Cosmos DB for NoSQL
PLATÍ PRO: NoSQL
Azure Cosmos DB podporuje mnoho rozhraní API, jako jsou SQL, MongoDB, Cassandra, Gremlin a Table. Každé rozhraní API má vlastní sadu databázových operací. Tyto operace se liší od jednoduchých bodů čtení a zápisů až po složité dotazy. Každá databázová operace využívá systémové prostředky na základě složitosti operace.
Služba Azure Cosmos DB normalizuje náklady na všechny databázové operace a vyjadřuje je jednotkami žádostí (RU). Poplatky za žádosti jsou jednotky žádostí spotřebované všemi databázovými operacemi. Jednotky RU si můžete představit jako měnu výkonu, která abstrahuje systémové prostředky, jako jsou procesor, IOPS a paměť, které jsou potřeba k provádění databázových operací podporovaných službou Azure Cosmos DB. Bez ohledu na to, které rozhraní API používáte k interakci s kontejnerem, se náklady vždy měří v RU. Ať už je operací databáze zápis, čtení, nebo dotazování, náklady se vždy měří v jednotkách RU. Další informace najdete v tématu Jednotky žádostí ve službě Azure Cosmos DB.
Tento článek představuje různé způsoby, jak najít spotřebu jednotek žádosti pro jakoukoli operaci spuštěnou v kontejneru ve službě Azure Cosmos DB for NoSQL. Pokud používáte jiné rozhraní API, přečtěte si téma API pro MongoDB, rozhraní API pro Cassandra, rozhraní API pro Gremlin a rozhraní API pro tabulky.
V současné době můžete měřit spotřebu pouze pomocí webu Azure Portal nebo kontrolou odpovědi odeslané ze služby Azure Cosmos DB prostřednictvím jedné ze sad SDK. Pokud používáte rozhraní API pro NoSQL, máte několik možností pro vyhledání poplatku za žádost pro operaci.
Použití portálu Azure Portal
Přihlaste se k portálu Azure.
Vytvořte nový účet Služby Azure Cosmos DB a nasílte ho daty nebo vyberte existující účet služby Azure Cosmos DB, který už obsahuje data.
Přejděte do podokna Průzkumník dat a vyberte kontejner, na který chcete pracovat.
Vyberte Nový dotaz SQL.
Zadejte platný dotaz a pak vyberte Spustit dotaz.
Výběrem statistik dotazu zobrazíte skutečné poplatky za žádost, kterou jste provedli.
Použití sady .NET SDK
Objekty vrácené ze sady .NET SDK v2 zpřístupňují RequestCharge
vlastnost:
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;
}
Použití sady Java SDK
Objekty vrácené ze sady Java SDK zpřístupňují metodu 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();
});
Další informace najdete v tématu Rychlý start: Vytvoření aplikace v Javě pomocí účtu Azure Cosmos DB for NoSQL.
Použití sady Node.js SDK
Objekty vrácené ze sady Node.js SDK zpřístupňují headers
podobjekt, který mapuje všechny hlavičky vrácené podkladovým rozhraním HTTP API. Poplatek za žádost je k dispozici v rámci x-ms-request-charge
klíče:
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'];
}
Další informace najdete v tématu Rychlý start: Vytvoření aplikace Node.js pomocí účtu Azure Cosmos DB for NoSQL.
Použití sady Python SDK
Objekt Container
ze sady Python SDK zveřejňuje slovník, který mapuje last_response_headers
všechny hlavičky vrácené podkladovým rozhraním HTTP API pro poslední provedenou operaci. Poplatek za žádost je k dispozici v rámci x-ms-request-charge
klíče:
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"]
Další informace najdete v tématu Rychlý start: Vytvoření aplikace v Pythonu pomocí účtu Azure Cosmos DB for NoSQL.
Další kroky
Informace o optimalizaci spotřeby RU najdete v těchto článcích:
- Jednotky žádostí ve službě Azure Cosmos DB
- Optimalizace nákladů na zřízenou propustnost ve službě Azure Cosmos DB
- Optimalizace nákladů na dotazování ve službě Azure Cosmos DB
- Globálně škálovaná zřízená propustnost
- Úvod do zřízené propustnosti ve službě Azure Cosmos DB
- Zřízení propustnosti pro kontejner
- Monitorování a ladění pomocí přehledů ve službě Azure Cosmos DB