论文部分内容阅读
互联网技术的迅猛发展催生了海量的数据,越来越多以数据为中心的应用渗透到人们生活的方方面面。这些应用对存储系统提出了更高的要求。其中,如何为这些数据建立高效的索引成为一大挑战。Key-Value系统是一种为海量数据建立索引的有效解决方案,它具有操作延迟低、吞吐率高的特点。但是,Key-Value系统对底层存储设备的访问主要是随机读写,建立在磁盘之上的Key-Value系统必然性能低下。相比之下,基于闪存的固态硬盘(SSD,Solid State Drive)具有良好的随机访问性能,是构建Key-Value系统的理想存储设备。本文主要研究基于SSD的Key-Value系统查询优化策略,论文的主要工作和创新点有以下几个方面:首先,针对一种构建在SSD之上的Key-Value系统——Skimpy Stash中压缩策略性能低下的问题,提出了一种基于链表压缩的读写优化机制。压缩活动可以将链表中分散在SSD不同页面的Key-Value写入同一个页面,该策略通过在哈希表目录中增加一个压缩计数器来减少压缩次数,从而有效减少压缩活动对客户端的影响。实验表明,总的压缩次数平均减少了10%到34%。此外,还测试了压缩活动对平均查询时间的影响,指出了合理设置压缩因子的重要性。其次,针对整个系统中大量的Key-Value具有不同的访问热度、一些Key-Value之间具有相关性等问题,提出了基于热点数据识别和相关性检测的Get优化策略。该策略通过将热点数据提前、将相关数据放在SSD的同一页面来减少对SSD的读操作,从而有效缩短热点Key-Value和相关Key-Value的Get时间。实验表明,基于热点数据识别的优化策略能够将SSD的读操作减少6%,基于相关性检测的优化策略能够将SSD的读操作减少10%以上。最后,针对Key-Value系统对吞吐率要求较高的问题,提出利用内存映射文件机制减少对SSD的访问,从而提高系统吞吐率,降低访问延迟。该机制在对数据进行读写操作之前,先将一定粒度的文件直接映射到内存中。实验表明,这一优化措施能够将查询时间减少21%至30%。