Trie和B +树如何比较按字典顺序排序的字符串[按数十亿的顺序]? 它也应该支持范围查询。
来自perf。以及实现复杂性的观点。
Trie和B +树如何比较按字典顺序排序的字符串[按数十亿的顺序]? 它也应该支持范围查询。
来自perf。以及实现复杂性的观点。
我会说这取决于你的意思 范围。
如果您的范围表示为 所有单词以。开头那么一个 Trie 是我说的正确选择。另一方面, Trie 不适合像这样的请求 XX和ZZ之间的所有单词。
注意,分支因子 B+ Tree 影响其性能(中间节点的数量)。如果 h 是树的高度,然后是n最大 ~~ bH。因此h ~~ log(n最大)/ log(b)。
同 n = 1 000 000 000 和 b = 100, 我们有 h ~~ 5。因此,它意味着只有5个指针解除引用从根到叶。它比缓存更友好 Trie。
最后, B+ Tree 无可否认,实施起来比实施起来更难 Trie:它更多的是 Red-Black Tree 复杂程度。
我会说这取决于你的意思 范围。
如果您的范围表示为 所有单词以。开头那么一个 Trie 是我说的正确选择。另一方面, Trie 不适合像这样的请求 XX和ZZ之间的所有单词。
注意,分支因子 B+ Tree 影响其性能(中间节点的数量)。如果 h 是树的高度,然后是n最大 ~~ bH。因此h ~~ log(n最大)/ log(b)。
同 n = 1 000 000 000 和 b = 100, 我们有 h ~~ 5。因此,它意味着只有5个指针解除引用从根到叶。它比缓存更友好 Trie。
最后, B+ Tree 无可否认,实施起来比实施起来更难 Trie:它更多的是 Red-Black Tree 复杂程度。
取决于你的实际任务:
N 孩子 从一个子树,然后一个 特里 是最好的选择,因为您只访问比B + Tree场景更少的节点。