Azure Cosmos DB의 데이터베이스, 컨테이너 및 항목

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

Azure Cosmos DB는 PaaS(완전 관리형 PaaS) 플랫폼입니다. Azure Cosmos DB를 사용하려면 구독의 Azure 리소스 그룹에 Azure Cosmos DB 계정을 만듭니다. 그런 다음, 계정 내에서 데이터베이스 및 컨테이너를 만듭니다.

Azure Cosmos DB 계정에는 DNS(Do기본 Name System) 이름이 있습니다. 다음을 비롯한 여러 도구를 사용하여 DNS 이름을 관리할 수 있습니다.

  • Azure Portal
  • Azure Resource Manager 템플릿
  • Bicep 템플릿
  • Azure PowerShell
  • Azure CLI
  • Azure 관리 SDK
  • Azure REST API

여러 Azure 지역에 걸쳐 데이터 및 처리량을 복제하기 위해 언제든지 계정에 Azure 지역을 추가 및 제거할 수 있습니다. 단일 지역 또는 여러 쓰기 지역을 갖도록 계정을 구성할 수 있습니다. 자세한 내용은 Azure Portal을 사용하여 Azure Cosmos DB 계정 관리를 참조하세요. 계정에서 기본 일관성 수준을 구성할 수도 있습니다.

Azure Cosmos DB 계정의 요소

Azure 구독을 사용하면 현재 Azure Cosmos DB 계정을 최대 50개까지 만들 수 있습니다. 지원 요청을 수행하여 이 제한을 늘릴 수 있습니다.

단일 Azure Cosmos DB 계정을 사용하여 거의 무제한의 데이터 및 프로비전된 처리량을 관리할 수 있습니다. 데이터 및 프로비전된 처리량을 관리하려면 계정 내에 하나 이상의 데이터베이스를 만든 다음 데이터를 저장할 컨테이너를 하나 이상 만듭니다.

다음 이미지는 Azure Cosmos DB 계정의 요소 계층 구조를 보여 줍니다.

Diagram of the hierarchy of an Azure Cosmos DB account, including an account, database, and container.

다음 이미지는 Azure Cosmos DB 계정의 엔터티 계층 구조를 보여 줍니다.

Diagram of the relationship between a container and items, including sibling entities such as stored procedures, user-defined functions, and triggers.

Azure Cosmos DB 데이터베이스

Azure Cosmos DB에서 데이터베이스는 네임스페이스와 유사합니다. 데이터베이스는 단순히 컨테이너 그룹입니다. 다음 테이블에서는 데이터베이스가 다양한 API 관련 엔터티에 매핑되는 방법을 보여줍니다.

Azure Cosmos DB 엔터티 NoSQL용 API Apache Cassandra용 API MongoDB용 API Apache Gremlin용 API Table용 API
Azure Cosmos DB 데이터베이스 데이터베이스 Keyspace 데이터베이스 데이터베이스 해당 없음

참고 항목

Table 계정에 대한 API를 사용하면 Azure Table Storage와의 호환성을 기본 위해 Azure Cosmos DB의 테이블이 계정 수준에서 만들어집니다.

Azure Cosmos DB 컨테이너

Azure Cosmos DB 컨테이너는 데이터가 저장되는 위치입니다. 더 큰 크기의 가상 머신으로 확장되는 대부분의 관계형 데이터베이스와 달리 Azure Cosmos DB는 확장됩니다.

데이터는 파티션이라는 하나 이상의 서버에 저장됩니다. 파티션을 늘리려면 처리량을 늘리거나 스토리지가 증가함에 따라 자동으로 증가합니다. 이 관계는 컨테이너에 대해 거의 무제한의 처리량과 스토리지를 제공합니다.

컨테이너를 만들 때 파티션 키를 제공해야 합니다. 파티션 키는 Azure Cosmos DB가 데이터를 파티션 간에 효율적으로 분산하는 데 도움이 되도록 항목에서 선택하는 속성입니다. Azure Cosmos DB는 이 속성의 값을 사용하여 데이터를 작성, 업데이트 또는 삭제할 적절한 파티션으로 라우팅합니다. 효율적인 데이터 검색을 위해 쿼리에서 절의 WHERE 파티션 키를 사용할 수도 있습니다.

