c# - 如何识别 Cosmos db 中记录级别的漂移?

标签 c# azure azure-cosmosdb

我是 Cosmos db 的新手,并试图理解更改源的概念。据我了解,更改源有助于跟踪容器记录上的插入/更新。有人可以帮助我解决我想在每条记录上保留历史数据的情况吗?

我想知道是否对 cosmos db 中的记录进行了任何更新,如何保留旧记录的副本?如果对同一条记录进行多次更新,那么是只保留更改的部分记录还是整个记录更好?

代码示例值得赞赏,但不是必需的。概念性解释也有帮助。

最佳答案

这是文档版本控制模式。这是一个简单的概念设计。

这是一个仅附加存储,有两个容器,一个接收所有插入或更新。它仅包含文档的最新版本。第二个容器包含文档的所有版本。当文档插入或更新到第一个容器中时,更改提要会选取该文档并将其复制到具有新/id 值的第二个容器中。

在您的数据模型中包含文档版本属性。每次插入时该值为 1,每次更新时该值都会递增。

这里需要指出的一点是每个文档的 id 值在分区键值中必须是唯一的。为了说明这一点,如果我有一个分区键为 orderId 的订单容器,则该订单的每个版本都将具有具有相同分区键 (orderId) 的不同 id 值。这很有帮助,因此您可以对文档的所有版本进行高效的分区内查询。如果各个版本的分区键值和 id 相同,则当更改源将数据插入第二个容器时,您将遇到异常。

实际上有一些示例内容将通过示例应用程序来说明这一点。但 3-4 周内不会发布。希望我上面描述的内容能够帮助您实现这一目标。实现起来并不困难。

关于c# - 如何识别 Cosmos db 中记录级别的漂移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75033369/

相关文章:

c# - 如何跟踪 documentdb Linq 提供程序生成的查询?

c# - 快速查找并渲染给定海拔以上的地形

c# - Rfc2898DeriveBytes 的版本无关代码(在 .NET 4.0 上有 Dispose 但在 2.0 上没有)

c# - 这可以单独使用格式化字符串来完成吗?

java - 对位于 Azure Blob 存储中的文件运行 ffprobe

azure - terraform 计划不与 azurerm 提供商合作

node.js - VM 上的 Cosmos DB 模拟器和主机 MacOS 上的 Azure Function App 未通过 SSL 验证

azure - 当另一个属性与某个提供的值匹配时有条件地更新一个顶点属性

c# - .NET 2.0/C# 中泛型方法元数据的签名格式是什么?

azure - 云服务,包上传速度