在SSD时代编程

时间:2011-07-04 12:07:37

标签: tree b-tree ram ssd

我想知道即将到来的SSD技术如何影响(mosty系统)编程。出现了大量的问题,但这里有一些最明显的问题:

  • 可以在接近内存速度的任何地方考虑磁盘访问速度吗?
  • 如果没有,它或者只是一个临时状态,还是有一些根本原因导致SSD不会像RAM一样快?
  • B树(及其表兄弟)是否仍然相关?
  • 如果是这样,是否对SSD制作的B-Trees(B + -Trees,R-Trees等)进行了调整或修改?如果没有,是否有为SSD制作的其他数据结构?

6 个答案:

答案 0 :(得分:7)

SSD确实消除了读取的寻道时间问题,但是在它们上有效地写入是非常棘手的。我们一直在研究这些问题,同时寻找将SSD用于Acunu存储核心的最佳方法。

你可能会发现这些有趣:

答案 1 :(得分:3)

  • 目前基于闪存的SSD并不像主存储器DRAM那么快。非易失性存储器技术最终是否会像DRAM一样出色?有一天。有许多有前途的技术正在开发中。
  • SSD性能的一个瓶颈是SATA接口。随着技术的进步,SSD将连接到DRAM或PCIe总线。
  • 只要在块中执行内存访问,B树仍然是相关的。甚至DRAM也是以块的形式访问的,而流行的块则缓存在CPU中。虽然难以实现,但设计用于在DRAM中运行的B树可以胜过其他类型的易失性搜索树。然而,在树中有数百万个条目之前,性能优势可能不会很明显。
  • 为SSD实施的B树受益于块分配的改进。当前一代闪存SSD更喜欢顺序排序的写入。随着B树的增长(或更改),应按顺序分配新块以获得最佳写入性能。基于日志的存储格式应该做得很好,但我没有看到任何可扩展的实现。由于顺序和随机排序写入之间的性能差距变窄,分配顺序将变得不那么重要。

答案 2 :(得分:2)

  1. RAM不必记住重置/重启后的状态。我非常怀疑SSD会像RAM一样快。
  2. B-Trees仍然非常相关,因为您仍尝试最小化磁盘读取。

答案 3 :(得分:1)

很容易想到一个因素......

由于制造磁头在相隔很远的磁道之间移动的相对高成本,因此将硬盘驱动器视为磁带驱动器的趋势越来越强烈。这导致了优化数据访问模式的努力,使得头部可以在表面上平滑移动而不是随机搜索。

SSD实际上消除了寻求惩罚,因此我们可以回过头来对磁盘上的数据布局不要太担心。 (更准确地说,由于磨损平衡问题,我们有一系列不同的担忧)。

答案 4 :(得分:0)

我在SSD和RamDisk上测试了构建时间,SSD速度要快一些。 同样的结果是我的同事完全不同的设置 - 硬盘驱动器的构建时间是9分钟,RamDisk 3分30秒,SSD 3分0秒。

答案 5 :(得分:0)

虽然SSD的寻道时间比HDD的寻道时间要好一两个数量级,但与RAM相比,这些时间仍然很重要。这意味着与寻道时间相关的问题并不那么糟糕,但它们仍然存在。吞吐量仍远低于RAM。除存储技术外,连接至关重要。 RAM在物理上非常靠近CPU和主板上的其他组件,并使用特殊总线。大容量存储设备没有这个优势。存在电池支持的RAM模块包可以作为超高速硬盘替代品,但如果它们通过SATA,SCSI或其他典型的磁盘接口连接,它仍然比系统RAM慢。

这意味着B-tree stil是重要的,为了获得高性能,您仍然需要处理RAM中的内容以及永久存储中的内容。由于整个架构和物理限制(非易失性写入可能总是比易失性写入慢),我认为这个差距可能会变小但我怀疑它会在任何可预见的未来完全消失。即使你看看“RAM”,你真的没有一个单一的速度,但有几个级别更快,更快(但更小,更昂贵)的缓存。所以至少还有一些不同之处。