论文部分内容阅读
随着大数据时代的来临,传统的数据存储、查询、分析方式渐渐力不从心,难以适应海量数据的处理需求。关注非关系型、分布式、开源、可以线性扩展这几个特点的NoSQL数据库应运而生,能够很好地满足大数据时代的数据存储与处理需求。Cassandra作为NoSQL数据库的代表之一,被广泛地应用于各大IT公司,承担着极其重要的数据存储和处理任务。然而Cassandra仍旧是一个相对较为年轻的分布式数据库系统,其在各方面尤其是性能方面还有很大的改进空间。在实际使用过程中,我们发现Cassandra的读性能较差,难以满足日渐增长的读数据需求。经过对Cassandra系统架构的分析以及性能测试,我们发现读操作较慢的主要原因是数据读取过程中涉及较多的硬盘IO操作。如果在读数据时命中Cassandra的RowCache缓存,就可以直接从缓存中获取完整数据进而省略硬盘IO过程,故增大缓存可以明显地提升读操作的性能。但是内存空间是有限的,且价格较高,无法进行大规模扩充来满足缓存高命中率的要求。而近年来出现的固态硬盘具有低消耗、高容量、高速度、低耗费的特点,将其作为内存的扩展,是增大缓存的极佳方案。目前将固态硬盘作为系统交换区来扩展内存是较为常用的手段,但是这种方案有较多的缺点,无法充分利用固态硬盘的优点。为此我们针对性地设计并实现了基于内存和固态硬盘的混合缓存架构,将固态硬盘作为内存的扩展,为Cassandra提供大容量、高速度的RowCache缓存服务,来优化其读性能。我们设计的缓存架构分为两层五区,其中内存层分为三个区域,固态硬盘层分为两个区域。混合缓存在充分利用内存和固态硬盘的存储空间和读写速度的情况下,尽量减少固态硬盘读写过程中的擦除操作,来减少固态硬盘的使用损耗。同时我们设计了一种使数据在各区域中有序转移交换算法,能够区分对待混合缓存中的冷热数据,使较热的数据能够存储在内存层,而相对较冷的数据存储在固态硬盘层。混合缓存系统可以与Cassandra无缝衔接,并对用户提供了友好的参数配置界面,包括静态和动态两种配置接口,使用户可以简单方便的使用。在最后的效果测试中,我们设计的混合缓存架构,在Cassandra上的性能表现是使用固态硬盘作为交换区方案的1.4倍。