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. Whether the database operation is a write, point read, or query, costs are always measured in RUs. 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

  1. Jelentkezzen be az Azure Portalra.

  2. 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.

  3. Nyissa meg az Adatkezelő panelt, és válassza ki azt a tárolót, amelyen dolgozni szeretne.

  4. Válassza az Új SQL-lekérdezés lehetőséget.

  5. Adjon meg egy érvényes lekérdezést, majd válassza a Lekérdezés végrehajtása lehetőséget.

  6. 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.

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

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 headers alobjektumot 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 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": "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"]

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: