我想知道 CouchDB 数据库 B 树中实际存储了什么? CouchDB: The Definitive Guide告诉数据库 B 树用于仅附加操作,并且数据库存储在单个 B 树中(除了每个 View 的 B 树)。
所以我猜附加到数据库文件的数据项是修订 文件,而不是整个文件:
+---------|### ...
| |
+------|###|------+ ... ---+
| | | |
+------+ +------+ +------+ +------+
| doc1 | | doc2 | | doc1 | ... | doc1 |
| rev1 | | rev1 | | rev2 | | rev7 |
+------+ +------+ +------+ +------+
这是真的吗?
如果为真,那么如何根据这样的 B 树来确定文档的当前修订版?
这是否意味着 CouchDB 需要一个单独的“ View ”数据库来索引文档的当前修订以保留 O(log n) 访问权限?在构建这样的索引时,它不会导致竞争条件吗? (据我所知,CouchDB 不使用写锁)。
最佳答案
磁盘上的数据库文件是仅附加的;然而,B 树在概念上是就地修改的。当您更新文档时,
写入根节点时,即有效地“提交”了较新的修订版。要查找文档,您可以从文件末尾开始,获取根节点,然后找到您的文档 ID。最新版本将始终可以通过这种方式访问。
关于indexing - CouchDB 的 B 树数据库中实际存储了哪些数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2668834/