포스트

[AZ-204] Azure Cosmos DB

[AZ-204] Azure Cosmos DB

Azure Cosmos DB

image

Cosmos DB 주요 이점 파악

  • 전역 복제
  • 일관성 수준 : 5개의 일관성 모델 제공, 포괄적인 SLA
  • 짧은 대기 시간
  • 탄력적 스케일 아웃

Cosmos 리소스 계층 구조 살펴보기

  • 계정의 요소
  • 데이터베이스
  • 컨테이너
    • 그리고 그 항목… image

데이터베이스 계정 자체는 고가용성을 위한 기본 단위로써 계정 자체에 고유한 DNS가 제공된다. 이를 통해 여러 Azure 지역의 고가용성을 보장하는 시스템이다. 하나의 Azure 구독은 최대 50개의 DB계정을 보유할 수 있는데 그 밑에 Azure Cosmos DB 컨테이너 (스케일링 성능을 위한 기본단위) 가 존재한다. 이 컨테이너는 무제한의 프로비전과 무제한의 처리량을 가질 수 있게 된다.

Azure Cosmos DB 컨테이너는 실제 데이터가 저장되는 위치로 스케일업 되지 않고 스케일 아웃된다.

일반적으로 데이터는 파티션이라는 한개 이상의 서버에 저장되는데 이러한 파티션을 늘리는 방식으로 무제한의 데이터를 저장할 수 있도록 제공한다. 또한 컨테이너를 만들 때는 파티션 키를 제공하는데 이는 DB내 데이터를 작성 및 업데이트 또는 삭제 할 때 라우팅 기능은 물론 where 사용시에도 사용될 수 있다.

컨테이너를 생성시 다음 두가지 모드 중 하나로 처리량을 구성하는디

  • 전용 처리량 : 처리량은 선택된 컨테이너 전용으로 예약된다.
  • 공유 처리량 : 처리량은 DB 수준으로 최대 25개의 컨테이너와 공유된다.

변경 피드

Cosmos DB에서 발생한 데이터 변경사항에 대해 순차적 스트리밍을 제공한다. 이를 통해 실시간 데이터 처리와 이벤트 기반 아키텍쳐 구현 가능

SDK 변경 피드 프로세서

주로 .NET SDK에서 제공하는 라이브러리로 변경 피드에서 읽은 변경사항을 쉽게 처리할 수 있게 지원하는 기능 주로 데이터를 읽고 사용자가 지정한 논리로 처리하며 병렬처리를 지원한다. 또한 임대 컨테이너를 통해 상태를 관리하고 작업 중단후에도 복구가 가능하다.

이러한 변경 피드 프로세서는 모니터링 컨테이너, 임대 컨테이너, 컴퓨팅 인스턴스, 대리자의 네가지로 구성된다.

모니터링 컨테이너

  • 변경피드 생성 컨테이너로써 데이터 변경을 모니터링 하며 변경사항이 발생할 때마다 변경 피드를 통해 업데이트 처리

임대 컨테이너

  • 변경 피드 프로세서의 상태를 저장하고 여러 작업자의 처리를 조정하는 관리자의 역할

컴퓨팅 인스턴스

  • 실제 처리하는 컴퓨팅 리소스(VM, Pod)

대리자

  • 사용자 지정 논리(자용자 정의 로직)

Azure Cosmos DB가 지원되는 API

  • MongoDB용 API
  • Cassandra API
  • Table API
  • Gremlin API

일관성 수준

일관성 수준이란? 트랜잭션의 ACID 중 하나로 Consistency(트랜잭션의 일관성)에 대한 논의 기존의 RDBMS에서는 하나의 서버인것에 비해 분산 DB에서는 DB 서버가 분산되어 있어 트랜잭의 일관성을 지키는데 큰 비용이 든다.

Azure Cosmos DB는 선택사항 스펙트럼으로 다양한 데이터 일관성에 접근할 수 있다. image 강력한 일관성 요청과 동시에 처리하는 것이며 사용자는 최신 커밋쓰기와 읽기를 제공하지만, 클라이언트는 커밋되지 않은 부분에 있어 읽기 쓰기가 불가능하다. -> 선영화 가능성의 보장

일반적으로는… 완벽한 일관성을 보장한다. 하지만 이와 비례하여 성능은 다운

분산 트랜잭션(two stage commit, synchronization)

제한된 부실 일관성 데이터가 읽을 때 약간의 지연이 있음을 허용하는 일관성으로 이러한 부실의 정도는 미리 설정이 가능하다. 주로 둘 이상의 지역이 있을 때 단일지역 쓰기 계정을 사용하거나 일관성 요구가 비교적 낮은 어플리케이션에서 선호 될 수 있다.

세션 일관성 세션내의 사용자들끼리는 자연스럽게 트랜잭션을 공유하고 이를 세션이나 토큰을 사용하여 같은 세션이나 공유하고 있는 사용자끼리 업데이트된 값을 공유 할 수 있다.

ex) 쇼핑카트에 제품 추가

일관적인 접두사 일관성 최종 일관성을 확인하는 방식 즉, 데이터의 최신성은 보장하지 못하지만 전체적인 데이터의 일관성은 보장한다. (비록 오래된 데이터라도)

*doc1의 v1 와 doc2 v1가 있고 각자 v2로 업데이트 되었다면 양쪽 모두 v1이거나, v2인것을 보장 doc1 v1와 doc2의 v2는 존재하지 않게 하는 방식 *

최종 일관성 읽기에 대한 순서를 보장하지 않은 순서를 보장하지 않은 경우, ex) 리트윗, 좋아요 같은 예

요청 단위

image 모든 데이터베이스의 작업 비용은 Azure Cosmos DB에서 정규화 되고 이러한 화폐는 요청단위(RU)로 보장한다. 1KB = 1RU read 기준

정리

우리는 이 단원에서 아래와 같은 것을 배웠다.

  • Azure Cosmos DB에서 제공하는 주요 식별과 구성
  • 다양한 일관성과 그 적합한 수준
  • 비용과 지원하는 API
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.