Azure Cosmos DB의 변경 피드 모드

적용 대상: NoSQL

Azure Cosmos DB는 두 가지 변경 피드 모드를 제공합니다. 각 모드는 동일한 핵심 기능을 제공합니다. 차이점은 피드에서 캡처되는 작업, 각 변경에 사용할 수 있는 메타데이터 그리고 변경 내용의 보존 기간입니다. 동일한 Azure Cosmos DB 컨테이너에 대한 여러 애플리케이션에서 각 워크로드의 요구 사항에 맞게 다양한 모드로 변경 피드를 사용할 수 있습니다. 각 개별 변경 피드 애플리케이션은 한 모드에서만 변경 피드를 읽도록 구성할 수 있습니다. 한 모드에서 변경 피드를 사용하더라도 다른 애플리케이션의 다른 모드에서 변경 피드를 사용할 수 없는 것은 아닙니다.

참고 항목

변경 피드 모드에 대한 피드백이 있나요? 많은 의견 부탁드립니다. 언제든지 자유롭게 Azure Cosmos DB 엔지니어링 팀(cosmoschangefeed@microsoft.com)과 피드백을 직접 공유해 주세요.

최신 버전 변경 피드 모드

최신 버전 모드는 만들기 및 업데이트의 항목에 대한 변경의 영구 레코드입니다. 컨테이너에 있는 각 항목의 최신 버전을 갖게 됩니다. 예를 들어 변경 피드를 읽기 전에 항목이 만들어지고 업데이트되는 경우 업데이트된 버전만 변경 피드에 표시됩니다. 삭제는 변경으로 캡처되지 않으며, 항목이 삭제되면 해당 항목은 더 이상 피드에서 사용할 수 없습니다. 최신 버전 변경 피드 모드는 기본적으로 사용하도록 설정되며 Table용 API와 PostgreSQL용 API를 제외한 모든 Azure Cosmos DB 계정과 호환됩니다. 이전에는 이 모드가 변경 피드를 사용하는 기본 방법이었습니다.

모든 버전 및 삭제 변경 피드 모드(미리 보기)

모든 버전 및 삭제 모드(미리 보기)는 만들기, 업데이트 및 삭제 작업의 항목에 대한 모든 변경의 영구 레코드입니다. 변경 피드 읽기 사이의 항목에 대한 중간 변경 내용을 포함하여 발생한 순서대로 항목에 대한 각 변경 내용의 레코드를 얻게 됩니다. 예를 들어 변경 피드를 읽기 전에 항목이 만들어지고 업데이트되면 항목의 만들기 및 업데이트 버전이 모두 변경 피드에 표시됩니다. 모든 버전 및 삭제 모드의 변경 피드에서 읽으려면 Azure Cosmos DB 계정에 대해 지속적인 백업을 구성해야 합니다. 지속적인 백업을 켜면 모든 버전이 만들어지고 변경 피드가 삭제됩니다. 이 변경 피드 모드를 사용하면 지속적인 백업 기간 내에 발생한 변경 내용만 읽을 수 있습니다. 이 모드는 Azure Cosmos DB for NoSQL 계정과만 호환됩니다. 미리 보기에 등록하는 방법에 대해 자세히 알아보세요.

변경 피드 사용 사례

최신 버전 모드는 컨테이너의 시작 부분에서 변경 내용으로 돌아갈 수 있는 기능을 통해 컨테이너의 항목에 대한 실시간 변경 내용과 기록 변경 내용을 쉽게 처리할 수 있는 방법을 제공합니다.

다음은 이 모드에 적합한 시나리오입니다.

  • 전체 컨테이너를 보조 위치로 마이그레이션

  • 컨테이너의 시작 부분에서 변경 내용을 다시 처리하는 기능

  • 만들기 및 업데이트 작업으로 인한 컨테이너 내 항목의 변경 내용을 실시간으로 처리

  • 삭제 또는 읽기 사이의 중간 변경 내용을 캡처할 필요가 없는 워크로드

각 모드의 기능

모든 변경 피드 모드의 공통적인 기능 외에도, 각 변경 피드 모드는 다음과 같은 특징을 갖고 있습니다.

  • 변경 피드는 컨테이너 내의 항목에 수행된 삽입 및 업데이트 작업을 포함합니다.

  • 이 변경 피드 모드는 삭제를 기록하지 않습니다. 항목을 직접 삭제하는 대신 항목 내에서 "일시 삭제" 플래그를 설정하여 삭제를 캡처할 수 있습니다. 예를 들어 deleted라는 항목에서 특성을 추가하고 해당 값을 true로 설정한 다음, 항목의 TTL(Time-to-Live)을 설정할 수 있습니다. 변경 피드는 이를 업데이트로 캡처하며, TTL이 만료되면 항목이 자동으로 삭제됩니다. 또는 TTL 기능을 사용하여 항목의 제한된 만료 기간을 설정할 수 있습니다. 이 솔루션을 사용하여 TTL 만료 기간보다 짧은 시간 간격 내에 변경 내용을 처리해야 합니다.

  • 특정 항목의 가장 최근 변경 내용만 변경 피드에 포함됩니다. 중간 변경 내용을 사용할 수 없습니다.

  • 항목이 삭제되면 해당 항목은 더 이상 변경 피드에서 사용할 수 없습니다.

  • 특정 시점에 변경 내용을 동기화할 수 있으며, 변경 내용을 사용할 수 있는 고정된 데이터 보존 기간은 없습니다.

  • 특정 작업 유형에 대한 변경 피드를 필터링할 수 없습니다. 사용 가능한 한 가지 대안은 업데이트에 대한 항목에 "소프트 표식"을 추가하고, 변경 피드에서 항목을 처리할 때 마커를 기반으로 필터링하는 것입니다.

  • 변경 피드를 읽는 시작점은 컨테이너의 시작 부분, 특정 시점, "지금"부터 또는 특정 검사점입니다. 시작 시간의 정밀도는 약 5초입니다.

변경 피드 작업

각 모드는 각 언어에 대한 변경 피드를 읽는 다양한 방법과 호환됩니다.

다음과 같은 방법으로 최신 버전 모드에서 변경 피드의 변경 내용을 사용할 수 있습니다.

변경 피드를 읽는 방법 .NET Java Python Node.JS
변경 피드 풀 모델
변경 피드 프로세서 없음 아니요
Azure Functions 트리거

응답 개체 구문 분석

최신 버전 모드에서 기본 응답 개체는 변경된 항목의 배열입니다. 각 항목에는 _etag_ts를 비롯한 Azure Cosmos DB 항목의 표준 메타데이터가 포함되어 있으며, 새 속성 _lsn이 추가됩니다.

_etag 형식은 내부용이며 언제든지 변경될 수 있으므로 이 형식에 종속되면 안 됩니다. _ts는 수정 또는 생성 타임스탬프입니다. 시간순 비교를 위해 _ts를 사용할 수 있습니다. _lsn은 변경 피드에 대해서만 추가되는 일괄 처리 ID로, 트랜잭션 ID를 나타냅니다. 여러 항목이 동일한 _lsn을 가질 수 있습니다.

FeedResponseETag는 항목에 표시되는 _etag와 다릅니다. _etag는 내부 식별자이며, 동시성 제어에 사용됩니다. _etag 속성은 항목 버전을 나타내고, ETag 속성은 피드를 시퀀싱하는 데 사용됩니다.

다음 단계

다음 문서에서 변경 피드에 대해 자세히 알아보세요.