一句话:PrismDB 通过跨层数据迁移与 compaction 算法,在快慢两层 NVMe 存储间实现性能与成本的帕累托高效平衡。
新兴存储硬件在性能与每比特成本上目标分化,导致数据系统通常只能优化快速但昂贵或低成本但慢速的一侧。本文提出 PrismDB,一个原生利用 3D XPoint 与 QLC NAND 两层 NVMe 存储的键值存储引擎。其核心贡献是跨存储层的高效数据迁移与 compaction:借鉴日志清理的成本收益分析,算法在快速层回收热对象空间所获收益与慢速层 compaction I/O 成本之间进行权衡。评估显示,与当今数据中心中闪存上标准 RocksDB 的使用方式相比,PrismDB 在分层存储上的平均吞吐快 3.3 倍,读尾延迟好 2 倍,并在等价价格硬件上耐久性高 5 倍。
In recent years, emerging storage hardware technologies have focused on divergent goals: better performance or lower cost-per-bit. Correspondingly, data systems that employ these technologies are typically optimized either to be fast (but expensive) or cheap (but slow). We take a different approach: by architecting a storage engine to natively utilize two tiers of fast and low-cost storage technologies, we can achieve a Pareto efficient balance between performance and cost-per-bit. This paper presents the design and implementation of PrismDB, a novel key-value store that exploits two extreme ends of the spectrum of modern NVMe storage technologies (3D XPoint and QLC NAND) simultaneously. Our key contribution is how to efficiently migrate and compact data between two different storage tiers. Inspired by the classic cost-benefit analysis of log cleaning, we develop a new algorithm for multi-tiered storage compaction that balances the benefit of reclaiming space for hot objects in fast storage with the cost of compaction I/O in slow storage. Compared to the standard use of RocksDB on flash in datacenters today, PrismDB’s average throughput on tiered storage is 3.3× faster, its read tail latency is 2× better, and it is 5× more durable using equivalently-priced hardware.