基线与增量数据分离架构下的分布式连接算法.pptVIP

  • 5
  • 0
  • 约1.74千字
  • 约 9页
  • 2016-10-08 发布于重庆
  • 举报

基线与增量数据分离架构下的分布式连接算法.ppt

基线与增量数据分离架构下的分布式连接算法

Institute for Data Science and Engineering at ECNU 2015/10/17 报告人:樊秋实 Institute of Massive Computing * 基线与增量数据分离架构下的分布式连接算法 大纲 问题介绍 解决方法(算法介绍) 总结以及未来工作 问题介绍 背景 大数据时代,很多企业应用往往具有庞大的数据基数,但是一段时间内的修改增量相对来说较小,因此出现了基线与增量数据分离架构的数据库系统。这类数据库将基线数据存储于磁盘中,增量数据存储于内存中,进而获得较高的事务处理吞吐量和可扩展性。Hbase、BigTable、OceanBase等系统就是其中的典型代表。 这种架构的优缺点 优点:较高的事务处理吞吐量和可扩展性。 缺点:每次查询都要将基线与增量数据合并,返回合并后的结果。 问题的提出 大表连接效率较低。主要原因有:每次表连接前必须先合并基线数据和增量数据;数据存储模式更为复杂,导致过大的网络开销。 解决方法 思路 不在连接前合并基线数据和增量数据,而是对基线和增量数据并行处理,同时也避免了大量非连接结果集数据的基线与增量合并操作。 具体算法 在分布式排序归并连接的基础上实现对增量和基线数据的分别处理。 首先结合下面的例子介绍下算法的思路: 例:select * from R inner join S on R.name=S.name; (1) 根据统计信息对R表和S表在连接列name上切分range,为每台机器分配一个range。 (2) 各个机器之间进行基线数据的shuffle。使得每台机器含有自己range内的R表和S表所有基线数据。同时存放基线数据的机器将相应的增量数据发送到相应的机器上。 (3) 每台机器对自己range内的两张表的数据做排序归并连接,并将连接的结果发送到一台master机器上。 (4) master机器整合所有机器发送的连接结果,把最终的连接结果发送给客户端。 算法流程图 算法细节 最大范围算法 解决了如何向各台机器发送其对应增量数据的问题。 由于增量数据在内存中是以主键存储的,只能以主键范围来存取。 经过基线数据shuffle后每台机器上的基线数据是在连接列的range内的。 每台机器必须要根据连接列的range生成一个对应的主键范围,然后拉取该主键范围内的增量数据。 算法实现 基线数据shuffle 阶段,每台机器收到其他机器发送的基线数据:D1,D2…Dn。每一份基线数据都有一个主键范围SubRange_1, SubRange_2… SubRange_n。 将这n个主键范围取并集,得到一个主键范围SubRange。 每台机器根据各自的主键范围SubRange,拉取该主键范围内的增量数据。 算法细节 排序归并连接 从每张表的基线数据中取一行记录开始匹配。 如果符合连接条件,则根据该行的主键到该表的增量数据中二分查找,如果找到,则将该行的增量数据和基线数据合并,并把合并后的结果放到结果集中。 如果不符合连接条件,则将连接字段较小的记录抛弃,从这条记录对应的表中取下一条记录继续进行匹配,直到整个循环结束。 实验评估 在开源数据库OceanBase上实现了该算法并且进行一系列实验。 实验结果: 总结以及未来工作 本文提出了一种分布式环境下的排序归并连接算法。 该算法并行的处理基线数据和增量数据,避免了在做连接前把大量的基线数据和增量数据合并导致的查询效率低下的情况。 通过在开源数据库OceanBase上实现该算法并做了一系列的测试,得出该连接算法的确极大的提升了大表连接效率的结论。 未来工作 本文重点讨论了两张大表连接的情况,对于多表连接,如何根据统计信息,中间结果集的大小来确定连接的顺序,以及如何对多表的数据同时进行MapReduce操作等优化方法,都是以后对连接优化算法研究的重点。 Institute for Data Science and Engineering at ECNU 2015/10/17 报告人:樊秋实 Institute of Massive Computing *

文档评论(0)

1亿VIP精品文档

相关文档