简单搜索查询(如查询单个WHERE
子句)的日志结构合并树中最坏的时间复杂度是多少?
是O(log N)吗? O(N * Log N)?别的什么?
多重查询怎么样,比如在键值数据库中搜索多个WHERE
子句?
The wikipedia page on LSM trees is currently lacking this info。
答案 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)。树的数量是常量,因此它不会影响搜索时间的顺序。