我想知道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/