我知道有时这是一个很好的功能,但如果我需要存储大量数据,那么围绕数据本身就没有其他“元数据”。
有没有办法在CouchDB中禁用版本控制,还是需要使用不同的数据库引擎,比如Mongo?
答案 0 :(得分:17)
版本控制不是CouchDB的功能 它是将数据写入磁盘的方式的核心功能,并预处理与其他节点的复制冲突解决方案。 不历史机制。
非常遗憾的是,没有比version
更好的术语来引用先前的文件副本。因为version
对大多数开发人员来说意味着存储了historical
。这不是CouchDB中的任何用途。
在CouchDB文档中,不依赖在以前的版本上作为备份或版本控制系统,它们可能随时消失,因为它们被使用主要用于复制冲突检测。但简单的事实是,这不是功能,而是CouchDB的工作原理。
删除过去版本的唯一方法是定期compact数据库。在当前版本的CouchDB中,可以使用挂钩到文档更新的脚本启用,并根据高水位阈值触发半自动压缩。通常,这是在批量更新大量文档后手动完成的,您知道从特定于应用程序的角度来看这可能是有益的。
也就是说,如果您没有更新文档,则不会生成历史记录,也不需要这样做。
答案 1 :(得分:4)
您可以尝试_revs_limit API(例如/ database / _revs_limit)。我从未使用过它我只是在这个链接上阅读http://wiki.apache.org/couchdb/Security_Features_Overview
答案 2 :(得分:0)
Couchbase single server 2.0 developer preview还在CouchDB的未来版本中自动压缩其他功能和改进which should be also present。这可以帮助您根据某些设置自动删除旧文档版本。