High read and write performance is important for generic key-value stores, which are foundational to modern applications and databases. Yet, achieving high performance for mixed and dynamic workloads is challenging due to fundamental trade-offs between memory use and I/O for retrieval and updates. Past work emphasizes the trade-off between read- and write-optimization as expressed through primary data structure, in combination with read-memory trade-off mechanisms like caching and filtering. This raises re-tuning costs as optimal trade-off targets change, due to restructuring of stored data. We show that write-memory trade-off mechanisms are under-developed in current designs, and propose a new approach to dynamic key-value store optimization using a novel read-/write-balanced on-disk structure, the TurtleTree, and flexible read-memory & write-memory tuning knobs. We describe how the design of TurtleKV, our prototype, avoids in-memory bottlenecks to achieve high performance across a wide range of tuning parameters. When evaluated using YCSB, TurtleKV matches state-of-the-art SplinterDB for inserts, and is 5x/12x faster than RockDB/WiredTiger. In mixed workloads, TurtleKV is 16-25% faster than SplinterDB, >4x RocksDB, and 3-6x WiredTiger. TurtleKV is 2-9x faster than the others for point-query workloads, and has the best scan performance of the write-optimized systems tested.
翻译:高读写性能对于作为现代应用和数据库基础的通用键值存储至关重要。然而,由于检索和更新在内存使用与I/O之间存在根本性权衡,在混合动态工作负载下实现高性能极具挑战性。以往研究强调通过主数据结构体现的读写优化权衡,并结合缓存和过滤等读-内存权衡机制。当存储数据结构重组导致最优权衡目标变化时,这会增加重新调优成本。我们发现当前设计中的写-内存权衡机制尚不成熟,并提出一种新的动态键值存储优化方法,采用创新的读写平衡磁盘存储结构TurtleTree以及灵活的读-内存与写-内存调优旋钮。我们阐述了原型系统TurtleKV的设计如何通过避免内存瓶颈,在广泛调优参数下实现高性能。基于YCSB基准测试的评估表明,TurtleKV在插入操作上与当前最优系统SplinterDB相当,比RocksDB快5倍、比WiredTiger快12倍。在混合工作负载下,TurtleKV比SplinterDB快16-25%,比RocksDB快4倍以上,比WiredTiger快3-6倍。对于点查询工作负载,TurtleKV比其他系统快2-9倍,并且在所有测试的写优化系统中具有最优的扫描性能。