B中是否有任何批量加载算法?
我知道在b +树中有批量加载。 我只是想知道在B-Tree中是否有批量加载的算法。 例如,给定一组数据,创建B树的最佳方式是什么?
其实答案是肯定的。
B +树和纯B树的主要区别在于,值实际上存储在前者的叶子中,而后者则会在每个节点中找到值。 因此,B +树允许您以几乎连续的方式存储数据,每个叶包含整个排序数据的连续片段。 对于B树,这不是真的:一个内部节点将包含多个元素,但它们不会是连续的。 整个排序的数据集。
该属性对批量加载至关重要:该过程通过将其切割到将形成B +树叶的数组中而对已排序的数据集进行处理。 因此,对于一棵B型树来说,它看起来不起作用。
如果我们可以按照将内部节点元素组合在一起的方式对数据进行排序,那么问题就解决了。 为了做到这一点,人们必须事先知道这些元素如何分组。 事实证明这是可能的。
让我们调用o
(排序)节点中最小数量的子节点(这与B树顺序的原始定义一致)。 我们认为根节点处于树的最高阶段,叶子处于最低阶段(0阶段)。 对于一棵平衡良好的树,所有的树叶确实会处于同一个阶段。
树组的阶段k在阶段k-1中由至少o
元素隔开元素。 在初始排序之后,我们必须从构成阶段0的已排序数组中提取元素,并将它们分组到不同的数组中以构建阶段1,然后再将该数组再次转换为阶段2的新数组,然后重复该过程直到最新阵列中的元素少于o
元素,这将是根阶段。 从此,可以直接从舞台设置中构建树:
o
元素数组中的每个阶段, 由此产生的树不一定会很好地平衡。 它取决于数据集中条目的数量,以及o
。 应该有可能调整构建阶段时使用的时间间隔,以获得更好的分布式树。
所有需要批量加载B树的工作比B +树更繁琐,但这是可能的。
链接地址: http://www.djcxy.com/p/70865.html上一篇: Is there any algorithm for bulk loading in B
下一篇: Google maps directions API redirecting to map.google.com