tree - Log-Structured-Merge 树键查找复杂度
问题描述
我目前正在研究 O'Neil 等人描述的 Log-Structured-Merge 树。人。关于 LSM 树中最糟糕的查找复杂性,我并不完全清楚。驻留在磁盘空间上的组件将其数据存储在 B 树中,对吗?
正如论文所述:
通常,为了保证 LSM 树中的所有条目都已被检查,精确匹配查找或范围查找必须通过其索引结构访问每个组件 (C_n)。
这向我表明,通过驻留在磁盘空间中的 Cn 组件查找最坏情况是 O(n)。
但这只是遍历组件,而不是遍历组件内部的键值对。由于键值对存储在 B 树中,查找复杂度为 O(log n),这是否意味着 LSM 树中的查找复杂度为 O(n log n)?
解决方案
我认为,您正在混淆组件的数量(我们称之为 M)和每个组件的数据点数量,让我们将所有组件的最大值称为 N。
复杂度为 O(M*log(N))。
通常,LSM 树的 M=2,因此查找的复杂度对应于单个树中查找的复杂度:O(log(N))。
推荐阅读
- c# - 生命周期范围是否包含对非一次性组件的引用?
- elasticsearch - ElasticSearch,多索引搜索
- flutter - TextEditingController 返回 null ,不考虑我在文本字段中键入的输入
- c - 如何在平方根函数中使用存储为字符的数字?
- javascript - 如何通过javascript中的if语句更改输入ID内的值
- python - 脚本 sqlformat.exe 安装在目录中,该目录不在 PATH 上
- r - R中是否有一个函数来填充变量中的缺失数据
- kubernetes - 具有单个 ALB、多个命名空间和外部 DNS 的 EKS 入口
- javascript - 将状态数据传递给其他组件
- clojure - 在 JNI 创建的线程中从 Clojure 调用 Java 互操作时如何防止 ClassNotFoundException?