近10年来,大数据管理技术的发展日新月异。年,以宽表系统为代表,分布式、非关系模型等数据管理技术逐渐被广泛接受。年,NoSQL潮流兴起,进一步推动了基于非关系模型、面向特定应用需求的数据管理技术的发展。
随着新技术的提出,若干基于这些技术的开源大数据管理软件快速涌现,在这些开源软件中,最为活跃的当属Apache软件基金会生态中的大数据管理软件。
02研究内容数据库的存储引擎负责缓冲区管理、磁盘数据管理、磁盘数据查询等,是数据库的核心模块。存储引擎设计的好坏直接影响数据库的读写性能。通常来说,存储引擎的设计取决于目标负载,针对不同负载要求可以采用不同的存储管理方式。
针对“读多写少”的负载,传统关系数据库常采用B+树来管理数据。然而,近年来写入请求占总请求的比例在逐年上涨,逐渐占据了主导地位。基于B+树的方案在目前较为普及的基于机械硬盘的服务器上存在严重的IO瓶颈。基于数据顺序追加与数据整理的LSM-Tree(log-structuredmergetree)方法是解决B+树在写入时引入大量随机I/O导致机械硬盘出现性能瓶颈问题的一个有效手段。
LSM结构在新的数据写入时会先在内存中进行缓存,并在内存中数据达到一定量时,将数据整块顺序写入到磁盘,而非B树一样修改原有的数据结构。
然而,LSM在查询性能上也存在着巨大的缺陷——磁盘上的数据块之间既不能保证有序,又不能保证无重复,查询时需要对多个数据块进行归并,引入了量的随机I/O。
合并操作提高了数据的连续性,减少了数据的冗余程度,缓解了LSM-Tree查询时的性能问题。但是合并本身既包含对老数据的读也包含对新数据的写,本身会占用大量的系统资源,从而削弱了LSM的写入优势。因此,许多工作从减少合并次数、提高合并并行度、减少单次合并的I/O开销,优化合并调度策略减少对常规业务的影响等方面着手,提出了各自对LSM-Tree的改进。
人们注意到,在大数据分析应用中,行式的文件结构存在着难以实现高压缩、处理低选择率的查询I/O效率低等问题。
在大数据生态发展过程中,大量列式文件格式被发明,它们被用于各种分析系统和应用当中。虽然通用的列式存储文件格式能够很好地应对多数应用场景,但是面对特定数据类型时,这些通用文件格式难以做到针对这些数据类型的高压缩率,高读写速率。为此,像ApacheTsFile这类针对特定场景下的数据(时序数据)的文件存储格式也应用而生。
除了提出新的文件结构外,目前针对存储结构的研究主要