올바른 일관성 수준 선택

완료됨

각 일관성 모델은 특정한 실제 시나리오에 사용할 수 있습니다. 각 모델은 정밀한 가용성과 성능 균형을 제공하며 포괄적인 SLA를 통해 지원됩니다. 다음 간단한 고려 사항은 여러 가지 일반적인 시나리오에서 올바른 선택을 하는 데 도움이 됩니다.

기본 일관성 수준 구성

언제든지 Azure Cosmos DB 계정의 기본 일관성 수준을 구성할 수 있습니다. 계정에 구성된 기본 일관성 수준은 해당 계정의 모든 Azure Cosmos DB 데이터베이스 및 컨테이너에 적용됩니다. 컨테이너 또는 데이터베이스에 대해 실행된 모든 읽기 및 쿼리는 기본적으로 지정된 일관성 수준을 사용합니다.

읽기 일관성은 논리 파티션 내의 단일 읽기 작업 범위에 적용됩니다. 읽기 작업은 원격 클라이언트 또는 저장 프로시저에서 실행할 수 있습니다.

일관성 수준과 연결된 보장

Azure Cosmos DB에서는 읽기 요청의 100%가 선택한 일관성 수준의 일관성 보장을 충족하도록 합니다. TLA+ 사양 언어를 사용한 Azure Cosmos DB의 5가지 일관성 수준에 대한 정확한 정의는 azure-cosmos-tla GitHub 리포지토리에서 제공됩니다.

강력한 일관성

강력한 일관성은 선형화 가능성 보장을 제공합니다. 선형화 가능성은 요청을 동시에 처리하는 것을 의미합니다. 읽기를 통해 항목의 최신 커밋된 버전 반환이 보장됩니다. 클라이언트는 커밋되지 않은 쓰기 또는 부분 쓰기를 볼 수 없습니다. 사용자는 항상 최신 커밋 쓰기의 읽기가 보장됩니다.

제한된 부실 일관성

제한된 부실 일관성에서는 읽기에서 일관적인 접두사 보장이 적용됩니다. 항목의 최대 "K" 버전("업데이트") 또는 "T" 시간 간격(둘 중 먼저 도달하는 간격)만큼 읽기가 쓰기보다 뒤처질 수 있습니다. 즉, 제한된 부실을 선택하면 "부실"은 두 가지 방식으로 설정할 수 있습니다.

  • 항목의 버전(K) 수
  • 읽기가 쓰기보다 뒤처질 수 있는 시간 간격(T)

단일 지역 계정의 경우 K 및 T의 최소값은 10개의 쓰기 작업 또는 5초입니다. 다중 지역 계정의 경우 K 및 T의 최솟값은 100,000개 쓰기 작업 또는 300초입니다.

세션 일관성

세션 일관성에서는 단일 클라이언트 세션 내의 읽기에서 일관적인 접두사, 단조 읽기, 단조 쓰기, 쓰기 읽기 및 읽기 뒤 쓰기 보장을 적용하도록 합니다. 여기서는 단일 "작성자" 세션이나 여러 작성자를 위한 세션 토큰 공유를 가정합니다.

일관적인 접두사 일관성

일관된 접두사에서 단일 문서 쓰기로 만들어진 업데이트는 최종 일관성을 확인합니다. 트랜잭션 내에서 일괄 처리로 만들어진 업데이트는 커밋된 트랜잭션과 일관되게 반환됩니다. 여러 문서의 트랜잭션 내에서 쓰기 작업은 항상 함께 표시됩니다.

트랜잭션 T1 및 T2 내에서 두 개의 쓰기 작업이 문서 Doc 1Doc 2에서 수행된다고 가정합니다. 클라이언트가 모든 복제본에서 읽기를 수행하면 동일한 읽기 또는 쿼리 작업에 대해 “Doc 1 v1 및 Doc 2 v1” 또는 “Doc 1 v2 및 Doc 2 v2”가 표시되지만, “Doc 1 v1 및 Doc 2 v2” 또는 “Doc 1 v2 및 Doc 2 v1”은 표시되지 않습니다.

최종 일관성

최종 일관성의 경우 읽기에 대한 순서가 보장되지 않습니다. 추가 쓰기가 없으면 복제본이 결과적으로 수렴합니다.

최종 일관성은 가장 약한 형태의 일관성으로, 클라이언트는 이전에 읽은 것보다 오래된 값을 읽을 수 있습니다. 최종 일관성은 애플리케이션에 순서를 보장하지 않아도 되는 경우에 적합합니다. 리트윗, 좋아요 또는 비스레드 댓글 등을 예로 들 수 있습니다.