【发布时间】:2013-10-02 08:09:56
【问题描述】:
我阅读了 B 树并了解了它们的输入、删除方法。我读到这样的介绍:
当我们在磁盘上构建结构时,我们必须处理某些现实 访问和传输时间:
- 对磁盘的随机访问通常需要大约 10-20 毫秒 访问时间来定位磁头并等待数据上来 它。
- 一旦磁头位置正确,数据可以按以下速率传输 超过 100 万字节/秒。
- 然后观察不同大小的总传输时间如何表现 块(假设相当快的 10 毫秒访问时间和 1 兆字节/秒 传输率)
因此,B 树数据结构是为从磁盘提供服务而设计的(这使得它们非常适合数据库)。但是当我尝试实现它时,我遇到了这个问题。
普通 B 树图显示指向子节点的指针,然后下降到叶子。
但是我如何在磁盘上做指针?像文件名吗?
【问题讨论】:
-
存储在磁盘上的每条记录都是逻辑等价物。的一个节点。许多节点存储在一个文件中。只需跟踪 head 记录的位置,每个记录都指向其子项的偏移量。正如内存是线性资源一样,您也可以将保存记录的文件视为线性资源。每条记录将包含一个有效负载和一对用于定位子级的偏移量。
-
如果每条记录都是一个节点,那么偏移量是多少?什么是这样的记录,文件?和偏移量,file_names ??或者一切都在一个大文件中,偏移量是该文件中该节点位置的偏移量?
-
只是提醒你——指针只不过是一个地址,一个内存块的位置。这也适用于文件,因为它们可以被视为一些持久内存的块......
标签: c++ database algorithm data-structures