适用于 Azure Cosmos DB for NoSQL 的 Azure Synapse Link 中的按时间顺序查看
适用对象: NoSQL
MongoDB
时间旅行使你能够访问分析存储中的 Azure Cosmos DB 数据,就像访问某个历史特定时间点上刚刚出现的数据一样(精确到毫秒级)。 使用时间旅行,可以毫不费力地查询已更新或删除的过去数据,分析趋势,以及比较两个兴趣点之间的差异。
本文介绍如何对分析存储中存储的 Azure Cosmos DB 数据执行时间旅行分析。 在容器中启用 Azure Synapse Link 时,将创建分析存储。
若要对 Azure Cosmos DB 数据执行时间旅行操作,请确保已为 Azure Synapse Link 启用 Azure Cosmos DB 帐户。 此外,请确保已在容器中启用 Azure Synapse Link。 Azure Synapse Link 为容器启用分析存储,然后用于 Azure Synapse Link 分析(包括时间旅行)。
如果在 Azure Cosmos DB 容器上定义了分析生存时间 (ATTL),则它将用作时间旅行操作的最长保留期。 如果未定义 ATTL 或将其设置为 -1,则具有最长保留期。 换句话说,你可以返回到启用 Azure Synapse Link 后的任何时间。
下面是一些受支持的时间旅行应用场景:
- 数据审核:审核数据更改对于数据合规性和了解数据随时间变化的方式至关重要。 时间旅行功能使你能够跟踪更改、访问所有版本的更新,以及在任何所需时间点执行数据分析。
- 趋势分析:通过指定“spark.cosmos.timetravel.startTimestamp”和“spark.cosmos.timetravel.timestampAsOf”配置的组合,可以比较和分析两个特定时间点之间的差异。 例如,可以将三个月前的产品库存量与六个月前的产品库存量进行比较。
- 修复意外的数据更改:时间旅行功能对于将单个记录纠正到其上一个已知良好状态非常有用,因此无需通过备份和还原即可高效执行修复。 使用“timestampAsOf”值访问处于上个已知良好状态的所需数据后,可以使用该数据更新 Azure Cosmos DB 容器,也可以将记录引入新容器。
- Azure Cosmos DB 容器作为渐变维度:渐变维度用于跟踪属性值的更改和报告任何给定时间点的历史数据。 时间旅行查询结合“fullFidelity”选项可通过跟踪表示为具有有效期的独立行的属性值更改,提供类型 2 渐变维度的功能。
此代码示例演示如何从产品容器加载包含记录的 Spark 数据帧,可使用 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 期满的记录。 如果想要在时间旅行结果集中查看事务存储中 TTL 期满的记录,请将此设置设为 TRUE 。 |
spark.cosmos.timetravel.ignoreTransactionalUserDeletes |
FALSE |
忽略用户从事务存储中删除的记录。 如果想要查看从事务存储中删除的时间旅行结果集中的记录,请将此设置设为 TRUE 。 |
spark.cosmos.timetravel.fullFidelity |
FALSE |
如果要访问历史记录中特定点所有版本的记录(包括中间更新),请将此设置设为 TRUE 。 |
重要
所有配置设置都使用 UTC 时区。
- 时间旅行仅适用于 Azure Synapse Spark。
- 时间旅行仅适用于 API for NoSQL 和 API for MongoDB。 目前不支持 API for Gremlin 和 API for Cassandra。
- 在容器中启用 Azure Synapse Link 之前,无法使用时间旅行。
此功能不产生额外费用。 使用此功能的成本包括 Azure Synapse Link 定价,以及用于在分析存储中运行时间旅行作业的 Azure Synapse Apache Synapse Spark 定价。
若要了解更多信息,请参阅下列文档: