这篇文档属于类型a,即单篇原创研究的学术报告。以下是该研究的详细报告:
本研究的主要作者包括Yi Wang、Jiajian He、Kaoyi Sun、Yunhao Dong、Jiaxian Chen、Chenlin Ma、Amelie Chi Zhou和Rui Mao。他们分别来自深圳大学计算机科学与软件工程学院和香港浸会大学计算机科学系。该研究发表于2024年IEEE第40届国际数据工程会议(ICDE)上。
本研究的主要科学领域是键值存储(key-value store)系统的性能优化,特别是针对基于日志结构合并树(Log-Structured Merge Tree, LSM-Tree)的键值存储系统。LSM-Tree是一种常见的数据结构,能够将随机写操作转化为顺序写操作,从而提高写性能。然而,LSM-Tree的层级压缩(leveled compaction)操作引入了写放大(write amplification)和写停滞(write stall)问题,显著降低了系统性能。新兴的非易失性内存(Non-Volatile Memory, NVM)具有字节寻址和低延迟数据持久化的特性,其访问速度比硬盘驱动器或基于闪存的固态硬盘(SSD)快几个数量级。因此,将NVM集成到LSM-Tree的设计中,有望缓解写放大和写停滞问题。然而,这种混合存储系统需要新的架构和键值结构支持。
本研究的目的是提出一种名为ZigzagDB的新型LSM-Tree键值存储系统,通过NVM和SSD的协同存储设计,优化键值存储系统的写性能。具体目标包括减少写放大和尾延迟(tail latency),并通过NVM的有限容量显著提升键值存储的写性能。
本研究的工作流程主要包括以下几个步骤:
系统设计:ZigzagDB采用NVM和SSD的混合存储设计,并在LSM-Tree的基础上增加了额外的键值存储层。这些新增的层使用NVM作为存储介质,称为“附加NVM树”。与传统LSM-Tree的多层结构(如L0, L1, …, L6)不同,ZigzagDB在NVM中引入了半层(如L0.5, L1.5, …, L5.5)。新设计的键值存储系统交替从SSD或NVM访问数据,形成“Z字形”存储协同和同步,从而提高写效率和空间利用率。
数据结构设计:ZigzagDB在NVM中重新设计了LSM-Tree的基础设施,提出了一种名为“可写排序表”(Writable Sorted Table, WST)的新数据结构。WST基于跳表(skip list)组织,以减少延迟开销。此外,ZigzagDB修改了LSM-Tree的压缩策略,以减少数据迁移成本。
事件触发调度器:由于NVM的容量限制,ZigzagDB引入了“事件触发调度器”来记录每个WST的参数和访问状态,包括容量、键值对数量、访问次数和读取缺失次数。事件触发调度器采用两种WST选择策略:容量感知选择(capacity-aware selection)和读取缺失感知选择(read-miss-aware selection),以减少NVM的容量需求并提高LSM-Tree的读取性能。
数据迁移操作:ZigzagDB将传统的压缩操作拆分为两个新操作:从SSD到NVM的无合并数据迁移和从NVM到SSD的最多一次合并数据迁移。这两个操作通过NVM和SSD的协同存储,减少了不必要的合并操作,从而降低了写放大和访问延迟。
实验验证:ZigzagDB在基于Intel Optane内存和SSD的存储系统上实现,并在LevelDB的基础上添加了约3000行代码。ZigzagDB与RocksDB、MatrixKV和PebblesDB进行了对比实验,实验指标包括吞吐量、平均读取延迟、平均写入延迟、尾延迟、写放大、总写入流量和各层写入流量。
吞吐量:实验结果表明,ZigzagDB在写密集型和读密集型工作负载下均表现出色,吞吐量分别比LevelDB、RocksDB、PebblesDB和MatrixKV提高了2.23倍、1.43倍、1.42倍和1.45倍。
写延迟:ZigzagDB的写延迟比LevelDB、RocksDB、PebblesDB和MatrixKV分别降低了62%、50%、59%和30%。
读延迟:ZigzagDB的读延迟优于LevelDB、RocksDB和MatrixKV,但与PebblesDB相比略有增加(平均增加9%)。这是由于ZigzagDB引入了额外的NVM树结构,优化了压缩操作,但在读取操作时可能需要读取更多层。
尾延迟:在99.99百分位,ZigzagDB的延迟分别比LevelDB、RocksDB、PebblesDB和MatrixKV降低了1.27倍、4.7倍、3.1倍和6.2倍。
写放大:ZigzagDB在八种不同工作负载下的写放大最小,表明其能够有效减少写入存储设备的数据量。
总写入和读取流量:ZigzagDB的总读取流量分别比LevelDB、RocksDB、PebblesDB和MatrixKV减少了78%、64%、55%和84%,总写入流量分别减少了57%、34%、20%和67%。
ZigzagDB通过NVM和SSD的协同存储设计,显著提升了键值存储系统的写性能。通过减少写放大和尾延迟,ZigzagDB在保持较低读取开销的同时,显著提高了系统的吞吐量和写效率。该研究为基于LSM-Tree的键值存储系统提供了一种新的优化方案,具有重要的科学价值和应用价值。
ZigzagDB的设计还为未来键值存储系统的优化提供了新的思路,特别是在NVM和SSD混合存储系统的架构设计方面。该研究展示了如何通过有限的NVM容量显著提升系统性能,为其他存储系统的优化提供了参考。