gpt4 book ai didi

indexing - CouchDB 的 B 树数据库中实际存储了哪些数据?

转载 作者:行者123 更新时间:2023-12-04 15:16:09 30 4
gpt4 key购买 nike

我想知道 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 树在概念上是就地修改的。当您更新文档时,

  • 它的叶节点被写入(通过附加到 DB 文件)
  • 它的父节点被重写以引用新的叶子(当然是通过附加)
  • 重复步骤 2,直到更新根节点

  • 写入根节点时,即有效地“提交”了较新的修订版。要查找文档,您可以从文件末尾开始,获取根节点,然后找到您的文档 ID。最新版本将始终可以通过这种方式访问​​。

    关于indexing - CouchDB 的 B 树数据库中实际存储了哪些数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2668834/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com