我们目前正在寻求从 Sql 迁移到 CosmosDb(DocumentDb)。为了利用 CosmosDb 的优势,我们必须对数据进行非规范化。但是,在某些情况下,如果原始表中的数据发生变化,我们仍然需要更新相关表。为此,我们计划使用 Change Feed 将任何更改传播到相关表。
例如:考虑一个有两个集合的场景
1) 用户收藏
每个文档的键/列:id、name、displayName
2) 后期收藏
每个文档的键/列:id、userDisplayName、userid
让我们假设用户集合中的文档之一的 displayName 已更改。我们需要使用该 displayName 更新帖子集合中的所有文档,以使帖子集合保持最新(非规范化需要支付的费用)
我们可以处理帖子集合中与更改的用户文档的 displayName 匹配的所有文档。如果用户文档中的其他键经常更改,那么如果该列甚至不是 Post 文档的一部分,则为该用户处理所有帖子是昂贵且不必要的。
我找不到有关更改提要的任何信息,以提供有关更改了哪些列的信息。如果没有,我必须承担这笔费用还是有更好的设计方法?