我正在尝试设计一个由固定大小的页面组成的数据库索引文件,每个页面都包含一个指向实际数据文件的(键,指针)记录集合。
基于页面的设计使一切变得复杂。在我看来,最天真的方法是我应该按照排序顺序保存记录(即物理排序,如Page0有记录0 1 3 6,Page1有记录,7 8 12 15,......等),但我仍然无法使用,例如二进制搜索已排序的文件,因为记录不是顺序的,而是驻留在页面中(具有页眉,可用空间等)。
有人可以提供一些关于如何使用二进制搜索来寻找带有页面的完全排序索引文件的指导吗?
编辑:基于页面的btree实现现在对我来说太复杂了。我希望在实现上述更简单的方法之后实现这一目标。
答案 0 :(得分:1)
我后来成功地做到了这一点。
阅读中间的页面。检查其第一个和最后一个记录(如果页面未在内部排序,则记录具有最小/最高索引的记录)。根据您的搜索键向右或向左移动。循环。
答案 1 :(得分:0)
答案 2 :(得分:0)
最简单的事情通常是建立你想要使用的索引并将其保存在内存中。这样,除了索引方式之外,您还可以优化数据存储和访问。
当我实现类似的东西时,我将索引保存为文件中的一个大块,然后将数据作为另一个更大的块。