Cha*_*ang 6 indexing couchdb b-tree
据我了解,CouchDB的B树实现实际使用阴影技术,每次更新会产生新根,从这个以下摘录PDF(它看起来像实现比传统的阴影更好的算法).
阴影意味着要更新磁盘上的页面,整个页面将被读入内存,进行修改,然后在备用位置写入磁盘.当页面被遮蔽时,它在磁盘上的位置会发生变化,这就需要使用新地址更新(和隐藏)页面的直接祖先.阴影传播到文件系统根目录.
couchdb如何尽可能实现获取所有叶子修订(因为通过压缩过程删除了一些修订)?沙发内部是否存储指向先前版本的指针?
谢谢张
Chr*_*ris 6
Couch不保证可以检索到旧版本的文档:
术语版本和修订版本可能听起来很熟悉(如果您在没有版本控制的情况下编程,请立即删除此书并开始学习其中一个流行的系统).使用新版本进行文档更改非常类似于版本控制,但是有一个重要区别:CouchDB不保证保留旧版本.
资料来源:O'Reilly CouchDB权威指南,第40页.
为什么是这样?因为CouchDB不是版本控制系统:版本控制系统用于并发访问数据库.权威指南在第14-15页上涉及到这一点.
Jas*_*ith 4
幸运的是,CouchDB 提交者和社区领袖 Adam Kocoloski最近在邮件列表上解释了这一点。
他是这样说的:
“ID btree 中的每个叶子[存储]一个修订树,其中包含指向文档的所有可用修订的指针。检索文档的旧修订(压缩之前)或冲突版本需要与检索当前版本完全相同的 IO 数量”。
如果我理解正确的话,阴影根本不是用来隐藏旧文档修订的,而是用来隐藏不再有意义的整个修订树的。
归档时间:
14 年,6 月 前
查看次数:
1257 次
最近记录:
13 年,2 月 前