我最近一直在研究B+树和T树。似乎有一种趋势,B+树用于磁盘上的索引,而T树用于内存。
我相信这是由于磁盘I/O,但我找不到任何东西来证实这一观点。我的假设是正确的吗?
此外,如果T树的磁盘访问可以通过缓存限制为日志B,那么它们在logB N上的性能就不能超过B+树吗?
发布于 2013-02-19 02:32:01
T-Tree本质上是一个二叉树。因此,树的深度类似于T树的log2(N/B)与B+Tree的logB(N) (N=#data项,存储在B+Tree的每个node=branch因子中的键的B=number )。这些都是近似值,因为两个树在每个节点中都没有固定数量的项目。无论如何,对于大N,B+Tree将在该指标上轻松取胜。在统一内存访问的假设下,这个数字并不重要,但在辅助存储上它确实很重要,因为它大致相当于辅助存储访问的数量。这在具有分层存储器的现代机器上也很重要(最初的T-Tree论文在Vax 11/750上测试)。
我在上面围绕如何为各自的环境更新这两个结构做了一些假设。我相信他们是对称和公平的。首先,我假设数据和密钥通过引用存储在内存中,并通过复制存储在辅助存储中。如果不能以这种方式调整结构,对于T-tree来说将是灾难性的,T-tree的设计核心是统一的访问成本,因为每个键比较都需要外部访问。对于非固定大小的数据,在这两种情况下都需要一些其他的包装调整(并在现实世界中使用)。
https://stackoverflow.com/questions/14942049
复制相似问题