如何在cosmos db中识别记录级别的漂移?



我是cosmos db的新手,正在尝试理解change feed的概念。我理解变更提要通过跟踪容器记录上的插入/更新来提供帮助。有人可以帮助我的情况下,我想保持历史数据的每条记录?

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

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

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

这是一个带有两个容器的仅追加存储,其中一个容器接收所有的插入或更新。它只包含文档的最新版本。第二个容器包含文档的所有版本。当一个文档被插入或更新到第一个容器中时,change feed会拾取该文档并将其复制到第二个容器中,并使用新的/id值。

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

这里需要指出的一点是,每个文档的id值在分区键值中必须是唯一的。为了说明这一点,如果我有一个分区键为orderId的订单容器,那么该订单的每个版本将具有具有相同分区键(orderId)的不同id值。这很有用,因此您可以对文档的所有版本执行高效的分区内查询。如果不同版本的分区键值和id相同,那么当change feed将数据插入到第二个容器中时,就会出现异常。

实际上有一些示例内容将与示例应用程序来说明这一点。然而,3-4周内不会发布。希望我上面的描述能帮你实现这个目标。这并不难实现。

最新更新