论文部分内容阅读
在大数据时代的很多应用中,数据规模达到PB、EB甚至ZB量级,特别是像秒杀和抢购等“现象级”的互联网应用。在这些应用中传统的数据库系统显得力不从心,因此如何管理和利用大数据已成为工业界和学术界共同关注的问题。由于硬件的更新和应用的驱动,NoSQL数据库和分布式数据库等技术得到了很大的发展。这些数据库部分解决了海量数据管理和利用所遇到的部分挑战,攻克了一些大数据应用的难题。但对一些复杂数据管理任务,如数据库上的大表连接,其表现还不太尽如人意。连接操作是关系型数据库最重要的算子之一。如何在海量、分布式情形下保证连接操作的正确性与可用性是一个非常具有挑战的任务,特别是对读写分离架构的数据库来说。为应对海量数据处理,可扩展性是分布式数据库研究的重点,如HBase,Shark都是基于这个目标而设计的。对偏向于OLTP的事务型数据库来说,分布式存储的数据可能导致效率非常低下的分布式事务。为了解决这一问题,近几年一种读写分离架构的数据库成为分布式数据库发展的一个分支。该架构把所有更新事务都放在一个节点上,形成增量数据,避免了分布式事务,同时把基线数据分布在多个节点上,实现了高可扩展性。OceanBase数据库就是这一架构的典型代表。该架构具有高效响应事务的优点,但同时也增加了查询操作的复杂性。每一次查询都要首先将基线数据和增量数据合并,然后返回合并后的数据。可以看出,当执行大表连接时,大量的网络传输会导致该架构的处理性能明显降低。为了优化该架构下大表连接的效率,本文以开源数据库OceanBase为基础,针对其架构特点,设计并实现了两种大表连接优化算法:SemiJoin和分布式排序归并连接。并在传统连接算法的基础上,针对读写分离架构的特点,对这两种算法进行了优化。本文的主要贡献如下:1.针对OceanBase数据库架构特点,设计并实现了SemiJoin算法。通过并行计算增加了对大表数据过滤的速度,同时减少网络上的数据传输量,从而极大地提高了半连接的效率。并通过一系列的对比实验证明了优化后算法的高效率。2.针对OceanBase数据库架构特点,设计并实现了分布式排序归并连接算法。该算法将连接属性分为多个范围,每个范围内的数据并行地做排序归并连接。特别针对增量数据,本文提出了“最大范围”算法,分别对待基线和增量数据,极大地提高了连接效率。并通过一系列的对比实验验证了优化后算法的高效率。3.提出了在读写分离架构下,不首先合并数据,而是对基线和增量数据分别处理的思路。这种思路不仅仅应用在连接操作上,而且对同类数据库的查询引擎进行优化时也可以借鉴上述思路。