Azure DocumentDb "high water mark"/时间戳

Azure DocumentDb "high water mark"/timestamp

我正在寻求实现一个偶尔会从 DocumentDb 中提取所有 "new" 记录的过程,其中新记录是 "all documents added or modified since the last time the process was run."

SQL 服务器为此设置了 rowversion,保证在数据库中的所有行和列中唯一且单调递增。

我看到 DocumentDb 有 _ts,它(根据文档)用作 Azure 搜索索引的高水位线,但它是如何工作的?如果在读取时同时插入多个文档,则可能所有文档都具有相同的 _ts 值。在下一次读取时,如果与 _ts 的比较严格大于,则会遗漏一些文档;如果它大于或等于,一些文档将被第二次拉取。

为此使用 _ts 安全吗?

_ts 属性 特定于一个文档,而不是一个文档集合。它表示更新特定文档的时间(以秒为单位,自 1970 年 1 月 1 日起)。

_ts 属性 不会在集合中的所有文档中为您提供高水位标记。每个文档都有自己独立的 _ts 属性(可能与另一个文档的 _ts 属性 具有相同的值)。

有关详细信息,请参阅 this answer