Memory 在磁盘上移动数据时,分形树索引是如何执行的?

Memory 在磁盘上移动数据时,分形树索引是如何执行的?,memory,data-structures,indexing,Memory,Data Structures,Indexing,我正在学习分形树索引,比如在。我对它的策略非常着迷,它通过在大部分时间内写入CPU缓存,而很少写入较慢的RAM内存,从而使写入速度更快。然而,分形树索引最终必须对RAM进行大的写操作,然后对磁盘进行大的写操作,然后在磁盘上完全进行大的写操作。这就是我感到困惑的地方。分形树索引能有效地做到这一点吗?比如说,在最坏的情况下,B-树更新磁盘的效率比B-树更高?另外,磁盘上的巨大重写对数据的查找时间有什么影响?反之亦然,对这些数据进行多次查找对巨大的重写过程有什么影响 作为回答此问题的上下文,您应该知道

我正在学习分形树索引,比如在。我对它的策略非常着迷,它通过在大部分时间内写入CPU缓存,而很少写入较慢的RAM内存,从而使写入速度更快。然而,分形树索引最终必须对RAM进行大的写操作,然后对磁盘进行大的写操作,然后在磁盘上完全进行大的写操作。这就是我感到困惑的地方。分形树索引能有效地做到这一点吗?比如说,在最坏的情况下,B-树更新磁盘的效率比B-树更高?另外,磁盘上的巨大重写对数据的查找时间有什么影响?反之亦然,对这些数据进行多次查找对巨大的重写过程有什么影响

作为回答此问题的上下文,您应该知道:

  • 关于分形树索引的所有知识我都是在
  • 对于旋转介质硬盘的工作原理,我没有一个好的心智模型
  • 当我说“巨重写”时,基本上发生的是,你有两个相同长度的排序数组(大小
    2^largeNumber
    ),然后你将它们写入一个排序的数组(大小
    2^(largeNumber+1)

我建议您观看我的视频,这可能会让您更好地了解分形树索引的工作原理。当索引不适合主内存时,分形树索引能够缓冲大量消息,当缓冲区溢出时,这些消息会慢慢向下推树。当它们最终到达叶子节点时,只有一个IO来检索叶子并应用所有消息。分形树索引在单个IO上聚合了许多操作,并且写入操作被高度压缩,因此写入IO的次数明显减少。读取IO在读取高度压缩的数据时也会显著减少


我不确定这是否完全回答了您的问题,但希望它能有所帮助。

我想使用3个磁盘总是可以有效地进行磁盘内写入。您只需在磁盘A和B上保留两个已排序的列表,并将它们播放到写入C的缓冲区中。如果您真的偷偷摸摸,您可能能够将副本写入磁盘,以便在任何时候,用于添加文档的磁盘都不会是服务于查询请求的磁盘。有趣。@tmcallaghan但在tokutek的演示中,一些不同的东西显示为b-树。您的演示文稿是关于与B-Tree之类的东西连接的消息基础架构的,在B-Tree中,缓冲区被刷新到叶子上,但在.PDF演示文稿中,我们有“按指数增长的大小排序的数组”。该.PDF演示文稿中没有提到任何消息基础结构。你能评论一下吗?对不起,我的语言不好,当然可以。那张PDF是很久以前的,一路上变化很大。您可以相信我的YouTube视频是实际实现的。@tmcallaghan您能评论这个视频吗?这里显示了类似“排序数组堆栈”的内容。它与现实生活有什么关系?谢谢