论文部分内容阅读
近年来互联网高速发展,已经逐渐成为人们获取信息的主要来源,互联网信息总量大并呈爆炸性增长,对这些信息的存储给互联网公司提出了新的挑战。为了应对互联网中海量数据存储的挑战,出现了以BigTable为代表的分布式键值存储引擎。BigTable的分布式架构通过多服务器协作解决了存储容量问题,Merge-Dump模型使系统的写性能得到了很好的提升,但是随机读性能却由于磁盘的随机读性能较差不能得到很好的提升。新兴的存储介质SSD具有较好的随机访问性能,用SSD替换磁盘可以获取较好的性能提升,但是SSD的单位容量价格较高,并且当前的索引结构未针对SSD做优化不能充分发挥SSD的性能优势。
本文提出了面向海量数据的RAM-SSD-HDD三级键值存储引擎,主要探讨了数据分级、三级缓存调度策略和索引性能的提升等关键问题,本文的主要贡献包括:
1.设计实现了面向海量数据高效读写的RAM-SSD-HDD三级键值存储引擎MN-Store(Massive data oriented N-tier Key-Value Store)。针对读性能差的问题,引入了SSD缓存层,SSD的单位容量价格和性能都介于RAM和HDD之间,达到了更好地均衡系统读写性能的目的。同时,SSD作为HDD缓存的方式也协调了系统性能与成本之间的矛盾。在三级存储引擎中,根据各部分数据的特性进行了分级存储,主要包括RAM读写缓存数据、SSD读写缓存数据和HDD上的海量数据,并对各部分索引进行了相应优化。整体系统通过合理的数据分级、缓存调度策略和索引优化三方面来综合提升性能,最终,整体系统在不降低写性能的前提下,将读性能提升至基于HDD的原生Cassandra的23.8倍,达到基于SSD的原生Cassandra读性能的52.9%。
2.提出了面向三级存储引擎的、SSD友好的缓存批量调度策略。缓存调度策略至关重要,SSD在三级缓存调度策略中起着核心作用,本文针对SSD写放大率的问题,设计了缓存批量换出到SSD,SSD缓存批量更新,缓存批量管理与失效的缓存调度策略,达到了兼顾缓存命中率和SSD写放大率的目标。
3.设计了支持高效随机读写的索引方式。针对索引性能较低的问题,设计了基于持久化存储介质的哈希索引的方式,该索引方式保证写性能与原生Casandra相当的前提下,基于HOD存储时读性能提升了69%,基于SSD存储时读性能提升89%;同时相对于Cassandra原生索引省去了内存中的Index Summary,节省了内存空间。