论文部分内容阅读
近年来随着云计算的兴起,WEB2.0应用的增多,大数据越来越成为IT行业内被大家关注的热门话题。大数据时代其中最显著的特点就是数据量大,数据种类繁多,而关系数据库应对这些海量的半结构化和非结构化数据显得无能为力,这极大的催生了以key-value数据库为代表的Nosql数据库的发展。 如何在使用较少系统资源的情况下保持较高的数据库系统性能始终是一个难题。为了解决该问题,设计并实现了一种占用内存资源较少同时读写性能较高的key-value存储引擎—IndexDB。IndexDB由Logstore和Sortedstore两部分组成,用户可选Logstore在内存中的结构,Sortedstore分层存储,下层数据由上层数据合并而来;系统使用LSM树的思想来保证系统具有较高的随机写性能,利用字典树的思想构建数据在内存中的索引,利用无损压缩编码的技术来减小索引的内存占用,借助布隆过滤器、布谷鸟哈希等技术来过滤系统无效读取操作,利用索引+固态硬盘的方法来保证系统具有较高的随机读性能。IndexDB适用于重复数据删除等需要定长记录的应用场景。 实验测试表明,IndexDB系统具有非常高的顺序读写性能和随机读写性能,在系统可用内存只有2GB的情况下,系统能够管理上亿条数据记录,平均每条记录占用内存大约为1字节左右,在可用系统资源较小,数据量较大的情况下IndexDB的随机读性能大概是LevelDB的2倍。