Azure Cosmos DB의 변경 피드
적용 대상: NoSQL MongoDB Cassandra Gremlin
Azure Cosmos DB 변경 피드는 컨테이너의 변경 내용을 발생하는 순서대로 보관하는 영구 레코드입니다. Azure Cosmos DB의 변경 피드 지원은 모든 변경 사항에 대해 Azure Cosmos DB 컨테이너를 수신하여 작동합니다. 그런 다음 변경된 문서가 수정된 순서로 정렬된 목록이 출력됩니다. 영구 변경 내용은 비동기적 및 증분적으로 처리할 수 있고 출력을 하나 이상의 소비자 사이에 분산하여 병렬 처리가 가능합니다.
변경 피드 디자인 패턴에 대해 자세히 알아봅니다.
지원되는 API 및 클라이언트 SDK
변경 피드 기능은 현재 다음 Azure Cosmos DB SDK에서 지원됩니다.
클라이언트 드라이버 | NoSQL | Apache Cassandra | MongoDB | Apache Gremlin | 테이블 | PostgreSQL |
---|---|---|---|---|---|---|
.NET | ||||||
Java | ||||||
Python | ||||||
Node/JavaScript |
변경 피드를 사용하여 작업
다음 옵션을 통해 변경 피드를 사용하여 작업할 수 있습니다.
변경 피드는 Azure Cosmos DB 컨테이너의 파티션 키 범위에 사용할 수 있습니다. 이를 통해 아래 이미지에 표시된 대로 병렬 처리를 위해 하나 이상의 소비자에게 배포할 수 있습니다.
참고 항목
파티션 키 범위는 변경 피드 프로세서를 사용할 경우 실제 파티션에 매핑되고 풀 모델 사용할 경우에는 FeedRanges
에 매핑됩니다.
변경 피드의 기능
변경 피드는 기본적으로 모든 Azure Cosmos DB 계정에 대해 사용하도록 설정됩니다.
여러 변경 피드 모드가 있으며, 그 중 일부는 사용하도록 설정하기 위해 추가 구성이 필요합니다.
Azure Cosmos DB 계정과 연결된 모든 지역에서 프로비전된 처리량을 사용하여 Azure Cosmos DB의 다른 작업과 마찬가지로 변경 피드에서 읽을 수 있습니다.
변경 피드는 컨테이너 내의 항목에 수행된 삽입 및 업데이트 작업을 포함합니다. 모든 버전 및 삭제 모드(미리 보기)를 사용하는 경우 삭제 작업 및 TTL 만료로 인해 변경 내용이 표시됩니다.
각 변경 내용이 정확히 한 번 변경 피드에 표시되고, 클라이언트는 검사점 논리를 관리해야 합니다. 검사점 관리의 복잡성을 방지하려는 경우 변경 피드 프로세서가 자동 검사점 및 "최소 한 번" 의미 체계를 제공합니다. 자세한 내용은 변경 피드 프로세서와 함께 변경 피드 사용 문서를 참조하세요.
Azure Cosmos DB 컨테이너의 파티션 키 범위에 대한 변경 내용을 동시에 사용할 수 있습니다. 이 기능을 통해 여러 소비자가 대형 컨테이너의 변경 내용을 병렬로 처리할 수 있습니다.
애플리케이션은 동일한 컨테이너에서 동시에 여러 변경 피드를 요청할 수 있습니다.
변경 피드의 시작점을 사용자 지정할 수 있으며 각 모드에 대해 다양한 옵션을 사용할 수 있습니다.
변경 피드에서 항목의 정렬 순서
변경 피드 항목은 수정 시간 순서대로 도착합니다. 이 정렬 순서는 파티션 키별로 보장되며, 파티션 키 값 전체에는 보장된 순서가 없습니다.
참고 항목
다중 지역 쓰기 계정에는 두 가지 타임스탬프가 있습니다.
- 로컬 지역에서 레코드가 작성된 서버 epoch 시간입니다. 이는
_ts
로 기록됩니다. - 해당 레코드의 허브 지역에서 충돌이 없음이 확인되거나 충돌이 해결된 epoch 시간입니다. 이는
crts
로 기록됩니다.
변경 피드 항목은 crts
에 의해 기록된 순서대로 나타납니다.
다중 지역 Azure Cosmos DB 계정의 피드 변경
다중 지역 Azure Cosmos DB 계정에서 한 지역의 변경 내용을 모든 지역에서 사용할 수 있습니다. 쓰기 지역이 장애 조치(failover)되면 변경 피드가 수동 장애 조치(failover) 작업 전반에 걸쳐 연속적으로 수행됩니다. 여러 쓰기 지역이 있는 계정의 경우 변경 내용을 사용할 수 있는 시기를 보장할 수 없습니다. 다른 지역에서 최신 변경 내용이 있는 경우 동일한 문서에 들어오는 변경 내용이 최신 버전 모드에서 삭제될 수 있으며 모든 변경 내용은 모든 버전 및 삭제 모드에서 캡처됩니다.
피드 모드 변경
사용 가능한 변경 피드 모드에는 최신 버전 모드와 모든 버전 및 삭제 모드가 있습니다. 변경 피드를 읽는 모드는 캡처되는 작업 변경 내용과 각 변경에 사용할 수 있는 메타데이터를 결정합니다. 동일한 Azure Cosmos DB 컨테이너에 대해 여러 애플리케이션에서 서로 다른 모드로 변경 피드를 사용할 수 있습니다.
최신 버전 모드
최신 버전 변경 피드 모드에서는 피드의 모든 항목에 대한 삽입 또는 업데이트의 최신 변경 내용이 표시되며 피드는 컨테이너 수명 동안 사용할 수 있습니다. 지정된 변경 내용이 삽입 작업에서 비롯되었는지 업데이트 작업에서 발생했는지 여부는 표시되지 않으며 삭제 작업은 캡처되지 않습니다. 변경 내용은 컨테이너의 원점까지 어느 시점에서든지 읽을 수 있습니다. 그러나 항목이 삭제되면 변경 피드에서 제거됩니다. 자세한 내용은 최신 버전 변경 피드 모드 문서를 참조하세요.
모든 버전 및 삭제 모드(미리 보기)
모든 버전 및 삭제 모드를 사용하면 생성, 업데이트 및 삭제의 항목에 대한 모든 변경 내용을 볼 수 있습니다. 변경 피드 읽기 사이의 항목에 대한 중간 변경 내용을 포함하여 발생한 순서대로 항목에 대한 각 변경 내용의 레코드를 얻게 됩니다. 모든 버전 및 삭제 모드의 변경 피드에서 읽으려면 Azure Cosmos DB 모든 버전을 만들고 변경 피드를 삭제하는 Azure Cosmos DB 계정에 대해 연속 백업이 구성되어 있어야 합니다. 이 모드에서는 계정에 대해 구성된 지속적인 백업 기간 내에 발생한 변경 내용만 읽을 수 있습니다. 미리 보기에 등록하는 방법을 포함하여 자세히 알아보려면 모든 버전 및 변경 피드 모드 삭제 문서를 참조하세요.
Cassandra 및 MongoDB에 대한 API의 변경 피드
피드 변경 기능은 API for MongoDB의 변경 스트림과 API for Cassandra의 조건자가 있는 쿼리로 표시됩니다. API for MongoDB에 대한 구현 세부 정보에 대한 자세한 내용은 Azure Cosmos DB API for MongoDB에서 스트림 변경을 참조하세요.
기본 Apache Cassandra는 CDC 로그의 구성 가능한 디스크 크기에 도달하면 보관을 위해 특정 테이블에 플래그를 지정하고 해당 테이블에 대한 쓰기를 거부하는 메커니즘인 CDC(변경 데이터 캡처)를 제공합니다. Azure Cosmos DB for Apache Cassandra의 변경 피드 기능은 CQL을 통해 조건자로 변경 내용을 쿼리하는 기능을 향상시킵니다. 구현 세부 정보에 대해 자세히 알아보려면 Azure Cosmos DB for Apache Cassandra의 변경 피드를 참조하세요.
변경 피드 요청 단위 사용량 측정
변경 피드는 활용 여부에 관계없이 모든 컨테이너에서 사용할 수 있습니다. 변경 피드에 대한 유일한 비용은 임대 컨테이너의 프로비전된 처리량과 각 요청에 대한 RU입니다. Azure Monitor를 사용하여 변경 피드의 RU(요청 단위) 사용량을 측정합니다. 자세한 내용은 Azure Cosmos DB에서 처리량 또는 요청 단위 사용량 모니터링을 참조하세요.
다음 단계
이제 다음 문서에서 변경 피드에 대해 자세히 알아볼 수 있습니다.