Azure Cosmos DB 설명

완료됨

개발 팀은 비관계형 데이터 저장소로 작업한 경험이 있습니다. 이러한 경험을 사용하여 스마트 어플라이언스에서 생성된 IoT 원격 분석 데이터의 처리 및 스토리지를 포함하도록 클라우드 네이티브 솔루션의 기능을 확장하려고 합니다. Azure 관리형 NoSQL 제품을 살펴본 후 Azure Cosmos DB를 사용하기로 결정했습니다. 다음 정보는 원격 분석 데이터에 대한 영구 데이터 저장소로서의 적합성을 확인하는 데 도움이 됩니다.

Cosmos DB란?

Azure Cosmos DB는 완전 관리형 클라우드 네이티브 NoSQL 데이터베이스입니다. Azure 기본 서비스 중 하나이므로 모든 Azure 지역에서 사용할 수 있습니다.

관리되는 서비스인 Azure Cosmos DB를 사용하면 기본 데이터베이스 엔진에 대한 업데이트 또는 패치 적용과 같은 대부분의 기존 데이터베이스 관리 작업이 필요하지 않습니다. 자동 및 즉각적인 확장성을 제공하며 SLA(서비스 수준 약정) 지원으로 성능 및 응답성이 보장됩니다. 또한 관계형 데이터베이스와 구별되는 일련의 복원 기능을 제공합니다. 이러한 기능에는 다중 지역 쓰기가 포함된 전역으로 분산된 복제본과 5가지(강함~최종) 일관성 모델을 구현하는 기능이 포함됩니다.

Azure Cosmos DB의 또 다른 고유한 특징은 여러 데이터베이스 API에 대한 지원입니다. Azure Cosmos DB를 프로비전할 때 네이티브 Core(NoSQL) API, API for MongoDB, Cassandra API, Gremlin API 및 Table API 중에서 기본 개발 플랫폼을 선택할 수 있습니다. Azure Cosmos DB for NoSQL API를 사용하면 .NET SDK, Java SDK, Node.js 또는 Python과 같은 기본 개발 플랫폼을 유연하게 선택할 수 있습니다.

관계형 데이터베이스에 비해 Cosmos DB의 장점은 무엇인가요?

관계형 데이터베이스 시스템의 일반적인 특징 중 하나는 잠금을 사용하여 트랜잭션 동작을 보장하는 것입니다. 이것이 보장되면 각 데이터베이스 내에서 강력한 데이터 일관성을 보장할 수 있습니다. 이러한 일관성은 많은 시나리오에서 필요하지만 동시성, 대기 시간, 가용성에는 부정적인 영향을 줍니다. 이러한 부정적인 영향은 데이터베이스를 여러 분할된 데이터베이스로 쪼개서 완화할 수 있지만 이런 방식은 구현하고 유지 관리하기가 복잡합니다.

Azure Cosmos DB는 구성 가능한 충돌 해결 메커니즘을 통해 다양한 일관성 모델, 기본 제공 복제 및 다중 지역 쓰기에 대한 지원을 조합하여 이러한 단점을 해결합니다. 이러한 지원은 강력한 일관성이 요구 사항이 아닌 시나리오에서 상당한 성능 및 복원력 이점을 제공합니다. 동시에 Cosmos DB는 그러한 일관성이 필요한 경우 서버 측 트랜잭션도 지원합니다.

Cosmos DB 리소스 모델이란?

Azure Cosmos DB를 구현하려면 먼저 Azure 구독에서 Azure Cosmos DB 계정을 만들어야 합니다. 계정은 배포 및 고가용성의 단위 역할을 합니다. 하나의 계정을 여러 지역에 복제하도록 구성하고 각각의 복제본에 쓰기가 가능하도록 만드는 옵션이 있습니다. 계정에 대한 기본 일관성 수준을 구성할 수도 있습니다.

SQL API, API for MongoDB 또는 Gremlin API를 사용하는 경우 하나 이상의 컨테이너를 호스트하는 하나 이상의 데이터베이스가 계정에 포함될 수 있습니다. 컨테이너는 확장성 단위이며, 콘텐츠를 처리하기 위한 컴퓨팅 및 스토리지 리소스를 지정할 수 있습니다. 이런 콘텐츠는 SQL API 또는 API for MongoDB가 있는 경우, JSON 형식 문서 형식을 취하며 특정 스키마 정의 제약 없이 항목이라고 합니다. 기본적으로 Azure Cosmos DB는 명시적 인덱스 또는 스키마 관리 없이 컨테이너의 모든 항목을 자동으로 인덱싱하지만 인덱싱 동작을 사용자 지정할 수 있는 옵션을 제공합니다.

