Share via


Azure Cosmos DB의 다중 지역 쓰기 이해

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

읽기 일관성을 보장할 필요가 없는 부분 또는 전체 중단 시나리오에서 가동 중지 시간을 거의 0에 가깝게 달성하는 가장 좋은 방법은 다중 지역 쓰기에 대해 계정을 구성하는 것입니다. 이 문서에서는 다중 지역 쓰기 계정을 구성할 때 알아야 할 주요 개념을 다룹니다.

허브 지역

두 개 이상의 지역이 있는 다중 지역 쓰기 데이터베이스 계정에서 계정이 만들어진 첫 번째 지역을 "허브" 지역이라고 합니다. 계정에 추가된 다른 모든 지역을 "위성" 지역이라고 합니다. 허브 지역이 계정에서 제거되면 추가된 순서대로 다음 지역이 자동으로 허브 지역으로 선택됩니다.

위성 지역에 도착하는 모든 쓰기는 로컬 지역에서 쿼럼 커밋된 후 나중에 충돌 해결을 위해 비동기식으로 허브 지역에 전송됩니다. 쓰기가 허브 지역으로 이동하여 충돌이 해결되면 "확인된" 쓰기가 됩니다. 그때까지는 "미정" 쓰기 또는 "확인되지 않은" 쓰기라고 합니다. 허브 지역에서 제공되는 모든 쓰기는 즉시 확인된 쓰기가 됩니다.

타임스탬프 이해

다중 지역 쓰기 계정의 주요 차이점 중 하나는 각 엔터티와 연결된 두 개의 서버 타임스탬프 값이 있다는 것입니다. 첫 번째는 해당 지역에서 엔터티가 작성된 서버 epoch 시간입니다. 이 타임스탬프는 단일 지역 쓰기 계정과 다중 지역 쓰기 계정 모두에서 사용할 수 있습니다. 두 번째 서버 타임스탬프 값은 충돌이 없음이 확인되거나 허브 지역에서 충돌이 해결된 epoch 시간과 연결됩니다. 확인된 쓰기 또는 충돌 해결된 쓰기에는 충돌 해결 타임스탬프(crts)가 할당된 반면, 확인되지 않은 쓰기 또는 미정 쓰기에는 crts가 없습니다. Cosmos DB에는 서버에서 설정한 두 개의 타임스탬프가 있습니다. 주요 차이점은 계정의 지역 구성이 단일 쓰기인지 다중 쓰기인지 여부를 나타냅니다.

타임스탬프 의미 노출된 경우
_ts 엔터티가 작성된 서버 epoch 시간입니다. 모든 읽기 및 쿼리 API에 의해 항상 노출됩니다.
crts 다중 쓰기 충돌이 해결되었거나 충돌이 없음이 확인된 epoch 시간입니다. 다중 쓰기 지역 구성의 경우 이 타임스탬프는 지속적인 백업 및 변경 피드에 대한 변경 순서를 정의합니다.

  • 변경 피드 요청의 시작 시간을 찾는 데 사용됨
  • 변경 피드 응답의 정렬 순서로 사용됩니다.
  • 지속적인 백업에 대한 쓰기 순서를 지정하는 데 사용됨
  • 로그 백업은 확인된 쓰기 또는 충돌 해결된 쓰기만 캡처하므로 지속적인 백업의 복원 결과는 확인된 쓰기만 반환합니다.
변경 피드 요청에 대한 응답으로 그리고 요청에 의해 "새 와이어 모델"이 사용하도록 설정된 경우에만 노출됩니다. 이는 모든 버전 및 삭제 변경 피드 모드의 기본값입니다.

다음 단계

이제 다음 문서를 읽을 수 있습니다.