couchdb如何检索所有以前的修订版?

时间:2011-06-22 13:23:00

标签: indexing couchdb b-tree

据我所知,CouchDB的Btree实现实际上使用了Shadowing技术,每次更新都会产生新的root,下面摘录自PDF(它看起来像是实现了比传统阴影更好的算法)。

  

阴影意味着要更新   在磁盘页面上,读取整个页面   进入内存,修改,以及以后   在备用磁盘上写入磁盘   地点。当一个页面被遮蔽时   磁盘上的位置更改,这会创建   需要更新(和阴影)   页面的直接祖先   新地址。阴影传播   直到文件系统根目录。

couchdb如何尽可能实现获取所有叶子修订(因为通过压缩过程删除了一些修订)?沙发内部是否存储指向先前版本的指针?

由于 常

2 个答案:

答案 0 :(得分:6)

Couch不保证可以检索到旧版本的文档:

  

术语版本和修订版可能听起来很熟悉(如果您正在编程   没有版本控制,立即放弃这本书并开始   学习一个流行的系统)。使用新版本的文档   更改与版本控制很相似,但有一个重要的区别:   CouchDB不保证保留旧版本   周围。

资料来源:O'Reilly CouchDB权威指南,第40页。

这是为什么?因为 CouchDB不是版本控制系统:版本控制机制用于并发访问数据库。权威指南在第14-15页接触到了这一点。

答案 1 :(得分:4)

祝你好运,CouchDB提交者和社区领袖Adam Kocoloski explained this最近在邮件列表上。

他说的是这样的:

“ID btree中的每个叶子[存储]包含指针的修订树 所有文档的可用修订版。检索旧版本(压缩前) 或者文档的冲突版本需要与检索完全相同的IO数量 现在的那个。“

如果我理解正确的话,阴影根本不用于隐藏旧的文档修订版,而是用于整个版本树,它们不再有意义。