B树索引是如何利用在硬盘上的?
游离失所 2016-08-09 03:23:14 假如B树存储的是索引的键,以及键所对应的内容的硬盘上存储地址。
那么问题来了。
1.索引往往都是很大的,往往都存在硬盘上。我不可能一次性都读取出来。然后在内存中来进行查找比对,然后再到硬盘对应的位置把数据取出来。这样我还用B树来构建索引干鸟。那数据库索引是怎么工作的呢?
2.基于问题1。假设B树不但存储了索引的键,还有对应内容的地址,他还存储了他的孩子节点的地址。那么我们可以每次只读取一个节点,然后进行比较。如果没找到,则根据条件跳到下一个节点继续查找。这样没问题,但是这个索引文件我们如何构造?一个个节点的地址如何生成?又如何通过程序根据这些地址去获取到数据?最后又如何将一个个节点的内容保存起来生成一个索引文件?
简单的来说,我就是想自己构建一个非常微型的数据库。。关于数据库索引的文章非常多,也有很多结合了硬盘来说。。但都非常不全面,没有说到具体怎么去在硬盘上构建索引,以及利用索引在硬盘上进行查找。。希望大家帮忙解答下我心中的疑问,我非常苦恼这个问题。。
有学习材料更好。。语言最好是C++或C#的。。