올바른 일관성 수준 선택

완료됨

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

기본 일관성 수준 구성

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

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

일관성 수준과 연결된 보장

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

강력한 일관성

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

제한된 부실 일관성

제한된 부실 일관성에서 두 지역 간의 데이터 지연은 항상 지정된 양보다 작습니다. 양은 항목의 "K" 버전(즉, "업데이트") 또는 "T" 시간 간격(둘 중 먼저 도달하는 간격)만큼일 수 있습니다. 즉, 제한된 부실을 선택하면 모든 지역에서 데이터의 최대 "부실"을 두 가지 방식으로 설정할 수 있습니다.

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

제한된 부실은 주로 둘 이상의 지역이 있는 단일 지역 쓰기 계정에 유용합니다. 영역의 데이터 지연(실제 파티션별로 결정됨)이 구성된 부실 값을 초과하는 경우 부실이 구성된 상한 이내로 다시 들어올 때까지 해당 파티션에 대한 쓰기가 제한됩니다.

단일 지역 계정의 경우 제한된 부실은 세션 및 최종 일관성과 동일한 쓰기 일관성 보장을 제공합니다. 제한된 부실을 사용하면 데이터가 단일 지역의 로컬 과반수(4개의 복제본 세트 중 3개의 복제본)에 복제됩니다.

세션 일관성

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

강력보다 약한 모든 일관성 수준과 마찬가지로, 쓰기는 다른 모든 지역에 대한 비동기 복제를 사용하여 로컬 지역에서 4개의 복제본 세트 중 최소 3개의 복제본에 복제됩니다.

일관적인 접두사 일관성

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

트랜잭션 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”은 표시되지 않습니다.

최종 일관성

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

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