데이터베이스 또는 개별 컬렉션 내에서 데이터를 처리하는 데 사용할 수 있는 리소스 수는 사용 가능한 RU(요청 단위) 수에 따라 달라집니다. RU 수는 사용자가 지정한 데이터베이스 또는 컨테이너 구성을 기반으로 합니다. Cosmos DB는 기본 설정에 따라 RU 할당을 결정하는 세 가지 모드를 제공합니다.

  • 프로비전된 처리량 모드. 이 모드에서는 예상되는 사용 패턴을 반영하기 위해 특정 수의 RU를 지정합니다. 이 방식은 결과 성능 및 비용에 대해 가장 명확한 정보를 제공합니다.
  • 자동 크기 조정 모드. 이 모드에서는 기준 요구 사항을 처리하기에 충분하다고 생각되는 RU 수를 미리 할당하지만 데이터 액세스에 대한 수요가 더 높아지면 자동 증가를 허용합니다. 이 모드는 사용 패턴이 변하기 쉽거나 예측할 수 없는 중요 업무용 워크로드에 가장 적합합니다.
  • 서버리스 모드. 이 모드에서는 RU를 미리 할당할 필요가 없습니다. 대신 Azure Cosmos DB의 자동 크기 조정 기능을 사용하여 처리 리소스의 양을 늘리거나 줄입니다. 이 모드는 워크로드가 데이터베이스 비활성 기간 후에 일시적인 대기 시간을 허용할 수 있으면 비용 측면에서 유리할 수 있습니다.

Azure IoT 시나리오에서 Cosmos DB의 이점 및 사용 사례는 무엇인가요?

Azure Cosmos DB는 IoT 시나리오에 적합한 다음과 같은 다양한 기능을 제공합니다.

  • 분할. Azure Cosmos DB는 지정한 논리 파티션 키를 사용하여 컨테이너를 자동으로 분할합니다. 분할은 Azure Cosmos DB의 확장성 및 복원력의 핵심 메커니즘입니다. 파티션 키를 선택하면 대량의 디바이스 및 원격 분석 데이터를 저장하고 처리해야 하는 IoT 시나리오를 지원할 수 있습니다.

    참고

    논리 파티션의 크기는 20GB를 초과할 수 없습니다.

  • TTL(Time to Live). TTL을 사용하면 Azure Cosmos DB는 지정한 기간이 지나면 항목을 자동으로 삭제할 수 있습니다. 이 자동화는 TTL 기반 삭제가 RU 사용량에 반영되지 않으므로 데이터 수명 주기 관리를 간소화하고 비용을 절감합니다.

  • 변경 피드. Azure Cosmos DB는 변경 피드를 사용하여 컬렉션 항목이 변경되면 자동으로 작업을 트리거합니다. 이 자동 트리거는 데이터 변경에 따라 해당 작업을 트리거하는 일반적인 IoT 디자인 패턴 구현을 간소화합니다.

  • 성능 및 복원성을 위한 SLA(서비스 수준 계약). 대량의 스트리밍 데이터가 수반되는 IoT 시나리오에서 고객은 읽기 및 쓰기의 99번째 백분위수에 대해 10ms 미만의 대기 시간 및 다중 지역 쓰기에 대해 99.999%의 가용성을 기대할 수 있습니다.

  • 스키마가 없는 데이터베이스. Azure Cosmos DB는 스키마 기반 제약 조건을 제거하여 동일한 컬렉션 내의 다양한 디바이스 모델에서 생성된 다양한 형식의 원격 분석 스토리지를 수용합니다.

  • 자동 인덱싱. Azure Cosmos DB 인덱싱 지원 덕분에 등록된 디바이스 및 해당 원격 분석 데이터의 인벤토리를 포함하는 대량의 데이터에서 빠르고 유연한 조회가 가능합니다.

Azure Cosmos DB는 두 가지 기본 IoT 사용 사례를 지원합니다.

  • 디바이스 원격 분석을 저장하여 시각화, 사후 처리 및 분석을 위해 원격 분석 데이터에 빠르게 액세스할 수 있습니다.
  • 디바이스 카탈로그를 저장하여 각 디바이스가 항목으로 표시되는 IoT 디바이스, 엔터티 및 토폴로지의 모델링을 지원합니다.