Azure Cosmos DB의 요청 단위

적용 대상: NoSQL MongoDB Cassandra Gremlin 테이블

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

Azure Cosmos DB는 요청 단위(또는 줄여서 RU)를 사용하여 모든 데이터베이스 작업의 비용을 정규화하고 처리량(초당 요청 단위, RU/s)을 기준으로 비용을 측정합니다.

요청 단위는 Azure Cosmos DB에서 지원하는 데이터베이스 작업을 수행하는 데 필요한 CPU, IOPS, 메모리와 같은 시스템 리소스를 추상화하는 성능 통화입니다. 데이터베이스 작업이 쓰기, 지점 읽기 또는 쿼리인지 여부에 관계없이 작업은 항상 RU로 측정됩니다. 예를 들어, 1KB 항목에 대한 포인트 읽기(ID 및 파티션 키 값으로 단일 항목 가져오기)는 Azure Cosmos DB 컨테이너와 상호 작용하는 데 사용하는 API에 관계없이 요청 단위 1개(또는 RU 1개)입니다. Azure Cosmos DB 용량 계산기를 사용하여 처리량 비용을 모델링할 수 있습니다.

다음 이미지는 RU의 개략적인 개념을 보여 줍니다.

Database operations consume Request Units

용량을 관리하고 계획하려면 Azure Cosmos DB에서는 지정된 데이터 세트를 통해 지정된 데이터베이스 작업에 대한 RU 수가 결정적이 되도록 확인합니다. 응답 헤더를 검사하여 모든 데이터베이스 작업에서 사용하는 RU 수를 추적할 수 있습니다. 애플리케이션의 처리량 요구 사항 및 RU 요금에 영향을 주는 요소를 파악하면 애플리케이션을 비용 효과적으로 실행할 수 있습니다.

사용 중인 Azure Cosmos DB 계정 형식에 따라 사용된 RU가 청구되는 방식이 결정됩니다. 계정을 만들 수 있는 세 가지 모드는 다음과 같습니다.

  1. 프로비전된 처리량 모드: 이 모드에서는 초당 100 RU 증분으로 초당 기준으로 애플리케이션에 대한 RU 수를 할당합니다. 애플리케이션에 대해 프로비전되는 처리량 크기를 조정하기 위해 100 RU의 증분 또는 감량으로 언제든지 RU 수를 늘리거나 줄일 수 있습니다. 프로그래밍 방식으로 또는 Azure Portal을 사용하여 변경할 수 있습니다. 프로비전한 초당 RU 수에 대해 시간 기준으로 요금이 청구됩니다. 자세한 내용은 프로비전된 처리량 문서를 참조하세요.

    두 가지 고유 단위로 처리량을 할당할 수 있습니다.

  2. 서버리스 모드: 이 모드에서는 Azure Cosmos DB 계정에 리소스를 만들 때 처리량을 할당할 필요가 없습니다. 청구 기간이 종료되면 데이터베이스 작업에 사용된 요청 단위 수에 대한 요금이 청구됩니다. 자세한 내용은 서버리스 처리량 문서를 참조하세요.

  3. 자동 스케일링 모드: 이 모드에서는 사용량에 따라 데이터베이스 또는 컨테이너의 처리량(RU/s)을 자동으로 즉시 스케일링할 수 있습니다. 이 크기 조정 작업은 워크로드의 가용성, 대기 시간, 처리량 또는 성능에 영향을 주지 않습니다. 이 모드는 변수 또는 예측할 수 없는 트래픽 패턴이 있는 중요 업무용 워크로드에 적합하며 고성능과 규모에 대한 SLA가 필요합니다. 자세한 내용은 자동 크기 조정 처리량 문서를 참조하세요.

요청 단위에 대한 고려 사항

워크로드에서 사용하는 RU 수를 예상하는 동안 다음 요인을 고려합니다.

  • 항목 크기: 항목 크기가 늘어나면 항목을 읽거나 쓰는 데 사용되는 RU 수도 증가합니다.

  • 항목 인덱싱: 기본적으로 각 항목은 자동으로 인덱싱됩니다. 컨테이너에서 일부 항목을 인덱싱하지 않도록 선택하면 사용되는 RU 수가 감소합니다.

  • 항목 속성 개수: 모든 속성에 대해 기본 인덱싱을 가정하면 항목 속성 개수가 증가함에 따라 항목을 작성하는 데 사용된 RU 수도 증가합니다.

  • 인덱싱되는 속성 수: 각 컨테이너의 인덱스 정책에 따라 기본적으로 인덱싱되는 속성이 결정됩니다. 쓰기 작업에 필요한 RU 사용량을 줄이려면 인덱싱된 속성 수를 제한합니다.

  • 데이터 일관성: 강력하고 제한된 부실 일관성 수준은 다른 완화된 일관성 수준과 비교할 경우 읽기 작업을 수행하면서 동시에 약 두 배 이상의 RU를 사용합니다.

  • 읽기 유형: 지점 읽기는 쿼리보다 RU의 비용을 줄일 수 있습니다.

  • 쿼리 패턴: 쿼리의 복잡성은 작업에 사용되는 RU 수에 영향을 줍니다. 쿼리 작업 비용에 영향을 주는 요소는 다음과 같습니다.

    • 쿼리 결과 수
    • 조건자 수
    • 조건자 특성
    • 사용자 정의 함수의 수
    • 원본 데이터 크기
    • 결과 집합 크기
    • 프로젝션

    동일한 데이터의 동일한 쿼리는 반복 실행에서 항상 동일한 RU 수를 사용합니다.

  • 스크립트 사용량: 쿼리와 마찬가지로, 저장 프로시저 및 트리거는 수행하는 작업의 복잡성에 따라 RU를 사용합니다. 애플리케이션을 개발하는 과정에서 각 작업에 사용되는 RU 용량을 더 잘 파악할 수 있도록 요청 요금 헤더를 살펴보세요.

요청 단위 및 여러 영역

Azure Cosmos DB 컨테이너(또는 데이터베이스)에서 'R' RU를 할당하는 경우 Azure Cosmos DB는 Azure Cosmos DB 계정과 연결된 지역에서 'R' RU를 사용할 수 있도록 합니다. 특정 영역에 RU를 선택적으로 할당할 수 없습니다. Azure Cosmos DB 컨테이너(또는 데이터베이스)에 프로비전된 RU는 Azure Cosmos DB 계정과 연결된 모든 지역에서 프로비전됩니다.

Azure Cosmos DB 컨테이너가 'R' RU로 구성되고 Azure Cosmos DB 계정과 연결된 'N' 지역이 있다고 가정하면 컨테이너에서 전역적으로 사용 가능한 총 RU = R x N.

일관성 모델의 선택도 처리량에 영향을 줍니다. 더 강력한 일관성 수준(제한된 부실 또는 강력한 일관성)과 비교하여 보다 완화된 일관성 수준(세션, 일관적인 접두사궁극적 일관성)의 경우 약 2배의 읽기 처리량을 얻을 수 있습니다.

다음 단계