Azure Cosmos DB의 데이터에 대한 기본 스토리지 메커니즘을 실제 파티션이라고 합니다. 실제 파티션은 초당 최대 10,000개의 요청 단위 처리량을 가질 수 있으며 최대 50GB의 데이터를 저장할 수 있습니다. Azure Cosmos DB는 최대 20GB의 데이터를 저장할 수 있는 논리 파티션으로 이러한 분할 개념을 추상화합니다.

논리 파티션을 사용하면 더 많은 파티션을 추가할 때 기본 실제 파티션에서 더 큰 탄력성과 더 나은 데이터 관리를 제공할 수 있습니다. 분할 및 파티션 키에 대한 자세한 내용은 Azure Cosmos DB에서 분할 및 수평 크기 조정을 참조하세요.

컨테이너를 만들 때 다음 모드 중 하나로 처리량을 구성합니다.

참고 항목

전용 처리량과 공유 처리량 간에 전환할 수 없습니다. 공유 처리량 데이터베이스에서 만든 컨테이너는 전용 처리량을 갖도록 업데이트할 수 없습니다. 컨테이너를 공유에서 전용 처리량으로 변경하려면 새 컨테이너를 만들고 데이터를 복사해야 합니다. Azure Cosmos DB의 컨테이너 복사 기능을 사용하면 이 프로세스를 더 쉽게 수행할 수 있습니다.

컨테이너는 스키마에 구애받지 않습니다. 컨테이너 내의 항목은 동일한 파티션 키를 공유하는 한 임의 스키마 또는 다른 엔터티를 가질 수 있습니다. 예를 들어 컨테이너는 고객의 모든 판매 주문을 나타내는 하나 이상의 항목 또는 문서와 함께 고객 프로필 정보가 있는 항목 또는 문서를 포함할 수 있습니다. 모든 고객에 대해 동일한 컨테이너유사한 정보를 넣을 수 있습니다.

기본적으로 컨테이너에 추가하는 모든 데이터는 명시적 인덱싱 없이 자동으로 인덱싱됩니다. 인덱싱 정책을 구성하여 컨테이너에 대한 인덱싱을 사용자 지정할 수 있습니다.

성능에 영향을 주지 않도록 하려면 컨테이너 또는 전체 컨테이너에서 선택한 항목에 TTL(Time to Live)을 설정하여 사용하지 않는 처리량을 사용하여 백그라운드에서 해당 항목을 자동으로 삭제할 수 있습니다. 그러나 만료된 데이터가 삭제되지 않더라도 읽기 작업에는 표시되지 않습니다. 자세한 내용은 Azure Cosmos DB에서 TL(Time to Live) 구성을 참조 하세요.

Azure Cosmos DB는 변경 피드라는 변경 데이터 캡처를 위한 기본 제공 기능을 제공합니다. 이를 사용하여 컨테이너 내의 데이터에 대한 모든 변경 내용을 구독할 수 있습니다.

저장 프로시저, 트리거, UDF(사용자 정의 함수), 그리고 컨테이너에 대한 병합 프로시저를 등록할 수 있습니다.

컨테이너 내의 각 문서에는 id 해당 컨테이너에 대한 논리 키의 속성 값 내에서 고유한 속성이 있어야 합니다. 이 속성 조합을 사용하여 명시적으로 정의하지 않고도 컨테이너 내에서 고유한 제약 조건을 제공할 수 있습니다.

하나 이상의 속성을 사용하는 Azure Cosmos DB 컨테이너에 고유한 키 제약 조건을 지정할 수도 있습니다. 고유 키 제약 조건은 논리 파티션 키당 하나 이상의 값의 고유성을 보장합니다. 고유 키 정책을 사용하여 컨테이너를 만드는 경우 고유 키 제약 조건이 지정하는 값을 복제하는 값을 사용하여 새 항목이나 업데이트된 항목을 만들 수 없습니다.

컨테이너는 다음 표와 같이 API 관련 엔터티로 특수화됩니다.

Azure Cosmos DB 엔터티 NoSQL용 API API for Cassandra MongoDB용 API API for Gremlin Table용 API
Azure Cosmos DB 컨테이너 컨테이너 테이블 컬렉션 그래프 테이블

참고 항목

이름이 같지만 대/소문자 구분이 다른 두 개의 컨테이너를 만들지 않도록 합니다. Azure 플랫폼의 일부 부분은 대/소문자를 구분하지 않으며 이러한 종류의 명명으로 인해 컨테이너에서 진단 데이터와 작업이 혼동되거나 충돌할 수 있습니다.

