使用标准的 CouchDB 视图索引,我可以灵活地反思陈旧与新鲜。如何获得Cloudant 的类似dbcopy
功能?
CouchDB 查看查询新鲜度
- 磁盘上的当前索引,可能是陈旧的:
stale=ok
- 磁盘上的当前索引,但触发更新:
stale=update_after
- 最新索引,即使这需要更新索引:不要使用过时标志(又名
stale=false
)
CouchDB 视图新鲜度自省
我可以将 DBupdate_seq
与设计文档进行比较update_seq
,可以update_seq=true
在视图查询中或从GET /db/_design/foo/_info
.
大沙发注意事项
BigCouch 的数据库分区和多台服务器稍微模糊了这一点。egupdate_seq
是复合物,只能在公差范围内进行比较;stale=false
可能会选择不同的分片stale=ok
,可能或多或少是最新的;虽然没有办法获得update_seq
所有节点(或stale=false
查询选择的特定节点)的方法,但可以通过快速发出多个/db/_design/foo/_info
查询来欺骗它。在这里有额外的分片/分区内省会很好,但上面的内容仍然适用于我的目的。
克劳德的dbcopy
dbcopy
具有大致相同的“最终一致性”特征。查询链式数据库中的文档大致类似于使用group=true&stale=ok
. 这很好,大多数时候。但是文档没有给出以下任何指示:
- 如何查询当前
dbcopy
状态?例如,数据库是否认为自己是最新的,或者是否在 IOQ 中等待轮到他们的视图更改?如果它不是最新的,大致有多陈旧? - 如何触发或提高
dbcopy
(如stale=update_after
或stale=false
)的优先级。例如,我想要一些类似的东西POST /origin_db/_design/foo/_view/bar/_dbcopy
会立即强制将减少的结果推送到dbcopy
数据库(可选地首先更新原始视图)。 - 如果链接的数据库以某种方式不同步(例如,直接在数据库中删除或更新文档而不是通过
dbcopy
机制或dbcopy
机制丢失了一些文档),可以检测到吗?如何纠正?有dbcopy
“重置按钮”吗?