Couchdb 如何触发或检查链式map reduce(dbcopy)的状态

Couchdb 如何触发或检查链式map reduce(dbcopy)的状态,couchdb,cloudant,bigcouch,Couchdb,Cloudant,Bigcouch,有了标准的CouchDB视图索引,我可以灵活地反省陈旧与新鲜。如何获得的类似功能 CouchDB视图查询新鲜度 磁盘上的当前索引,可能已过时:stale=ok 磁盘上的当前索引,但触发更新:stale=update\u after 最新的索引,即使这需要更新索引:去掉陈旧标志(又称陈旧=false) CouchDB视图新鲜度内省 我可以将DB的update\u seq与设计文档的update\u seq进行比较,这可以通过视图查询中的update\u seq=true或从GET/DB/\u

有了标准的CouchDB视图索引,我可以灵活地反省陈旧与新鲜。如何获得的类似功能

CouchDB视图查询新鲜度
  • 磁盘上的当前索引,可能已过时:
    stale=ok
  • 磁盘上的当前索引,但触发更新:
    stale=update\u after
  • 最新的索引,即使这需要更新索引:去掉陈旧标志(又称陈旧=false)
CouchDB视图新鲜度内省 我可以将DB的
update\u seq
与设计文档的
update\u seq
进行比较,这可以通过视图查询中的
update\u seq=true
或从
GET/DB/\u design/foo/\u info
获得

大沙发警告 BigCoach的DB分区和多个服务器稍微影响了这一点。例如,
update_seq
是一个组合,只能在公差范围内进行比较
stale=false
可能会选择与
stale=ok
不同的碎片,后者可能或多或少是最新的;尽管没有办法为所有节点(或为将由
stale=false
查询选择的特定节点)获取
update\u seq
,但快速发出多个
/db/\u design/foo/\u info
查询可能会欺骗它。在这里有额外的碎片/分区内省会很好,但是上面的内容仍然适用于我的目的

Cloudant的
dbcopy
dbcopy
具有大致相同的“最终一致性”特征。在链接数据库中查询文档大致类似于使用
group=true&stale=ok
查询原始视图。大多数情况下,这很好。但是文档没有给出以下方面的任何提示:

  • 如何查询当前的
    dbcopy
    状态?DB是否认为自己是最新的或是在IOQ中等待轮换的视图更改?如果不是最新的,大概有多陈旧
  • 如何触发或提升
    dbcopy
    的优先级(如
    stale=update\u after
    stale=false
    )。例如,我想要一些类似于
    POST/origin\u db/\u design/foo/\u view/bar/\u dbcopy
    的东西,它将强制将简化后的结果立即推送到
    dbcopy
    db(可以选择先更新origin view)
  • 如果链接数据库以某种方式不同步(例如,直接在数据库中删除或更新文档,而不是通过
    dbcopy
    机制,或者
    dbcopy
    机制丢失了一些文档),是否可以检测到这种情况?如何纠正呢?是否有
    dbcopy
    “重置按钮”
如何查询当前的dbcopy状态?DB是否认为自己是最新的或是在IOQ中等待轮换的视图更改?如果不是最新的,大概有多陈旧

我们正在寻找一种更好的方法,但目前获取dbcopy当前状态的唯一方法是将视图中的记录与目标数据库中的文档进行比较

是否有dbcopy“重置按钮”


您可以通过强制重新生成源代码视图来重新触发dbcopy。这可以通过更新设计文档来实现,以便视图签名发生更改-例如,向现有视图添加空白或注释。这有点不雅观,但会导致重新运行dbcopy。

谢谢。我期待将来有更好的内省方法。唉,改变源代码视图比不雅更糟糕;它也可能非常慢。同样,将视图中的行与targetr DB行进行比较也可能非常慢(尽管我们有一个助手方法可以做到这一点)。我们使用dbcopy的主要原因是,数据集通常太大,无法完整地存储。:)