【发布时间】:2016-12-16 01:48:25
【问题描述】:
DocumentDB 提供的这个新的Change Feed 功能非常酷。但是,文档指出:
对文档的每个更改仅在更改源中出现一次。更改日志中仅包含给定文档的最新更改。中间更改可能不可用。
基本上,如果文档从修订版 A->B->C 开始,当轮询更改提要时,我们只会得到“C”。 - 我有一种情况,我也想看到“A”和“B”。
我知道一些现有的模式可以解决这个问题,但我真的希望利用这个新的 Change Feed 功能。我希望它会返回 A、B 和 C。
此功能的目的是让“工作人员”非常频繁地轮询服务吗?显然,工作人员轮询的频率越高,他们越不可能跳过对文档的修订。但是,我不希望因此对集合的性能产生不利影响。
【问题讨论】:
-
只是大声思考,您不能为此目的使用 DocumentDB 触发器吗 - docs.microsoft.com/en-us/azure/documentdb/…?您可以在每次文档更新后触发触发器,该触发器将具有识别更改并在某处记录更改的代码。
-
正确,触发器可以让我捕获差异。然后,我会将更改嵌入到文档本身或单独的文档中。两者都是相当常见的模式,具体取决于预期的更新数量。但是,出于数据仓库的目的,我有一个外部系统需要查看所有版本。这就是触发器+sproc的问题。
-
但是为了其他人的利益阅读本文...绝对有可能 1) 使用触发器捕获差异,2) 将差异嵌入文档中,3) 检测更新的文档更改 Feed,4) 处理您已经“处理”更新 0-[i-1] 的情况和 5) 处理您在同一迭代中看到多个“新”更新的情况。 - 这只是更多的维护+编码。自上次调用更改提要以来,我希望只有一个文档的所有更新流。
标签: azure azure-cosmosdb