我有一个巨大的主数据库的CouchDB和从只读CouchDB的数据库,与主数据库同步。
由于变化的速度快,和服务器之间的信道是缓慢和不稳定的,我想设置顺序/优先级确定哪些文件是第一位的。 我需要确保具有最高优先级的文件的最新版本肯定,我可以忽略列表的最后文件。
排序,不FILTERING
如果它是不可能的,可能是有什么解决办法?
资源我已经看过:
http://wiki.apache.org/couchdb/Replication
http://couchapp.org/page/index
UPDATE:主数据库实际上是Node.js加载NPM注册表,以便为大多数依赖,在包的列表 。 我试图做代理 ,因为克隆50G总是一段时间后失败。 但事实是“我们不需要90%的模块,但快速和可靠地访问那些我们依靠。”
最简洁的答案是不。
长的答复是,CouchDB的提供ACID保证只在个别文档级,由设计。 复制器将原子更新每个文件复制时(如任何人都可以,复制器只是使用公共API),但不保证订货,这主要是因为它使用多个HTTP连接来提高吞吐量。 您可以配置到1,如果你喜欢,你会得到更好的排序,但它不是万能的。
在bigcouch合并后,所有的赌注都关闭,将有多个来源和多个目标,没有强加的总订单。
CouchDB的,开箱即用,不提供任何选项来控制复制的顺序。 我猜,如果你继续用在主不同的数据库不同的优先级的文件,尽管你可以拼凑在一起的东西。 然后,您可以先复制高优先级的主数据库到从数据库,复制低优先级的数据库后,等
你可以设置过滤的复制或命名的文件复制:
- http://wiki.apache.org/couchdb/Replication#Filtered_Replication
- http://wiki.apache.org/couchdb/Replication#Named_Document_Replication
这两者都是替代复制整个数据库。 你可以做复制的小批量,并责令该批次符合你的优先权。