我想知道 CouchDB 数据库 B 树中实际存储了什么?CouchDB:权威指南告诉数据库 B-tree 用于仅附加操作,并且数据库存储在单个 B-tree 中(除了 per-view B-trees)。
所以我猜附加到数据库文件的数据项是文档的修订,而不是整个文档:
+---------|### ...
| |
+------|###|------+ ... ---+
| | | |
+------+ +------+ +------+ +------+
| doc1 | | doc2 | | doc1 | ... | doc1 |
| rev1 | | rev1 | | rev2 | | rev7 |
+------+ +------+ +------+ +------+
这是真的吗?
如果是真的,那么如何根据这样的 B-tree 确定文档的当前版本?
这是否意味着,CouchDB 需要一个单独的“视图”数据库来索引文档的当前版本以保留 O(log n) 访问权限?在构建这样的索引时不会导致竞争条件吗?(据我所知,CouchDB 不使用写锁)。