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의 요청 단위를 참조하세요.
이 문서에서는 NoSQL용 Azure Cosmos DB의 컨테이너에 대해 실행되는 모든 작업에 대한 요청 단위 사용을 찾을 수 있는 다양한 방법을 제공합니다. 다른 API를 사용하는 경우 MongoDB용 API, Cassandra용 API, Gremlin용 API 및 테이블용 API를 참조하세요.
현재는 Azure Portal을 사용하거나 SDK 중 하나를 통해 Azure Cosmos DB에서 보낸 응답을 검사하여 사용량을 측정할 수 있습니다. NoSQL용 API를 사용하는 경우 작업에 대한 요청 요금을 찾기 위한 여러 옵션이 있습니다.
Azure Portal 사용
Azure Portal에 로그인합니다.
새 Azure Cosmos DB 계정을 만들고 데이터를 공급하거나 이미 데이터가 포함된 기존 Azure Cosmos DB 계정을 선택합니다.
데이터 탐색기 창으로 이동한 다음 작업할 컨테이너를 선택합니다.
새 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();
});
자세한 내용은 빠른 시작: NoSQL용 Azure Cosmos DB 계정을 사용하여 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'];
}
자세한 내용은 빠른 시작: NoSQL용 Azure Cosmos DB 계정을 사용하여 Node.js 앱 빌드를 참조하세요.
Python SDK 사용
Python SDK의 x-ms-request-charge 키 아래에서 확인할 수 있습니다.
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"]
자세한 내용은 빠른 시작: NoSQL용 Azure Cosmos DB 계정을 사용하여 Python 앱 빌드를 참조하세요.
Go SDK 사용
응답 은 Azure Cosmos DB의 모든 응답에 대한 기본 응답 유형입니다. 각 작업인 읽기, 쓰기 및 쿼리에 대한 요청 요금을 포함하는 속성RequestCharge을 가지고 있습니다.
읽기 작업:
container, _ := c.NewContainer("moviesdb", "movies")
resp, _ := container.ReadItem(context.Background(), azcosmos.NewPartitionKeyString("Quentin Tarantino"), "Pulp Fiction", nil)
log.Println("read request charge", resp.RequestCharge)
쿼리 작업:
container, _ := c.NewContainer("moviesdb", "movies")
pager := container.NewQueryItemsPager("select * from c", azcosmos.NewPartitionKey(), nil)
if pager.More() {
page, _ := pager.NextPage(context.Background())
// use the result
log.Println("query request charge", page.RequestCharge)
}
다음 단계
RU 사용량을 최적화하는 방법에 대한 더 자세한 내용은 다음 문서를 참조하시기 바랍니다.