我使用cloudant couchdb并且我注意到数据库上的“_changes”查询返回的“update_sequence”不是数字,例如。
"437985-g1AAAADveJzLYWBgYM..........".
更重要的是,响应不稳定:如果查询db 3次,我得到3个不同的update_sequences。
“update_sequence”,“since”等已知的语义有什么变化吗?
此致 范哲利斯
答案 0 :(得分:2)
解释罗伯特先前给出的答案:
更新序列值不透明。在CouchDB中,它们当前是整数,但在Cloudant中,该值是数据库的每个分片的序列值的编码。随着群集支持的增加(通过BigCouch合并),CouchDB将来可能会采用此方法。
在CouchDB和Cloudant中,_changes将返回一个“seq”值,如果您将其作为“since”传回,则每一行都保证返回更新的更新。 如果发生故障转移,可能包括您已经看过的更改。
因此,从特定更新序列开始读取更改的正确方法是这样的;
不要解释这两个值,你无法比较它们的相等性。如果需要,您可以在步骤2中记录任何“seq”值作为当前检查点seq值。你不能做的关键是比较它们。
答案 1 :(得分:1)
它会跳转,表示是一个打包的base64字符串,表示数据库每个分片的各种副本的update_seq。它不能是一个简单的整数,因为它是分布式数据库的快照。
对于CouchDB,将update_seq视为不透明的JSON,你会没事的。