Algorithm 如何确定b树的顺序

Algorithm 如何确定b树的顺序,algorithm,data-structures,b-tree,Algorithm,Data Structures,B Tree,据说B树在大量数据无法装入主内存的情况下特别有用 我的问题是,我们如何决定B树的顺序,或者在一个节点中存储多少个键?或者一个节点应该有多少子节点 我发现到处都有人在每个节点上使用4/5个键。它是如何解决海量数据和磁盘读取问题的?通常,您会选择顺序,使生成的节点尽可能大,同时仍适合块设备页面大小。如果您试图为磁盘上的数据库构建一个B树,您可能会选择这样的顺序,即每个节点都适合一个磁盘页面,从而最大限度地减少执行每个操作所需的磁盘读写次数。如果要构建内存中的B树,可能会选择二级或三级缓存线大小作为目

据说B树在大量数据无法装入主内存的情况下特别有用

我的问题是,我们如何决定B树的顺序,或者在一个节点中存储多少个键?或者一个节点应该有多少子节点


我发现到处都有人在每个节点上使用4/5个键。它是如何解决海量数据和磁盘读取问题的?

通常,您会选择顺序,使生成的节点尽可能大,同时仍适合块设备页面大小。如果您试图为磁盘上的数据库构建一个B树,您可能会选择这样的顺序,即每个节点都适合一个磁盘页面,从而最大限度地减少执行每个操作所需的磁盘读写次数。如果要构建内存中的B树,可能会选择二级或三级缓存线大小作为目标,并尝试在不超过该大小的情况下将尽可能多的键装入节点。在任何一种情况下,您都必须查找规格以确定要使用的尺寸

当然,你也可以通过实验来确定这一点。:-)


希望这有帮助

正如您所说,当需要大量磁盘读取时,B树非常有用。在这种情况下,数据以块的形式读取。因此,树的顺序由块大小、键字段大小和指针大小决定。非常感谢您的回答。但是构建内存中的B树有什么意义呢?我的印象是,它们比其他自平衡树(AVL、红黑等)更好,只是在我们有无法放入内存的巨大数据的情况下。当所有示例都在一个节点中放置4/5个整数时,这仅仅是为了举例,没有任何实际意义吗?B树最初是为数据库设计的,但由于内存缓存的原因,它们现在有时被用在主存中。至于4或5,我猜它们只是例子。从教数据结构的经验来看,很难将较大的B树放在幻灯片上。再次感谢。我能请你注意另一个愚蠢的问题吗-