[发明专利]面向海量分布式数据库的嵌套查询方法有效
申请号: | 201410333217.4 | 申请日: | 2014-07-14 |
公开(公告)号: | CN104090962B | 公开(公告)日: | 2017-03-29 |
发明(设计)人: | 刘文洁;裴欧亚;李战怀;田征 | 申请(专利权)人: | 西北工业大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 西北工业大学专利中心61204 | 代理人: | 王鲜凯 |
地址: | 710072 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种面向海量分布式数据库的嵌套查询方法,用于解决现有Oceanbase的SQL查询方法中不支持嵌套查询的技术问题。技术方案是通过构建查询树和查询引擎实现嵌套子查询功能。在小数据集查询时,直接绑定子查询结果集到物理计划。当大数据量查询时,启用两阶段过滤策略,使用BloomFilter在ChunkServer上进行初次过滤,过滤后的数据在MergeServer进行二次精确匹配,并采用HashMap来存储需要对比的结果集。由于BloomFilter能快速过滤掉大量无关数据,而HashMap又能快速匹配符合条件的结果集。因此,本发明方法在实现了嵌套查询的基础上,大大提高了SQL查询速度。 | ||
搜索关键词: | 面向 海量 分布式 数据库 嵌套 查询 方法 | ||
【主权项】:
一种面向海量分布式数据库的嵌套查询方法,其特征在于包括以下步骤:步骤一、采用关系型数据库的SQL语句解析结果构建查询树;查询树的节点数据结构如下:其中,phy内保存子节点执行结果填充位置标记;phy内的位置标记与next_child一一对应;步骤二、为查询树构建执行引擎;根据查询树的特性,采用从叶节点到根节点的递归算法;递归算法如下:串行执行每个节点,除根节点外,每个节点执行结束,将本节点从查询树移除,以确保查询树的正确执行;递归算法中的threshold控制着是否启用HashMap和Bloomfilter;threshold为可变参数,可变化范围为(0,511];当子查询结果集不大于threshold时,直接将子查询结果集写入主查询的物理计划内,接下来的物理计划执行的处理遵循OceanBase现有的查询处理;当子查询结果集大于threshold时,将主查询的物理计划同子查询结果集生成的Bloomfilter一起发送至Chunkserver处理,MergeServer利用子查询结果集生成的HashMap过滤获取的结果集;步骤三、执行过滤过程;过滤过程分为BloomFilter过滤和HashMap过滤两个子步骤;首先ChunkServer进行非严格的BloomFilter过滤,获得最终结果集的超集;其次MergeServer进行严格的HashMap过滤,获得最终结果集;详细过滤过程如下:I、BloomFilter过滤:分布式架构下,将作为主查询过滤条件的超大的子查询结果集分发至不同的数据节点的方案会占用大量传输带宽;为了降低带宽占用率且加速查找,采用多哈希函数映射的快速查找数据结构‑‑布隆过滤器BloomFilter;策略所构建的BloomFilter采用如下的公式:k=‑ln(p)÷ln(2)m=(n*k)÷ln(2)式中,p是误判率,m是位数组大小,n是总数据数目,k是所需哈希函数数目;BloomFilter的构建由ChunkServer负责,分别由下面两个算法实现:1)BloomFilter构建算法:①输入子查询结果集S,依据上述公式及S、默认误报率p,计算BloomFilter所需位数组大小m,所需哈希函数数目k;②读取S的一条记录R,如果R为NULL,转⑤;③将R依次带入k个哈希函数H1(R),...,Hk(R)得到k个值V1,...,Vk;④将BloomFilter的位数组的V1,...,Vk位设置为True,转②;⑤构建结束,返回BloomFilter;2)BloomFilter查找算法:①读入一条记录R;②将R依次带入k个哈希函数H1(R),...,Hk(R)得到k个值V1,...,Vk;③比对BloomFilter的位数组的V1,...,Vk位;如果k个位全为True,则返回查找成功,否则返回查找失败;II、HashMap过滤:MergeServer严格的数据过滤条件是海量的子查询结果集,采用全内存的HashMap存储子查询结果集;HashMap的高效查找依赖于哈希函数的均匀散列和低冲突率;均匀散列保证每一个桶内的数据检索时间相同;低冲突率保证快速定位,采用链表法解决地址冲突,链表的每一个节点的只有key;HashMap的构建由MergeServer负责,分别由下面两个算法实现;1)HashMap构建算法:①输入子查询结果集S,初始化HashMap,分配哈希桶空间;②读取S的一条记录R,如果R为NULL,转⑤;③将R带入哈希函数H(R),依据得到的哈希值确定待插入的哈希桶BUCKET BT;④将R以链表的形式挂在BT的链表末尾,转②;⑤构建结束,返回HashMap;2)HashMap查找算法:①读入一条记录R;②将R带入哈希函数H(R),依据得到的哈希值确定待查询的哈希桶BUCKET BT;③遍历BT内的链表节点,逐个比对;如果相同则返回查找成功,否则返回查找失败;查询树的每一个非叶子节点的执行都需要两阶段数据过滤,即首先根据孩子节点的结果集构建HashMap和BloomFilter,接着将BloomFilter同本节点的物理计划分发至数据节点,数据节点依据物理计划及过滤条件BloomFilter,将最终结果集的超集返回给MergeServer,最后MergeServer利用HashMap执行最后的数据过滤,获得最终结果集。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西北工业大学,未经西北工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410333217.4/,转载请声明来源钻瓜专利网。
- 上一篇:一种智能信息推送的方法和装置
- 下一篇:数据文件处理方法、装置和系统