我已经构建了一个我自己的b +树索引,包含对索引进行插入/删除/搜索的所有操作。为了加速插入一个巨大的数据集,我想实现批量加载以及能够实验大数据集。将数据批量加载到b +树中
我一直在试图做的是对数据进行排序并开始填充叶级别的页面。一旦必要,密钥被复制或推送到上层。我始终跟踪不同高度的指数前沿。例如,如果我的索引高度为3(根,包含内部节点和叶子级别的一个级别),我只在内存中保留3页,一旦它们满了或者没有更多数据,我将它们写入磁盘。
问题是要向每个页面写入多少数据才能维护所有单个节点的页面限制。这些限制可以在 here找到。我无法找到任何有用的资源,详细说明批量加载的实施情况,或者确定使用哪种填充比率以确保节点限制的好策略。
任何想法?
为什么你不填满所有的网页,直到他们满了?只要树不退化成病理性病例,理论上的限制在实践中并不重要。 – usr
如果我在很多情况下将每个页面填充到最大容量,我最终会得到一个不平衡的B +树。密钥需要在水平和垂直方向上大致均匀地分布在索引上,这就是为什么存在理论极限。 – Pirooz
您提供的链接表示任何节点的最大容量为b,这意味着它最大满。我不能拿出一个数据集来填充树叶,直到它们满了会导致树不平衡。你能给个例子吗? – usr