다음을 통해 공유


Azure Cosmos DB for NoSQL에서 작업에 대한 요청 단위 요금 찾기

적용 대상: NoSQL

Azure Cosmos DB는 SQL, MongoDB, Cassandra, Gremlin, Table 등의 많은 API를 지원합니다. 각 API에는 고유한 데이터베이스 작업 세트가 있습니다. 이러한 작업은 간단한 지점 읽기 및 쓰기에서 복잡한 쿼리에 이르기까지 다양합니다. 각 데이터베이스 작업은 작업의 복잡도에 따라 시스템 리소스를 사용합니다.

모든 데이터베이스 작업 비용은 Azure Cosmos DB에서 정규화되고 RU(요청 단위)를 기준으로 표시됩니다. 요청 요금은 모든 데이터베이스 작업에서 사용되는 요청 단위입니다. RU는 Azure Cosmos DB에서 지원하는 데이터베이스 작업을 수행하는 데 필요한 CPU, IOPS, 메모리와 같은 시스템 리소스를 추상화하는 성능 통화로 생각할 수 있습니다. 컨테이너와 상호 작용하는 데 사용하는 API에 상관없이 비용은 항상 RU로 측정됩니다. 데이터베이스 작업이 쓰기, 지점 읽기 또는 쿼리든 간에 비용은 항상 RU로 측정됩니다. 자세한 내용은 Azure Cosmos DB의 요청 단위를 참조하세요.

이 문서에서는 Azure Cosmos DB for NoSQL의 컨테이너에 대해 실행한 작업의 요청 단위 사용량을 찾을 수 있는 다양한 방법을 제공합니다. 다른 API를 사용하는 경우 API for MongoDB, API for Cassandra, API for GremlinAPI for Table을 참조하세요.

현재는 Azure Portal을 사용하거나 SDK 중 하나를 통해 Azure Cosmos DB에 보낸 응답을 검사해야만 사용량을 측정할 수 있습니다. API for NoSQL을 사용하는 경우 작업에 대한 요청 요금을 찾기 위한 여러 옵션이 있습니다.

Azure Portal 사용

  1. Azure Portal에 로그인합니다.

  2. 새 Azure Cosmos DB 계정을 만들고 데이터를 입력하거나, 이미 데이터가 들어 있는 기존 Azure Cosmos DB 계정을 선택합니다.

  3. Data Explorer 창으로 이동한 다음, 작업할 컨테이너를 선택합니다.

  4. 새 SQL 쿼리를 선택합니다.

  5. 유효한 쿼리를 입력한 다음, 쿼리 실행을 선택합니다.

  6. 쿼리 통계를 선택하여 방금 실행한 요청의 실제 요청 요금을 표시합니다.

    Azure Portal의 SQL 쿼리 요청 요금 스크린샷

.NET SDK 사용

.NET SDK v2에서 반환되는 개체는 다음과 같이 RequestCharge 속성을 표시합니다.

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 사용

Java SDK에서 반환되는 개체는 다음과 같이 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();
});

자세한 내용은 빠른 시작: Azure Cosmos DB for NoSQL 계정을 사용하여 Java 애플리케이션 빌드를 참조하세요.

Node.js SDK 사용

Node.js SDK에서 반환되는 개체는 기본 HTTP API가 반환한 모든 헤더를 매핑하는 headers 하위 개체를 표시합니다. 요청 요금은 다음과 같이 x-ms-request-charge 키 아래에서 확인할 수 있습니다.

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

자세한 내용은 빠른 시작: Azure Cosmos DB for NoSQL 계정을 사용하여 Node.js 앱 빌드를 참조하세요.

Python SDK 사용

Python SDKContainer 개체는 마지막으로 실행된 작업의 기본 HTTP API에서 반환된 모든 헤더를 매핑하는 last_response_headers 사전을 표시합니다. 요청 요금은 다음과 같이 x-ms-request-charge 키 아래에서 확인할 수 있습니다.

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

자세한 내용은 빠른 시작: Azure Cosmos DB for NoSQL 계정을 사용하여 Python 앱 빌드를 참조하세요.

다음 단계

RU 사용량을 최적화하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.