gpt4 book ai didi

c# - 使用 b-tree 索引器访问磁盘

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:09:41 24 4
gpt4 key购买 nike

iv'e 实现了一个 B+tree ,我的叶节点指向行(记录)位置的开始在 CSV 文件中,

我的问题是:

我的树被设计成除了树 - ORDER 值即(每个树节点中的指针数)

据我了解,顺序值是假设通过能够在一次磁盘访问操作中将整个磁盘 block 读入内存来优化磁盘访问。

我不明白这是如何发挥作用的,假设我知道磁盘的 block 大小我根据一些计算给订单一个合适的值

例如:(order * sizeof( Record ) ) < block_size

访问数据:

我所说的指针包含文件路径和到行(记录)开头的偏移量

  StreamReader reader ;
reader.BaseStream.Position = leaf.Pointers[i].offset ; // leaf is a leaf node in the tree
string record = reader.ReadLine();

1) ReadLine() 操作是否相当于一次磁盘访问? 如果是这样的话,我访问我的数据的方式将是相同的(磁盘访问明智而不是搜索明智),不会受到我的树节点的 ORDER(大小)的影响。

2) 如何根据磁盘 block 大小更改要优化的磁盘访问方法?

最佳答案

1) is the ReadLine() operation equivalent to one disk Access ? if so the way in witch i access my data would be the same (Disk Access wise not search wise ) ,would not be affected by the ORDER (size) of my tree nodes .

是的,你的ReadLine()是磁盘访问;但是,这并不适用于您。您实际上是在“行外”存储所有数据。典型的 BTree 或 B+Tree 会将数据直接存储在树结构中,而不是相关文件中。您对 BTree 机制本身的细节略有了解,所以我无法告诉您订单/大小会产生什么影响。您是存储 BTree 结构还是只是构建内存中索引?如果已存储,那么如何在图中保存/加载节点?

2) how would one change the disk access method to be optimized according to disk block size ?

此回复的第一部分可能会对此有所启发。基本上,您需要不再使用相关的 CSV 文件,而是将数据存储在树本身中。

关于c# - 使用 b-tree 索引器访问磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6625552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com