论文部分内容阅读
随着互联网技术的发展,全球数据存储总量呈现爆炸式的增长,这对现有的存储系统提出了更严峻的挑战。一方面传统硬盘的存储密度已经接近极限,需要寻求瓦记录磁盘等技术来实现存储容量的突破;另一方面现在大量的Web2.0应用往往每时每刻都会产生海量的半结构化和非结构化数据,关系型数据库并不擅长处理这些数据,为解决这一难题,以键值数据库为代表的NOSQL数据库应运而生。 面向以写操作为主的海量数据应用场景,设计并实现了基于瓦记录磁盘的键值数据库系统。通过对瓦记录磁盘技术的研究,基于传统硬盘设计并实现了采用“区-段-块-扇区”空间划分和径向编址的仿真瓦记录磁盘,作为系统的底层存储,大幅提高系统存储容量的同时保持较低的单位存储成本。采用日志结构合并树作为存储模型,内存中使用跳表实现写缓冲,写入量达到一定阈值后刷入磁盘,从而将对磁盘的随机写转换为顺序写,极大地提高了系统写入性能,并且适配了瓦记录磁盘不擅于随机写的特性;使用多缓冲区和多线程并发,有效提升了系统写入性能;采用基于最小重写量的合并算法,明显降低了合并操作的开销,尤其是在大数据量情况下;引入小容量的SSD作为快磁盘存储热数据,提高了系统的读取性能。 测试表明,SWDDB与LevelDB相比,写入性能提升了33%-47%,读取性能提升了8.2%-45%,而在海量数据应用场景下,LevelDB写入吞吐量降至最高吞吐量的13.6%,SWDDB的写入吞吐量则仍能保持最高吞吐量的72.0%。