面向海量分布式数据库的嵌套查询方法

文档序号:6619992阅读:483来源:国知局
面向海量分布式数据库的嵌套查询方法
【专利摘要】本发明公开了一种面向海量分布式数据库的嵌套查询方法,用于解决现有Oceanbase的SQL查询方法中不支持嵌套查询的技术问题。技术方案是通过构建查询树和查询引擎实现嵌套子查询功能。在小数据集查询时,直接绑定子查询结果集到物理计划。当大数据量查询时,启用两阶段过滤策略,使用BloomFilter在ChunkServer上进行初次过滤,过滤后的数据在MergeServer进行二次精确匹配,并采用HashMap来存储需要对比的结果集。由于BloomFilter能快速过滤掉大量无关数据,而HashMap又能快速匹配符合条件的结果集。因此,本发明方法在实现了嵌套查询的基础上,大大提高了SQL查询速度。
【专利说明】面向海量分布式数据库的嵌套查询方法 【技术领域】
[〇〇〇1] 本发明属于云计算环境下的海量数据管理领域,具体涉及一种面向海量分布式数 据库的嵌套查询方法。 【背景技术】
[0002] 随着云计算、web2. 0等技术的进一步发展,传统的关系数据库在应对海量数据处 理时显得力不从心。而NoSQL数据库由于放弃了传统关系型数据库严格的事务一致性和 范式约束,采用弱一致性模型,支持分布式和水平扩展,满足了海量数据管理的需求,因此 在大数据处理领域得到了广泛关注和应用,例如Google的BigTable和Amazon的Dynamo。 NoSQL数据库相对于传统关系型数据,具有性价比高和可扩展性等特点,从而促使NoSQL数 据库成为国内金融企业应对海量数据的首选数据库。
[0003] 但是,传统的金融业务除了要处理海量数据外,还需要保证数据处理过程中事务 的强一致性。但是目前,大多数的NoSQL数据库不支持事务的强一致性,从而无法满足金融 业务的需求。
[0004] 文献"阿里巴巴· OceanBaseO. 4. 2 描述· https://github. com/alibaba/ oceanbase/wiki/OceanBase-O. 4. 2_ 描述· 2013. 11" 中提出了一种融合了 N0SQL 数据库架 构和关系数据库特点的新型数据库架构-OceanBase,不仅支持跨行跨表的事务的强一致 性,也支持数据节点的可扩展性,在国家倡导信息安全和应用国产软件的背景下,得到了国 内金融业的普遍关注。
[0005] Oceanbase采用了 N0SQL数据库的架构,具有可扩展性的特点,同时又较好的支持 SQL查询和事务的强一致性,在应对金融业务上,具有很大优势。然而,Oceanbase虽然支持 关系语言操作,但支持的SQL功能非常有限,特别是对于金融应用中常用的嵌套子查询,尚 未支持,已经实现的查询策略中,也存在性能问题,使得其难于满足金融需求,无法导入实 际应用中。
【发明内容】

