A noSQL-hez készült Azure Cosmos DB műveleteinek kérelemegység-díjának megkeresése
A KÖVETKEZŐRE VONATKOZIK: NoSQL
Az Azure Cosmos DB számos API-t támogat, például sql, MongoDB, Cassandra, Gremlin és Table. Minden API saját adatbázisműveletekkel rendelkezik. Ezek a műveletek az egyszerű pontolvasástól és írástól az összetett lekérdezésekig terjednek. Minden adatbázis-művelet a művelet összetettsége alapján használja fel a rendszererőforrásokat.
Az adatbázis-műveletek költségeit az Azure Cosmos DB normalizálja, és kérelemegységekkel (RU) fejezi ki. A kérelemdíj az összes adatbázis-művelet által felhasznált kérelemegység. A kérelemegységek olyan teljesítmény-pénznemként tekinthetők, amely absztrakciót végez az Azure Cosmos DB által támogatott adatbázis-műveletek végrehajtásához szükséges rendszererőforrásokon, például a CPU-on, az IOPS-on és a memórián. Függetlenül attól, hogy melyik API-t használja a tárolóval való interakcióhoz, a költségek mindig kérelemegységekben vannak mérve. A költségek számítása mindig RU-ban történik, függetlenül attól, hogy az adatbázis-művelet írás, pontolvasás vagy lekérdezés-e. További információ: Kérelemegységek az Azure Cosmos DB-ben.
Ez a cikk az Azure Cosmos DB for NoSQL-ben futó tárolókon futtatott műveletek kérelemegység-felhasználását különböző módokon mutatja be. Ha másik API-t használ, tekintse meg a MongoDB API-t, a Cassandra API-t, a Gremlin API-t és a Table API-t.
Jelenleg csak az Azure Portal használatával vagy az Azure Cosmos DB-től az egyik SDK-on keresztül küldött válasz vizsgálatával mérheti a fogyasztást. Ha a NoSQL-hez készült API-t használja, több lehetősége is van egy művelet kérési díjának megkeresésére.
Az Azure Portal használata
Jelentkezzen be az Azure Portalra.
Hozzon létre egy új Azure Cosmos DB-fiókot , és adja meg az adatokat, vagy válasszon ki egy meglévő Azure Cosmos DB-fiókot, amely már tartalmaz adatokat.
Nyissa meg az Adatkezelő panelt, és válassza ki azt a tárolót, amelyen dolgozni szeretne.
Válassza az Új SQL-lekérdezés lehetőséget.
Adjon meg egy érvényes lekérdezést, majd válassza a Lekérdezés végrehajtása lehetőséget.
Válassza a Lekérdezési statisztikák lehetőséget a végrehajtott kérelem tényleges díjának megjelenítéséhez.
A .NET SDK használata
A .NET SDK v2-ből visszaadott objektumok egy tulajdonságot RequestCharge
fednek fel:
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;
}
A Java SDK használata
A Java SDK-ból visszaadott objektumok a következő metódust getRequestCharge()
teszik elérhetővé:
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();
});
További információ : Rövid útmutató: Java-alkalmazás létrehozása Egy Azure Cosmos DB for NoSQL-fiók használatával.
A Node.js SDK használata
A Node.js SDK-ból visszaadott objektumok egy alobjektumot headers
fednek fel, amely leképezi az alapul szolgáló HTTP API által visszaadott összes fejlécet. A kérelem díja a x-ms-request-charge
kulcs alatt érhető el:
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'];
}
További információ : Rövid útmutató: Node.js-alkalmazás létrehozása Egy Azure Cosmos DB for NoSQL-fiók használatával.
A Python SDK használata
A Container
Python SDK objektuma egy last_response_headers
szótárt tesz elérhetővé, amely leképezi az alapul szolgáló HTTP API által az utolsó végrehajtott művelethez visszaadott összes fejlécet. A kérelem díja a x-ms-request-charge
kulcs alatt érhető el:
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"]
További információ : Rövid útmutató: Python-alkalmazás létrehozása Azure Cosmos DB for NoSQL-fiók használatával.
Következő lépések
A kérelemegység-felhasználás optimalizálásáról az alábbi cikkekben olvashat:
- Az Azure Cosmos DB kérelemegységei
- A kiosztott átviteli sebesség költségeinek optimalizálása az Azure Cosmos DB-ben
- A lekérdezési költségek optimalizálása az Azure Cosmos DB-ben
- Kiosztott átviteli sebesség globális méretezése
- Bevezetés a kiépített átviteli sebességbe az Azure Cosmos DB-ben
- Tároló átviteli sebességének kiépítése
- Monitorozás és hibakeresés a megállapításokkal az Azure Cosmos DB-ben