我知道如何在内存中实现B树,但不清楚如何将B树存储在磁盘上。我认为有两个主要的区别:
- 内存指针和磁盘地址之间的转换,请参见此帖子。
- 如何在插入新的k/v项时拆分页面?在内存中很容易实现。
这完全取决于您使用的数据库管理系统。如果想知道在MS SQL Server中如何实现,需要了解以下内容:
使用IAM和GAM(或SGAM),您可以拆分页面-只需将页面的一部分(应该溢出的部分)移动到文件上的另一个页面即可。
IAM和GAM也是您第一个问题的答案。
这些名称大多来自于MS SQL Server,但我非常确定,在其他DBMS中,解决方法相当相似。
希望能对您有所帮助。
我的建议是看一下书籍数据库系统实现。
第2章“数据存储”和第3章“表示数据元素”将为您提供有关此问题的一些提示。
第4章索引结构中有一节关于B树的内容。
这是我迄今为止在这个主题上找到的最好的信息来源。