[0006] 为了克服现有Oceanbase的SQL查询方法中不支持嵌套查询的不足,本发明提供 一种面向海量分布式数据库的嵌套查询方法。该方法采用Bloomfilter和HashMap的两阶 段过滤方法来应对大数据量查询,通过构建查询树和查询引擎实现嵌套子查询功能。在小 数据集查询时,直接绑定子查询结果集到物理计划。当大数据量查询时,启用两阶段过滤 策略,使用BloomFilter在ChunkServer上进行初次过滤,过滤后的数据在MergeServer进 行二次精确匹配,并采用HashMap来存储需要对比的结果集,保证一次过滤后的数据能快 速找到匹配的数据行。由于BloomFilter能快速过滤掉大量无关数据,而HashMap又能快 速匹配符合条件的结果集。因此,本发明方法在实现了嵌套查询的基础上,大大提高了 SQL 查询速度。
[0007] 本发明解决其技术问题所采用的技术方案是:一种面向海量分布式数据库的嵌套
【权利要求】
于threshold时,将主查询的物理计划同子查询结果集生成的Bloomfilter -起发送至 Chunkserver处理,MergeServer利用子查询结果集生成的HashMap过滤获取的结果集; 步骤三、首先ChunkServer进行非严格的BloomFiter过滤,获得最终结果集的超集;其 次MergeServer进行严格的HashMap过滤,获得最终结果集; I、 BloomFilter 过滤; 分布式架构下,将作为主查询过滤条件的超大的子查询结果集分发至不同的数据节点 的方案会占用大量传输带宽;为了降低带宽占用率且加速查找,采用多哈希函数映射的快 速查找数据结构一布隆过滤器:BloomFilter ; 策略所构建的BloomFilter采用如下的公式: k = -In (p) + In (2) m = (n*k) + In (2) 式中,P是误判率,m是位数组大小,n是总数据数目,k是所需哈希函数数目; BloomFilter的构建由MergeServer负责,构建算法如下: Input :子查询结果集S//S代表子查询结果集 ① 依据上述公式及S、默认误报率p,计算BloomFilter所需位数组大小m,所需哈希函 数数目k ; ② 读取S的一条记录R,如果R为NULL,转⑤;//R代表结果集中的一条记录,NULL代表 一条空记录; ③ 将R依次带入k个哈希函数HI (R),· · ·,Hk (R)得到k个值VI,· · ·,Vk ; //HI (R),... HI⑷代表k个哈希函数,VI,... Vk代表k个哈希函数的值; ④ 将BloomFilter的位数组的VI,· · ·,Vk位设置为True,转②; ⑤ 构建结束,返回BloomFilter ; BloomFilter的查找算法如下: ① 读入一条记录R ② 将R依次带入k个哈希函数HI (R),· · ·,Hk (R)得到k个值VI,· · ·,Vk ; ③ 比对BloomFilter的位数组的VI,. . .,Vk位;如果k个位全为True,贝U返回查找成 功,否则返回查找失败; II、 HashMap 过滤; MergeServer严格的数据过滤条件是海量的子查询结果集,采用全内存的HashMap存 储子查询结果集; HashMap的高效查找依赖于哈希函数的均匀散列和低冲突率;均匀散列保证每一个桶 内的数据检索时间大致相同;低冲突率保证快速定位,采用链表法解决地址冲突;链表的 每一个节点的只有key ; MergeServer负责构建HashMap,且利用构建的HashMap进行严格的数据过滤; HashMap的构建算法如下: Input :子查询结果集S ① 初始化HashMap,分配哈希桶空间; ② 读取S的一条记录R,如果R为NULL,转⑤; ③ 将R带入哈希函数H(R),依据得到的哈希值确定待插入的哈希桶BUCKET BT ; ④ 将R以链表的形式挂在BT的链表末尾,转②; ⑤ 构建结束,返回HashMap ; HashMap的查找算法如下: ① 读入一条记录R ② 将R带入哈希函数H(R),依据得到的哈希值确定待查询的哈希桶BUCKET BT ;//BT代 表一个哈希桶; ③ 遍历BT内的链表节点,逐个比对;如果相同则返回查找成功,否者返回查找失败; 查询树的每一个非叶子节点的执行都需要两阶段数据过滤,即首先根据孩子节点的 结果集构建HashMap和BloomFilter,接着将BloomFilter同本节点的物理计划分发至 数据节点,数据节点依据物理计划及过滤条件BloomFilter,将最终结果集的超集返回给 MergeServer,最后MergeServer利用HashMap执行最后的严格的数据过滤,获得最终结果 集。
【文档编号】G06F17/30GK104090962SQ201410333217
【公开日】2014年10月8日 申请日期:2014年7月14日 优先权日:2014年7月14日
【发明者】刘文洁, 裴欧亚, 李战怀, 田征 申请人:西北工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1