使用标准的CouchDB View 索引,我可以灵活地进行自省(introspection)与新鲜度的内省(introspection)。如何获得Cloudant's dbcopy
feature的类似功能?
CouchDB View 查询新鲜度
stale=ok
stale=update_after
stale=false
)CouchDB查看新鲜度内省(introspection)
我可以将数据库的
update_seq
与设计文档的update_seq
进行比较,后者可以在 View 查询中使用update_seq=true
或从GET /db/_design/foo/_info
获得。BigCouch警告
BigCouch的数据库分区和多个服务器对此造成了轻微的影响。例如。
update_seq
是合成的,只能在容差范围内进行比较; stale=false
可能会选择与stale=ok
不同的碎片,而碎片可能会或多或少是最新的。尽管没有办法获取所有节点(或update_seq
查询将选择的特定节点)的stale=false
,但可以通过快速发出多个/db/_design/foo/_info
查询来欺骗它。在这里进行附加的分片/分区自省(introspection)会很好,但是以上内容仍可用于我的目的。Cloudant的
dbcopy
dbcopy
具有大致相同的“最终一致性”特征。在链接数据库中查询文档大致类似于使用group=true&stale=ok
查询原始 View 。大部分时间都可以。但是文档没有提供以下指示:dbcopy
状态?例如。数据库是否认为自己是最新的,或者 View 更改是否正在等待IOQ?如果不是最新的,它大概有多陈旧? dbcopy
的优先级(如stale=update_after
或stale=false
一样)。例如。我想要POST /origin_db/_design/foo/_view/bar/_dbcopy
方面的内容,这些内容将立即将减少的结果强制推到dbcopy
DB中(可选地,先更新原始 View )。 dbcopy
机制或dbcopy
机制错过了一些文档),可以检测到吗?如何纠正?是否有一个dbcopy
“重置按钮”? 最佳答案
我们正在寻找一种更好的方法,但是目前获取dbcopy当前状态的唯一方法是将 View 中的记录与目标数据库中的文档进行比较。
您可以通过强制重新构建源 View 来重新触发dbcopy。这可以通过更新设计文档以使 View 签名更改-例如向现有 View 添加空格或注释。这有点不雅致,但会导致dbcopy重新运行。
关于couchdb - 如何触发或检查链接映射图减少的状态(dbcopy),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16591853/