Azure Cosmos DB for NoSQL용 Azure Synapse Link의 시간 이동
적용 대상: NoSQL
MongoDB
시간 이동을 통해 분석 저장소의 Azure Cosmos DB 데이터에 액세스할 수 있으며 기록의 특정 시점(밀리초 수준까지)에 정확하게 표시됩니다. 시간 이동을 사용하면 업데이트 또는 삭제된 과거 데이터를 손쉽게 쿼리하고 추세를 분석하고 두 관심 지점 간의 차이점을 비교할 수 있습니다.
이 문서에서는 분석 저장소에 저장된 Azure Cosmos DB 데이터에 대한 시간 이동 분석을 수행하는 방법을 설명합니다. 분석 저장소는 컨테이너에서 Azure Synapse Link를 사용하도록 설정할 때 만들어집니다.
작동 방식
Azure Cosmos DB 데이터에 대한 시간 이동 작업을 수행하려면 Azure Cosmos DB 계정이 Azure Synapse Link에 사용하도록 설정되었는지 확인합니다. 또한 컨테이너에서 Azure Synapse Link를 사용하도록 설정했는지 확인합니다. Azure Synapse Link는 컨테이너에 대한 분석 저장소를 사용하도록 설정한 다음, 시간 이동을 포함한 Azure Synapse Link 분석에 사용됩니다.
분석 ATTL(Time-To-Live)이 Azure Cosmos DB 컨테이너에 정의된 경우 시간 이동 작업의 최대 보존 기간으로 사용됩니다. ATTL이 정의되지 않았거나 -1로 설정된 경우 최대 보존 기간이 있습니다. 즉 Azure Synapse Link를 사용하도록 설정한 이후 언제든지 다시 이동할 수 있습니다.
사용하는 경우
지원되는 시간 이동 시나리오는 다음과 같습니다.
- 데이터 감사: 데이터 변경 내용을 감사하는 것은 데이터 규정 준수 및 시간이 지남에 따라 데이터가 어떻게 발전했는지 이해하는 데 매우 중요합니다. 시간 이동 기능을 사용하면 변경 내용을 추적하고 모든 버전의 업데이트에 액세스하고 원하는 시점에 데이터 분석을 수행할 수 있습니다.
- 추세 분석: “spark.cosmos.timetravel.startTimestamp” 및 “spark.cosmos.timetravel.timestampAsOf” 구성의 조합을 지정하여 두 특정 시점 간의 차이점을 비교하고 분석할 수 있습니다. 예를 들어 3개월 전의 제품 재고 수량을 6개월 전의 제품 재고 수량과 비교할 수 있습니다.
- 실수로 인한 데이터 변경 복구: 시간 이동 기능은 개별 레코드를 마지막으로 알려진 양호한 상태로 수정하는 데 매우 중요하므로 백업 및 복원에 의존하지 않고 복구를 효율적으로 수행할 수 있습니다. "timestampAsOf" 값을 사용하여 마지막으로 알려진 양호한 상태에 있었던 대로 원하는 데이터에 액세스한 후에는 해당 데이터로 Azure Cosmos DB 컨테이너를 업데이트하거나 레코드를 새 컨테이너로 수집할 수 있습니다.
- 느린 변경 차원으로 Azure Cosmos DB 컨테이너: 느린 변경 차원은 특성 값의 변경 내용을 추적하고 지정된 시점에 기록 데이터를 보고하는 데 사용됩니다. 시간 이동 쿼리는 "fullFidelity" 옵션과 함께 유효 기간이 있는 별도의 행으로 표시되는 특성 값 변경 내용을 추적하여 형식 2의 느린 변경 차원 기능을 제공합니다.
시간 이동 사용
이 코드 샘플에서는 제품 컨테이너의 레코드를 사용하여 Spark DataFrame을 로드하는 방법을 보여 주며 Azure Synapse Spark Notebook을 사용하여 실행할 수 있습니다.
import com.microsoft.azure.cosmos.analytics.spark.connector.datasource.CosmosOlapTimeTravel
val configuration = Map(
"spark.synapse.linkedService" -> "CosmosDBLS",
"spark.cosmos.container" -> "product",
"spark.cosmos.timetravel.timestampAsOf" -> "2022-01-01 00:00:00"
)
val df = CosmosOlapTimeTravel.load(configuration)
display(df)
구성
설정 | 기본값 | 설명 |
---|---|---|
spark.cosmos.timetravel.timestampAsOf |
현재 타임스탬프 | 과거로 되돌아갈 기록 타임스탬프(밀리초 수준 정밀도)입니다. |
spark.cosmos.timetravel.startTimestamp |
시작부터 | 시간 이동을 시작할 타임스탬프입니다. 이 구성은 "spark.cosmos.timetravel.timestampAsOf"와 함께 사용하여 추세 분석과 같은 사용 사례에 대한 두 특정 시점 간의 차이를 비교하고 분석할 수 있습니다. |
spark.cosmos.timetravel.ignoreTransactionalTTLDeletes |
FALSE |
트랜잭션 저장소에서 TTL-ed를 받은 레코드를 무시합니다. 트랜잭션 저장소에서 TTL-ed를 받은 시간 이동 결과 집합의 레코드를 보려면 이 설정을 TRUE 로 설정합니다. |
spark.cosmos.timetravel.ignoreTransactionalUserDeletes |
FALSE |
사용자가 트랜잭션 저장소에서 삭제한 레코드를 무시합니다. 트랜잭션 저장소에서 삭제된 시간 이동 결과 집합의 레코드를 보려면 이 설정을 TRUE 로 설정합니다. |
spark.cosmos.timetravel.fullFidelity |
FALSE |
기록의 특정 지점에서 모든 버전의 레코드(중간 업데이트 포함)에 액세스하려는 경우 이 설정을 TRUE 로 설정합니다. |
Important
모든 구성 설정은 UTC 표준 시간대에 사용됩니다.
제한 사항
- 시간 이동은 Azure Synapse Spark에서만 사용할 수 있습니다.
- 시간 이동은 API for NoSQL 및 API for MongoDB에만 사용할 수 있습니다. APIs for Gremlin 및 Cassandra는 현재 지원되지 않습니다.
- 컨테이너에서 Azure Synapse Link를 사용하도록 설정하기 전에는 시간 이동을 사용할 수 없습니다.
가격 책정
이 기능에 대한 추가 비용은 없습니다. 이 기능을 사용하는 비용에는 Azure Synapse Link 가격 책정과 분석 저장소에서 시간 이동 작업을 실행하기 위한 Azure Synapse Apache Synapse Spark 가격 책정이 포함됩니다.
다음 단계
자세히 알아보려면 다음 문서를 참조하세요