Azure Cosmos DB 컨테이너의 속성

Azure Cosmos DB 컨테이너에는 시스템 정의 속성 세트가 있습니다. 사용하는 API에 따라 일부 속성은 직접 노출되지 않을 수도 있습니다. 다음 표에서는 시스템 정의 속성에 대해 설명합니다.

시스템 정의 속성 시스템 생성 또는 사용자 구성 가능 목적 NoSQL용 API API for Cassandra MongoDB용 API API for Gremlin API for Table
_rid 시스템 생성 컨테이너의 고유 식별자입니다. 없음 없음 없음 아니요
_etag 시스템 생성 낙관적 동시성 제어에 사용되는 엔터티 태그입니다. 없음 없음 없음 아니요
_ts 시스템 생성 컨테이너의 마지막 업데이트 타임스탬프를 업데이트했습니다. 없음 없음 없음 아니요
_self 시스템 생성 컨테이너의 주소 지정 가능한 URI입니다. 없음 없음 없음 아니요
id 사용자 구성 가능 컨테이너의 이름입니다.
indexingPolicy 사용자 구성 가능 컨테이너에 대한 인덱스 빌드 정책입니다. 없음
TimeToLive 사용자 구성 가능 설정된 기간 후에 컨테이너에서 항목을 자동으로 삭제합니다. 자세한 내용은 TL(Time to Live)을 참조하세요. 없음 없음 없음
changeFeedPolicy 사용자 구성 가능 컨테이너의 항목에 대한 변경 내용을 읽기 위한 정책입니다. 세부 정보는 변경 피드를 참조하세요. 없음 없음 없음
uniqueKeyPolicy 사용자 구성 가능 논리 파티션에서 하나 이상의 값의 고유성을 보장하기 위한 정책입니다. 자세한 정보는 고유 키 제약 조건을 참조하세요. 없음 없음 없음
AnalyticalTimeToLive 사용자 구성 가능 분석 저장소의 컨텍스트에서 설정된 기간 후에 컨테이너에서 항목을 자동으로 삭제합니다. 자세한 내용은 분석 저장소를 참조하세요. 없음 없음 아니요

Azure Cosmos DB 항목

사용하는 API에 따라 개별 데이터 엔터티를 다양한 방식으로 나타낼 수 있습니다.

Azure Cosmos DB 엔터티 NoSQL용 API API for Cassandra MongoDB용 API API for Gremlin Table용 API
Azure Cosmos DB 항목 Item Row 문서 노드 또는 에지 Item

항목의 속성

모든 Azure Cosmos DB 항목에는 다음과 같은 시스템 정의 속성이 있습니다. 사용하는 API에 따라 일부는 직접 노출되지 않을 수 있습니다.

시스템 정의 속성 시스템 생성 또는 사용자 정의 목적 NoSQL용 API API for Cassandra DB API for MongoDB API for Gremlin API for Table
_rid 시스템 생성 항목의 고유 식별자 없음 없음 없음 아니요
_etag 시스템 생성 낙관적 동시성 제어에 사용되는 엔터티 태그 없음 없음 없음 아니요
_ts 시스템 생성 항목의 마지막 업데이트 타임스탬프를 표시합니다. 없음 없음 없음 아니요
_self 시스템 생성 항목의 주소 지정 가능 URI 없음 없음 없음 아니요
id 여기서는 논리 파티션의 사용자 정의 고유 이름
임의의 사용자 정의 속성 사용자 정의 API 네이티브 표현의 사용자 정의 속성(JSON, BSON 및 CQL 포함)

참고 항목

id 속성의 고유성은 각 논리 파티션 내에서 적용됩니다. 여러 문서에는 파티션 키 값이 다른 동일한 id 속성 값이 있을 수 있습니다.

항목에 대한 작업

Azure Cosmos DB 항목은 다음 작업을 지원합니다. Azure Cosmos DB API를 사용하여 작업을 수행할 수 있습니다.

연산 NoSQL용 API API for Cassandra MongoDB용 API API for Gremlin Table용 API
삽입, 바꾸기, 삭제, upsert, 읽기

다음 단계

Azure Cosmos DB 계정 및 기타 개념을 관리하는 방법에 대해 알아봅니다.