如何在CouchDB中禁用版本控制?

Rad*_*mko 8 couchdb

我知道有时这是一个很好的功能,但如果我需要存储大量数据,那么围绕数据本身就没有其他"元数据".

有没有办法如何在CouchDB中禁用版本控制,或者我是否需要使用不同的数据库引擎,如Mongo?

小智 17

版本控制不是CouchDB的一个特性,它是将数据写入磁盘并与其他节点预先形成复制冲突的核心功能.它不是历史机制.

非常不幸的是,没有一个更好的术语,而不是version提到以前的文件副本.因为version大多数开发人员意味着存储的东西historical.这不是CouchDB中的用途.

它遍布CouchDB文档,不依赖于以前的版本作为备份或版本控制系统,它们可能随时消失,因为它们主要用于复制冲突检测.但一个简单的事实是,这是不是一个功能,它仅仅是CouchDB的是如何工作的.

删除过去版本的唯一方法是定期压缩数据库.在当前版本的CouchDB中,可以使用挂钩到文档更新的脚本启用,并根据高水位阈值触发半自动压缩.通常,这是在批量更新大量文档后手动完成的,您知道从特定于应用程序的角度来看这可能是有益的.

也就是说,如果您没有更新文档,则不会生成历史记录,也不需要这样做.

  • +1.拉德克,或许会问自己:这是一个不成熟的优化吗?为什么我要避免CouchDB修订?因为它感觉不对啊?或者因为我有证据(或有充分理由)表明MVCC会有太多负担?(**是的!**这是真的,CouchDB强加磁盘空间,磁盘i/o和客户端负担)在我的(jhs)体验中,MVCC*感觉*错误但在现实中没有问题,*但是*,对于高 - 卷,无历史数据,CouchDB并不理想.也许是Redis或Membase?(Membase计划将来通过Couchbase与CouchDB兼容.) (2认同)