LSM树查找时间

时间:2013-08-11 00:27:57

标签: big-o key-value-store lsm-tree

简单搜索查询(如查询单个WHERE子句)的日志结构合并树中最坏的时间复杂度是多少?

是O(log N)吗? O(N * Log N)?别的什么?

多重查询怎么样,比如在键值数据库中搜索多个WHERE子句?

The wikipedia page on LSM trees is currently lacking this info

I'm trying to make sense of the original paper

2 个答案:

答案 0 :(得分:1)

我也有同样的疑问。

如果您有一系列树,每次都以一个常数因子变小,并且您需要在所有树中搜索一个键,那么成本似乎是 O(log(N)^2)。

假设第一个(二叉)树需要 log_2(N) 个分支到达一个节点。第二个可能是大小的一半,并采用 (log_2(N) - 1) 个分支来查找节点。最小的树的大小将是一些 O(1) 常数,总共大约有 log_2(N) 棵树。对系列求和得到 O(log_2(N)^2).

然而,我想知道是否有一些更聪明的方案,其中任意单键查找、插入或删除的分摊成本为 O(log(N)),但还没有找到答案(还) .

答案 1 :(得分:-1)

对于由LSM树索引的简单搜索,它是O(log n)。这是因为LSM树中最大的树是B树,它是O(log n),其他树是B树的子集,或者在内存树的情况下,更高效的树,这不比O(log n)。树的数量是常量,因此它不会影响搜索时间的顺序。