Udostępnij za pośrednictwem


Znajdowanie opłaty za jednostkę żądania dla operacji w usłudze Azure Cosmos DB for NoSQL

DOTYCZY: NoSQL

Usługa Azure Cosmos DB obsługuje wiele interfejsów API, takich jak SQL, MongoDB, Cassandra, Gremlin i Table. Każdy interfejs API ma własny zestaw operacji bazy danych. Te operacje obejmują od prostych odczytów i zapisów do złożonych zapytań. Każda operacja bazy danych zużywa zasoby systemowe na podstawie złożoności operacji.

Koszt wszystkich operacji bazy danych jest znormalizowany przez usługę Azure Cosmos DB i jest wyrażany przez jednostki żądań (RU). Opłata za żądanie to jednostki żądania używane przez wszystkie operacje bazy danych. Jednostki RU można traktować jako walutę wydajności abstrakcyjną zasobów systemowych, takich jak procesor CPU, liczba operacji we/wy na sekundę i pamięć, które są wymagane do wykonywania operacji bazy danych obsługiwanych przez usługę Azure Cosmos DB. Niezależnie od tego, którego interfejsu API używasz do interakcji z kontenerem, koszty są zawsze mierzone w jednostkach RU. Niezależnie od tego, czy operacja bazy danych jest zapisem, odczytem punktu czy zapytaniem, koszty są zawsze mierzone w jednostkach RU. Aby dowiedzieć się więcej, zobacz Request Units in Azure Cosmos DB (Jednostki żądań w usłudze Azure Cosmos DB).

W tym artykule przedstawiono różne sposoby znajdowania użycia jednostek żądania dla dowolnej operacji uruchamianej względem kontenera w usłudze Azure Cosmos DB for NoSQL. Jeśli używasz innego interfejsu API, zobacz INTERFEJS API dla bazy danych MongoDB, interfejs API dla bazy danych Cassandra, interfejs API dla języka Gremlin i interfejs API dla tabeli.

Obecnie można mierzyć zużycie tylko przy użyciu witryny Azure Portal lub sprawdzając odpowiedź wysłaną z usługi Azure Cosmos DB za pomocą jednego z zestawów SDK. Jeśli używasz interfejsu API dla noSQL, masz wiele opcji znajdowania opłaty za żądanie dla operacji.

Korzystanie z witryny Azure Portal

  1. Zaloguj się w witrynie Azure Portal.

  2. Utwórz nowe konto usługi Azure Cosmos DB i przekaż je za pomocą danych lub wybierz istniejące konto usługi Azure Cosmos DB, które zawiera już dane.

  3. Przejdź do okienka Eksplorator danych, a następnie wybierz kontener, nad którym chcesz pracować.

  4. Wybierz pozycję Nowe zapytanie SQL.

  5. Wprowadź prawidłowe zapytanie, a następnie wybierz pozycję Wykonaj zapytanie.

  6. Wybierz pozycję Statystyki zapytania, aby wyświetlić rzeczywiste opłaty za żądanie wykonane.

    Zrzut ekranu przedstawiający opłatę za żądanie zapytania SQL w witrynie Azure Portal.

Korzystanie z zestawu SDK dla platformy .NET

Obiekty zwracane z zestawu .NET SDK w wersji 2 uwidaczniają RequestCharge właściwość:

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

Korzystanie z zestawu Java SDK

Obiekty zwracane z zestawu JAVA SDK uwidaczniają metodę 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();
});

Aby uzyskać więcej informacji, zobacz Szybki start: tworzenie aplikacji Java przy użyciu konta usługi Azure Cosmos DB for NoSQL.

Korzystanie z zestawu SDK Node.js

Obiekty zwracane z zestawu SDK Node.js uwidaczniają headers podobiekt, który mapuje wszystkie nagłówki zwracane przez bazowy interfejs API HTTP. Opłata za żądanie jest dostępna w x-ms-request-charge ramach klucza:

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

Aby uzyskać więcej informacji, zobacz Szybki start: tworzenie aplikacji Node.js przy użyciu konta usługi Azure Cosmos DB for NoSQL.

Używanie zestawu Python SDK

Container Obiekt z zestawu SDK języka Python uwidacznia słownik, który mapuje last_response_headers wszystkie nagłówki zwrócone przez podstawowy interfejs API HTTP dla ostatniej operacji wykonanej. Opłata za żądanie jest dostępna w x-ms-request-charge ramach klucza:

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

Aby uzyskać więcej informacji, zobacz Szybki start: tworzenie aplikacji w języku Python przy użyciu konta usługi Azure Cosmos DB for NoSQL.

Następne kroki

Aby dowiedzieć się więcej na temat optymalizacji użycia jednostek RU, zobacz następujące artykuły: