다음을 통해 공유


Azure Cosmos DB의 변경 피드 모드

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 파이썬 Node.JS
변경 피드 풀 모델 Yes Yes Yes Yes
변경 피드 프로세서 Yes Yes 아니오 아니오
Azure Functions 트리거 Yes Yes Yes Yes

응답 개체 구문 분석

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

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

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

다음 단계

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