提高列存数据库精确查询速度的方法与装置的制造方法
【技术领域】
[0001]本发明属于数据库技术领域,尤其是涉及列存数据库中的精确查询操作。
【背景技术】
[0002]如图1所示,一个典型的列存储据库系统通过数据库接口接收来自数据库客户端的访问请求。数据库处理器对访问请求进行处理,并通过数据库存储引擎访问数据库中的数据。一个数据库存储引擎可以同时管理多个数据库(DB),每个数据库包含多个表(Table),每个表都是由行与列组成的二维表格。在列存数据库中,表的数据按照列(Column)集中存储,每一列的数据由若干个数据包(DC,Data Cell)组成,每一个数据包都包含此列中的若干行数据。
[0003]对数据库进行“精确查询”,就是给定一个数值,然后在某一列中确定这个数值是否存在,如果存在,就定位到这个数值所在的行。
[0004]布隆过滤器(Bloom Filter)是一种近似成员查询工具,用以查询某个元素是否是某个集合的成员。布隆过滤器不是100%精确地,其查询结果有2种可能:“可能是成员”、“一定不是成员”。当它认为“可能是成员”时,有可能其实不是成员,但当它认为“一定不是成员”时,就一定不是成员。
[0005]图2是布隆过滤器的示意图,对元素x、y、z分别使用若干(图中是三个)哈希函数求得元素在布隆过滤器中的对应位(bit),然后在对应位中填1,其余位的值为0。当需要判断元素w是否是成员时,只需使用同样的哈希函数,计算w对应的位,检查其中的值是否全都为1。如果全是1,结果是“可能是成员”;如果不全是1,结果就是“一定不是成员”。
【发明内容】
[0006]本发明的目的在于使用布隆过滤器作为精确查询操作中的粗粒度索引,提高列存数据库中的精确查询操作的速度。
[0007]本发明的技术方案为:一种提高列存数据库精确查询速度的方法,包括如下步骤:
[0008](1)使用布隆过滤器过滤列存数据库中的不包含查询目标的数据包;
[0009](2)使用精确查询模块查询包含查询目标的数据包。
[0010]进一步的,步骤(1)中,通过布隆过滤器开关对布隆过滤器进行使用控制。
[0011]本发明的另一面,一种提高列存数据库精确查询速度的装置,包括布隆过滤器模块和精确查询模块;所述布隆过滤器模块用于过滤列存数据库中的不包含查询目标的数据包;所述精确查询模块用于查询包含查询目标的数据包。
[0012]进一步的,所述布隆过滤器模块设有开关单元,所述开关单元用于布隆过滤器进行使用控制。
[0013]本发明的有益效果为:
[0014]因为布隆过滤器能够过滤掉大量不包含查询数值的数据包,因此减少了不必要的遍历数据包的操作,极大提高了列存数据库的精确查询性能。
【附图说明】
[0015]图1是现有技术的列存数据库不意图;
[0016]图2是现有技术的布隆过滤器示意图;
[0017]图3是本发明使用带有布隆过滤器的精确查询模块的列存数据库示意图;
[0018]图4是本发明使用带有布隆过滤器的精确查询模块的精确查询过程示意图;
[0019]图5是本发明使用带有布隆过滤器的精确查询模块的精确查询过程示例图。
【具体实施方式】
[0020]在本实施例中,布隆过滤器(Bloom Filter)简称为BF。
[0021]如图3所示,本发明包括布隆过滤器模块BF和精确查询模块;所述BF设有BF开关。
[0022]本实施例如图5所示,假设用户希望查询的数值是100,假设数据库列中包含3个数据包,并且使用BF。其中:
[0023]1)第一个数据包中的BF中不包含100的成员信息;
[0024]2)第二个数据包中的BF中包含100的成员信息,即其认为“100可能是第二个数据包的成员”,但第二个数据包中实际并不包含100 ;
[0025]3)第三个数据包中的BF中包含100的成员信息,即其认为“100可能是第三个数据包的成员”,而且第三个数据包中确实包含100。
[0026]那么结合图4所示的查询过程,本实施例操作步骤如下:
[0027]1)检查BF开关,确定使用BF ;
[0028]2)获取第一个数据包,使用BF确定100是否是数据包成员,结果为不是,结束第一个数据包的查询;
[0029]3)获取第二个数据包,使用BF确定100是否是数据包成员,结果为可能是;
[0030]4)在第二个数据包中精确查询100,结果是不存在,结束第二个数据包的查询;
[0031]5)获取第三个数据包,使用BF确定100是否是数据包成员,结果为可能是;
[0032]6)在第三个数据包中精确查询100,结果是存在;
[0033]7)在第三个数据包中精确定位到行,将结果加入结果集,结束第三个数据包的查询;
[0034]8)返回结果集。
【主权项】
1.一种提高列存数据库精确查询速度的方法,其特征在于,包括如下步骤: (1)使用布隆过滤器过滤列存数据库中的不包含查询目标的数据包; (2)使用精确查询模块查询包含查询目标的数据包。2.根据权利要求1所述的一种提高列存数据库精确查询速度的方法,其特征在于,步骤(1)中,通过布隆过滤器开关对布隆过滤器进行使用控制。3.一种提高列存数据库精确查询速度的装置,其特征在于:包括布隆过滤器模块和精确查询模块;所述布隆过滤器模块用于过滤列存数据库中的不包含查询目标的数据包;所述精确查询模块用于查询包含查询目标的数据包。4.根据权利要求3所述的一种提高列存数据库精确查询速度的装置,其特征在于,所述布隆过滤器模块设有开关单元,所述开关单元用于布隆过滤器进行使用控制。
【专利摘要】本发明旨在提供一种在列存数据库中使用布隆过滤器快速精确查询数据的方法。包括,在列存数据库的精确查询数据操作中使用数据包级的布隆过滤器对数据包进行筛选。布隆过滤器可以有效减少精确查询数据操作过程中对磁盘和文件系统的I/O访问,加快精确查询数据操作的速度。
【IPC分类】G06F17/30
【公开号】CN105426466
【申请号】CN201510782763
【发明人】赵伟, 武新, 李东海, 王雪松
【申请人】天津南大通用数据技术股份有限公司
【公开日】2016年3月23日
【申请日】2015年11月16日