在使用CouchDB(2.1.1)中的_changes
API时,我注意到当添加seq
时,结果记录的?include_docs=true
数是不同的。这是预期的吗?如果是,有人可以帮助我理解其背后的逻辑吗?
更多信息:
通过致电{strong> ?include_docs=true
呼叫无 ?include_docs=true
如您所见,两个请求上的id
值根据响应上条目的顺序而有所不同,而且seq
哈希看起来相同,但其“字符串部分”为最后有所不同。所以我的问题是,考虑到我只想添加文档参考,为什么它们不一样?这是预期的吗?如果是,有人可以解释吗?
答案 0 :(得分:0)
您必须考虑_changes供稿未完全订购。根据数据库的节点和分片集计算更改。 CouchDB从不同的分片中检索更改,然后将它们组合成一个流。
变更馈送的序列号背后的逻辑非常复杂,并且反映了已响应变更馈送请求的每个分片的状态。
如果您解码seq binary_to_term(couch_util:decodeBase64Url(EncodedStringHere))
的字符串部分,您将看到用于组成该文档的chages条目的分片的状态。
这里的问题是,您不能依赖更改供稿顺序,因为它可能会更改。