CN108205571B - 键值数据表的连接方法及装置 - Google Patents
键值数据表的连接方法及装置 Download PDFInfo
- Publication number
- CN108205571B CN108205571B CN201611182420.1A CN201611182420A CN108205571B CN 108205571 B CN108205571 B CN 108205571B CN 201611182420 A CN201611182420 A CN 201611182420A CN 108205571 B CN108205571 B CN 108205571B
- Authority
- CN
- China
- Prior art keywords
- array
- bloom
- value data
- data table
- statistical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种键值数据表的连接方法及装置,其方法包括:获取第一键值数据表中每个第一关键字对应的第一布隆数组,以及获取第二键值数据表中每个第二关键字对应的第二布隆数组;过滤掉第一布隆数组、第二布隆数组对应的一定不存在重复关系的第一关键字和第二关键字;根据过滤处理后的第一布隆数组对应的第一关键字、第二布隆数组对应的第二关键字,进行第一键值数据表和第二键值数据表的连接。本发明实施例提供的键值数据表的连接方法及装置,先过滤掉需要连接的第一键值数据表与第二键值数据表中一定不存在重复关系的第一关键字与第二关键字,再进行连接,减少了需要连接的数据总量,从而减少了计算成本,提高了计算效率。
Description
技术领域
本发明涉及数据库领域,尤其涉及一种键值数据表的连接方法及装置。
背景技术
键值(key-Value)存储数据库是一种已经被广泛采用的非关系型(NoSQL)数据库模型,其数据按照键值对的形式进行组织、索引和存储。使用键值存储数据可进行存储时,会根据不同的条件进行存储,如一个学校的学生信息,存储时可能将全校学生的学号、科目和成绩存储为一张数据表,将班级内学生的姓名及学号存储为另一张数据表,若是想获得包含学生姓名及成绩的数据表,就需要根据学号将上述两个数据表进行连接、合并。此时关键字为学号,而学生姓名、科目及成绩为根据关键字连接、合并的数据。现阶段的数据表连接时,可以根据二叉树结构对数据表中的数据进行检索。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:二叉树的节点数据均紧密相连,进行数据连接时,数据表中的数据存在大量一定不相关的数据。对数据进行连接时,需要读取存在的一定不相关数据,效率较低。
发明内容
有鉴于此,本发明利用布隆过滤器不会漏报的特点,提供了一种键值数据表的连接方法及装置,减少计算成本,提高计算效率。
本发明实施例提供一种键值数据表的连接方法,包括:
获取第一键值数据表中每个第一关键字对应的第一布隆数组,以及获取第二键值数据表中每个第二关键字对应的第二布隆数组;
过滤掉所述第一布隆数组、所述第二布隆数组对应的一定不存在重复关系的第一关键字和第二关键字;
根据过滤处理后的所述第一布隆数组对应的第一关键字、所述第二布隆数组对应的第二关键字,进行所述第一键值数据表和所述第二键值数据表的连接。
可选地,在本发明实施例中,所述第一布隆数组为根据哈希函数对所述第一键值数据表中的所述第一关键字进行映射得到的比特数组,所述第二布隆数组为根据哈希函数对所述第二键值数据表中的所述第二关键字映进行射得到的比特数组。
可选地,在本发明实施例中,所述过滤掉所述第一布隆数组、所述第二布隆数组对应的一定不存在重复关系的第一关键字和第二关键字包括:
根据第一布隆数组和所述第二布隆数组获得过滤数组,所述过滤数组分别与所述第一布隆数组、所述第二布隆数组进行比对,过滤掉所述第一布隆数组、所述第二布隆数组对应的一定不存在重复关系的第一关键字和第二关键字。
可选地,在本发明实施例中,所述根据第一布隆数组和所述第二布隆数组获得过滤数组,根据过滤数组过滤掉所述第一布隆数组、所述第二布隆数组对应的一定不存在重复关系的第一关键字和第二关键字包括:
对所述第一键值数据表对应的所有所述第一布隆数组进行处理得到第一统计数组,以及对第二键值数据表对应的所有所述第二布隆数组进行处理得到第二统计数组;
根据所述第一统计数组和所述第二统计数组获得过滤数组,过滤数组分别与所述第一布隆数组、所述第二布隆数组进行比对,过滤掉所述第一布隆数组、所述第二布隆数组对应的一定不存在重复关系的第一关键字和第二关键字。
可选地,在本发明实施例中,所述对所述第一键值数据表对应的所有所述第一布隆数组进行处理得到第一统计数组,以及对第二键值数据表对应的所有所述第二布隆数组进行处理得到第二统计数组包括:
对所述第一布隆数组进行同位操作得到所述第一统计数组,以及对所述第二布隆数组进行同位操作得到所述第二统计数组。
可选地,在本发明实施例中,所述对所述第一布隆数组进行同位操作得到所述第一统计数组,以及对所述第二布隆数组进行同位操作得到所述第二统计数组包括:
对所述第一布隆数组进行同位加操作得到第一计数数组,以及对所述第二布隆数组进行同位加操作得到第二计数数组;
将所述第一计数数组转换为比特数组,得到所述第一统计数组,以及将所述第二计数数组转换为比特数组,得到所述第二统计数组。
可选地,在本发明实施例中,还包括:当所述第一键值数据表更新时,根据更新后生成的所述第一布隆数组更新所述第一计数数组,以及当所述第二键值数据表更新时,根据更新后生成的所述第二布隆数组更新所述第二计数数组。
可选地,在本发明实施例中,所述根据所述第一统计数组和所述第二统计数组获得过滤数组包括:
对所述第一统计数组与所述第二统计数组进行同位与操作,得到所述过滤数组。
可选地,在本发明实施例中,所述过滤数组分别与所述第一布隆数组、所述第二布隆数组进行比对,过滤掉所述第一布隆数组、所述第二布隆数组对应的一定不存在重复关系的第一关键字和第二关键字包括:
将所述过滤数组与所述第一布隆数组、所述第二布隆数组进行同位比对,若所述第一布隆数组和/或所述第二布隆数组未全部覆盖所述过滤数组,则判定所述第一关键字和所述第二关键字一定不存在重复关系,则过滤掉其对应的第一关键字和/或第二关键字。
本发明实施例提供一种键值数据表的连接装置,包括:
处理模块,用于获取第一键值数据表中每个第一关键字对应的第一布隆数组,以及获取第二键值数据表中每个第二关键字对应的第二布隆数组;
过滤模块,用于过滤掉所述第一布隆数组、所述第二布隆数组对应的一定不存在重复关系的第一关键字和第二关键字;
连接模块,用于根据过滤处理后的所述第一布隆数组对应的第一关键字、所述第二布隆数组对应的第二关键字,进行第一键值数据表和第二键值数据表的连接。
本发明提供的一种键值数据表的连接方法及装置,通过获取第一键值数据表中每个第一关键字对应的第一布隆数组,以及获取第二键值数据表中每个第二关键字对应的第二布隆数组;过滤掉第一布隆数组、第二布隆数组对应的一定不存在重复关系的第一关键字和第二关键字;根据过滤处理后的第一布隆数组对应的第一关键字、第二布隆数组对应的第二关键字,进行第一键值数据表和第二键值数据表的连接,利用布隆过滤器不会漏报的特性,将需要连接的第一键值数据表与第二键值数据表中一定不存在重复关系的第一关键字与第二关键字过滤掉,再根据过滤后的数据表进行连接,与直接连接键值数据表相比,减少了需要连接的数据总量,从而减少了计算成本,提高了计算效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种键值数据表的连接方法流程示意图;
图2为本发明实施例提供的一种统计数组生成方法流程示意图;
图3为本发明实施例提供的另一种统计数组生成方法流程示意图;
图4为本发明实施例提供的一种键值数据表的过滤方法流程示意图;
图5为本发明实施例提供的一种键值数据表的连接装置结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种键值数据表的连接方法流程示意图,如图1所示,其包括:
S101、获取第一键值数据表中每个第一关键字对应的第一布隆数组,以及获取第二键值数据表中每个第二关键字对应的第二布隆数组;
第一键值数据表中,按照键值对进行第一关键字与对应数据的存储,在第一键值数据表中,第一关键字有多个且相互之间是不重复的,第一关键字对应的数据也是唯一的。第二键值数据表中,按照键值对进行第二关键字与对应数据的存储,第二关键字有多个且相互之间是不重复的,第二关键字对应的数据也是唯一的。
本实施例中,由于是两张不同的数据表,因此,第一键值数据表中的第一关键字与第二键值数据表中的第二关键字之间可能存在重复关系,根据存在重复关系的第一关键字与第二关键字才能对第一数据表与第二数据表进行连接。
在对第一/第二关键字进行存储时,是将第一/第二关键字转换为二进制进行存储的,需要的存储空间较大,导致根据第一/第二关键字进行查找、更改、删除等操作时,需要的处理的数据量太大,拖慢了操作实现的过程。本实施例中,通过将保存后的第一/第二关键字转换为第一/第二布隆数组,再将第一/第二布隆数组作为附加列保存至第一/第二键值数据表中,根据第一/第二布隆数组进行查找、更改、删除等操作,与第一/第二关键字转换为二进制所需的存储空间相比,第一/第二布隆数组所需的存储空间变小,减小了进行查找、更改、删除等操作时需要处理的数据量,从而提高了查找、更改、删除等操作的效率。
在生成第一/第二布隆数组的过程中,对第一关键字进行映射处理使用的哈希函数与对第二关键字进行映射处理使用的哈希函数相同,以保证相同的第一/第二关键字映射完成后得到的第一/第二布隆数组相同。
可选地,本实施例中,第一布隆数组与第二布隆数组可以参照布隆过滤器原理创建,具体地,第一布隆数组为根据一哈希函数对第一键值数据表中的第一关键字进行映射得到的比特数组,第二布隆数组为根据另一哈希函数对第二键值数据表中的第二关键字进行映射得到的比特数组。
但是,第一/第二布隆数组与布隆过滤器不同之处在于,布隆过滤器只包含一个比特数组,而第一键值数据表中由于存在多个第一关键字,会存在多个第一布隆数组,而每个第一布隆数组为新增在第一键值数据表中的一个比特数组,因此,第一键值数据表实际上新增了多个比特数组。类似地,第二键值数据表也新增了多个比特数组。本实施例中,第一布隆数组与第二布隆数组的容量相同,第一布隆数组与第二布隆数组的容量可以根据第一/第二键值数据表中的第一/第二关键字总量确定,第一/第二关键字的总量越大,需要预设的容量就越大,使根据第一/第二关键字映射得到的第一/第二布隆数组与第一/第二关键字的对应关系越紧密、出现哈希冲突的概率越小。哈希冲突指的是哈希值相同而原始记录不同,即根据第一/第二关键字映射得到的第一/第二布隆数组相同,但是第一/第二关键字不同。
S102、过滤掉第一布隆数组、第二布隆数组对应的一定不存在重复关系的第一关键字和第二关键字;
本实施例中,由于布隆数组是根据布隆过滤器的原理创建的,布隆数组同样有不会漏报的特性。根据这一特性查找数据时,其返回的数据中一定不会漏掉相关的数据,而返回的数据中不包含的数据一定与查找的内容无关。由此,可以根据第一布隆数组和第二布隆数组获得过滤数组,过滤数组代表第一键值数据表与第二键值数据表之间所有可能存在重复关系的第一关键字与第二关键字。具体地,可以将第一布隆数组与第二布隆数组合并,得到过滤数组。过滤数组分别与第一布隆数组、第二布隆数组进行比对,即以过滤数组作为基础内容在第一布隆数组与第二布隆数组中进行查找。查找到的结果为第一键值数据表与第二键值数据表中可能重复的第一关键字与第二关键字对应的第一布隆数组与第二布隆数组,将查找结果中未包含的第一/第二布隆数组对应的第一/第二关键字过滤掉,即将第一键值数据表与第二键值数据表中一定不存在重复关系的第一关键字与第二关键字过滤掉。
为了在生成过滤数组时减少合并布隆数组的工作量,可以根据布隆数组确定统计数组,再根据统计数组确定过滤数组,统计数组可以代表其对应的布隆数组代表的所有关键字。具体地,本实施例中,对第一键值数据表对应的所有第一布隆数组进行处理得到第一统计数组,以及对第二键值数据表对应的所有第二布隆数组进行处理得到第二统计数组;根据第一统计数组和第二统计数组获得过滤数组。
本实施例中,第一布隆数组和第二布隆数组根据相同的哈希函数映射到相同容量、相同初始值的比特数组中,处理得到第一统计数组和第二统计数组时,处理方法相同,因此,根据第一布隆数组得到的第一统计数组与根据第二布隆数组得到的第二统计数组的容量也相同。具体地,为得到过滤数组,可以将第一统计数组与第二统计数组进行同位与操作,同位与操作代表将第一统计数组对应的第一关键字与第二统计数组对应的第二关键字取交集,以根据交集去掉不存在重复关系的第一关键字与第二关键字。由于在求交集前进行了部分其他操作,所以求出来的交集可能不够精确,其中既包含存在重复关系的关键字,也包含部分不存在重复关系的关键字。
可选地,本实施例中,根据过滤数组过滤需要进行连接的第一键值数据表中的第一布隆数组与第二键值数据表中的第二布隆数组对应的一定不存在重复关系的第一关键字和第二关键字时,将第一键值数据表与第二键值数据表中第一布隆数组、第二布隆数组与过滤数组进行比对,并根据比对结果将第一布隆数组、第二布隆数组对应的与需要连接关键字一定不存在重复关系的其他关键字过滤掉,保留可能存在重复关系的关键字。
可替代的,本实施例中,还可以直接根据第一统计数组与第二统计数组对第一键值数据表中的第一关键字与第二键值数据表中的第二关键字进行过滤。由于第一统计数组代表第一键值数据表中的第一关键字的集合,可以在第二键值数据表中查找第一统计数组,查找得到的返回数据即第二键值数据表中可能与第一键值数据表中的第一关键字存在重复关系的第二关键字,则将未返回的第二关键字过滤掉,同理可以根据第二统计数组过滤第一键值数据表中的第一关键字。过滤后留下的即为可能存在重复关系的第一关键字与第二关键字。
S103、根据过滤处理后的第一布隆数组对应的第一关键字、第二布隆数组对应的第二关键字,进行第一键值数据表和第二键值数据表的连接。
第一布隆数组对应的第一关键字、第二布隆数组对应的第二关键字过滤处理后保留的是可能存在重复关系的第一关键字与第二关键字。根据第一键值数据表与第二键值数据表中存在重复关系的第一关键字与第二关键字进行连接后,可以得到一个根据重复关系的第一关键字与第二关键字合并后的数据表。
根据过滤掉后的第一键值数据表与第二键值数据表进行连接时,可以比对过滤后第一布隆数组与第二布隆数组,在根据比对结果判断其对应的第一关键字与第二关键字是否相同,若是相同,则根据关键字将两个键值数据表中的数据进行连接、合并。
数据表进行连接、合并在此根据具体示例进行说明。示例如下:
第一键值数据表中保存有三班的学号、姓名,其中第一关键字key1为学号,第一数据value1为姓名,第二键值数据表中保存有全校学生的学号、科目及成绩,其中第二关键字key2为学号,第二数据value2为科目及成绩,现在需要一张三班的学生成绩表,则将以上两个数据表根据第一关键字key1与第二关键字key2进行连接后可以得到一个新的键值数据表,新的键值数据表里面包括三班学生的学号(关键字key)及姓名、科目及成绩(数据value)。
本实施例中,由于在布隆数组生成的过程中一般存在哈希冲突,不能保证第一布隆数组与第二布隆数组重复,其对应的第一关键字与第二关键字一定重复。因此,在比对完第一布隆数组与第二布隆数组后,若是第一布隆数组与第二布隆数组相同,再进行精确比对,即进一步比对其对应的第一关键字与第二关键字是否相同,若第一关键字与第二关键字相同,则根据相同的第一关键字与第二关键字进行连接,否则不进行连接。
本实施例提供一种键值数据表的连接方法,利用布隆过滤器不会漏报的特性,引入布隆数组,并根据第一布隆数组与第二布隆数组将需要连接的第一键值数据表与第二键值数据表中一定不存在重复关系的第一关键字与第二关键字过滤掉,再根据过滤后的第一键值数据表与第二键值数据表进行连接,与直接连接相比,减少了需要连接的数据总量,从而减少了计算成本,提高了计算效率。
图2为本发明实施例提供的一种统计数组生成方法流程示意图,本实施例提供的统计数组生成方法通用于第一键值数据表与第二键值数据表,如图2所示,其包括:
S201、根据哈希函数对关键字进行映射得到布隆数组。
本实施例中,先确定K个独立的哈希函数、确定布隆数组的容量为M;再对每个保存后的关键字,使用这K个哈希函数,计算出K个哈希值;然后将K个哈希值分别执行对M的取模操作,得到K个0到M-1的值,将该条记录的布隆数组中每个哈希值对应的比特位赋值为1,得到布隆数组,例如,第1个哈希值取模后为3,把布隆数组中第3个比特位赋值为1;第2个哈希值取模后为5,把布隆数组中第5个比特位赋值为1。注意,如遇多个哈希值取模后得到的数字相同,则其对应的比特位重复置1或忽略即可。将关键字映射得到布隆数组时,尽量使所有的映射结果均匀分布在1-M之间,保证不超过布隆数组的容量,同时减小哈希冲突。根据哈希函数将关键字进行映射得到布隆数组后,将布隆数组作为一附加列保存至键值数据表中。
本步骤提供的根据哈希函数映射得到布隆数组的方法与生成布隆过滤器的方法类似,在此不再详细赘述。
S202、将布隆数组进行同位或操作得到统计数组。
同位或操作是指在键值数据表中,只要存在一个布隆数组中比特位为1,则将统计数组相同的比特位置1。通过将关键字对应的布隆数组进行同位与操作得到的统计数组是与布隆数组的容量相同的比特数组,统计数组代表键值数据表中关键字的集合。
本实施例提供的一种统计数组生成方法通用于第一键值数据表与第二键值数据表中,但是此操作只涉及一张键值数据表内的操作,并不包括第一键值数据表与第二键值数据表之间的操作。
图3为本发明实施例提供的另一种统计数组生成方法流程示意图,如图3所示,本实施例中,提出了另一种通用的统计数组生成方法,其可以针对第一键值数据表或者第二键值数据表,其具体可以包括:
S301、将关键字根据哈希函数映射生成布隆数组。
本步骤与上一实施例中的步骤S201相同,在此不再赘述。
S302、将布隆数组进行同位加操作,得到计数数组。
本实施例中,沿用以上实施例中的布隆数组的容量M,由于计数数组的容量与布隆数组的容量相同,因此也将计数数组的容量设为M,计数数组的每一个元素都初始化为0。计数数组是将一个比特数组扩展为一个计数器,通过增加几倍的存储空间,在布隆数组的基础上增加计数操作,计数数组的具体建立方式参考计数布隆过滤器。具体的,本实施例中,计数数组是将布隆数组进行加操作得到的,加操作指的是统计所有记录在布隆数组各比特位的值为1的数量,结果记为计数数组对应位的值。例如,共有100个布隆数组中第3个比特位的值为1,则计数数组中第3个元素赋值为100。可选地,本实施例中,根据布隆数组生成计数数组后,可以根据计数布隆过滤器的原理,将键值数据表中更新的数据更新至计数数组中,以进行键值数据表的连接等操作。键值数据表更新包括键值数据表增加、删除、修改记录。
当在键值数据表中增加某条数据时,根据增加后的数据对应的关键字生成新的布隆数组,将新的布隆数组中值为1的比特位,对应的计数数组中的位置加1。
当在键值数据表中删除某条数据时,根据关键字确定要删除的信息存在于键值数据表中,若确定存在,则确定删除的数据的关键字对应的布隆数组为1的比特位,并在计数数组相同的位置减1。
当在键值数据表中修改某条数据时,数据的关键字可能会发生变化,若关键字发生变化,则根据变化后的关键字计算得到新的布隆数组,并将布隆数组中由0变为1的比特位,在计数数组相同的位置加1;将布隆数组中由1变为0的比特位,在计数数组中相同的位置减1。
S303、将计数数组转换得到统计数组。
可选的,本实施例中,由于计数数组转换得到的统计数组,因此,将统计数组设为一比特数组后,统计数组的容量也设为M。将计数数组转换得到为统计数组时,先判断计数数组的元素是否大于0,再根据判断结果设置统计数组中比特位的值;如果大于0,则将统计数组相同的位置数值设为1,如果不大于0,则将统计数组相同的位置数值设为0。
如键值数据表进行了更新操作,第一/第二键值数据表之间进行连接前,更新的数据也应该更新至统计数组中,以保证连接的键值数据表的准确性。而上一步骤中增加的计数数组增加了更新的操作,为统计数组的更新提供了便利。因此若得到统计数组后,键值数据表进行了更新,则应该根据更新后的计数数组更新统计数组,再根据更新后的统计数组进行键值数据表的连接。其中,根据计数数组更新统计数组包括:若计数数组中由大于0的值变为0,将统计数组中相同的位置比特位清0;若计数数组中由0变为大于0的值,将统计数组中相同位置的比特位置1。
本实施例提供的一种统计数组生成方法通用于第一键值数据表与第二键值数据表中,但是此操作只涉及一张键值数据表内的操作,并不包括第一键值数据表与第二键值数据表之间的操作。
本实施例提供的一种统计数组生成方法,通过将关键字对应的布隆数组进行同位加操作,得到的计数数组,再根据计数数组得到统计数组,通过增加计数数组,实现了在更新键值数据表时只需对布隆数组、计数数组与统计数组进行少量更新计算,节约了计算成本。
图4为本发明实施例提供的一种键值数据表的过滤方法流程示意图,如图4所示,其包括:
S401、根据第一统计数组与第二统计数组,生成过滤数组。
假设需要连接的两张键值数据表分别为表A(第一键值数据表)和表B(第二键值数据表),它们的统计数组分别记为cbfA(第一统计数组)和cbfB(第二统计数组),设cbfA和cbfB均为容量为M的比特数组。将cbfA和cbfB进行与运算,即可得到过滤数组fbf。
S402、比对过滤数组与第一布隆数组、第二布隆数组,根据比对结果进行过滤。
本实施例中,生成第一/第二统计数组前,已经得到了第一/第二键值数据表中的第一/第二布隆数组。生成第一/第二统计数组的方法可以参照以上实施例,在此不再赘述。
设表A和表B的布隆数组分别为bfA(第一布隆数组)和bfB(第二布隆数组)。由于表A与表B均根据相同的哈希函数进行映射得到布隆数组bfA和bfB,再根据相同的处理方法得到cbfA和cbfB,因此,可以设bfA和bfB、cbfA和cbfB均为容量为M的比特数组。根据cbfA和cbfB得到代表关键字交集的过滤数组fbf后,比对过滤数组fbf与第一/第二布隆数组bfA或bfB。由于过滤数组fbf代表表A与表B之中第一关键字与第二关键字的交集,而布隆数组bfA和bfB代表表A与表B之中所有的关键字,因此比对过滤数组fbf与第一/第二布隆数组bfA或bfB,即可判断得到表A与表B中不在交集之内的关键字。如果过滤数组fbf值为1的位置,对应到布隆数组bfA或bfB相同的位置不全为1,则判定bfA或bfB对应的第一/第二关键字不在交集之内,则将bfA或bfB对应的第一/第二关键字过滤掉;如果过滤数组fbf值为1的位置,对应到布隆数组bfA或bfB相同的位置全为1,则判定bfA或bfB对应的第一/第二关键字在交集之内,则将bfA或bfB对应的第一/第二关键字保留。
本实施例提供的一种数据表过滤方法,根据得到的统计数组快速过滤掉需要连接的第一键值数据表与第二键值数据表之间不可能重复的数据,再进行第一键值数据表与第二键值数据表之间的连接,减少了需要连接的数据总量,从而减少了计算成本,提高了计算效率。
图5为本发明实施例提供的一种键值数据表的连接装置结构示意图,如图5所示,其包括:
处理模块501,用于获取第一键值数据表中每个第一关键字对应的第一布隆数组,以及获取第二键值数据表中每个第二关键字对应的第二布隆数组;
可选地,本实施例中,第一布隆数组为根据第一键值数据表中的第一关键字根据哈希函数映射得到的比特数组,第二布隆数组为根据第二键值数据表中的关键字根据哈希函数映射得到的比特数组。第一布隆数组与第二布隆数组均是根据布隆过滤器原理创建的。
本实施例中,处理模块501的具体实施方式类似于以上实施例中的步骤S101,在此不再赘述。
过滤模块502,用于过滤掉第一布隆数组、第二布隆数组对应的一定不存在重复关系的第一关键字和第二关键字;
可选地,本实施例中,根据第一布隆数组和第二布隆数组获得过滤数组,过滤数组代表第一键值数据表与第二键值数据表中所有存在重复关系的第一关键字与第二关键字,过滤数组分别与第一布隆数组、第二布隆数组进行比对,过滤掉第一布隆数组、第二布隆数组对应的一定不存在重复关系的第一关键字和第二关键字。
可选地,本实施例中,根据过滤数组过滤需要进行连接的第一键值数据表与第二键值数据表中第一布隆数组、第二布隆数组对应的一定不存在重复关系的第一关键字和第二关键字时,将第一键值数据表与第二键值数据表中第一布隆数组、第二布隆数组与过滤数组进行比对,并根据比对结果将第一布隆数组、第二布隆数组对应的与需要连接关键字一定不存在重复关系的其他关键字过滤掉,保留可能存在重复关系的关键字。
本实施例中,过滤模块502的具体实施方式类似于以上实施例中的步骤S102,在此不再赘述。
连接模块503,用于根据过滤处理后的第一布隆数组对应的第一关键字、第二布隆数组对应的第二关键字,进行第一键值数据表和第二键值数据表的连接。
本实施例中,连接模块503的具体实施方式类似于以上实施例中的步骤S103,在此不再赘述。
本申请实施例提供的一种键值数据表的连接装置,通过获取第一键值数据表中每个第一关键字对应的第一布隆数组,以及获取第二键值数据表中每个第二关键字对应的第二布隆数组;过滤掉第一布隆数组、第二布隆数组对应的一定不存在重复关系的第一关键字和第二关键字;根据过滤处理后的第一布隆数组对应的第一关键字、第二布隆数组对应的第二关键字,进行第一键值数据表和第二键值数据表的连接,利用布隆过滤器不会漏报的特性,将需要连接的第一键值数据表与第二键值数据表中一定不存在重复关系的第一关键字与第二关键字过滤掉,再根据过滤后的数据表进行连接,与直接连接相比,减少了需要连接的数据总量,从而减少了计算成本,提高了计算效率。
本领域的技术人员应明白,本发明实施例的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (7)
1.一种键值数据表的连接方法,其特征在于,包括:
获取第一键值数据表中每个第一关键字对应的第一布隆数组,以及获取第二键值数据表中每个第二关键字对应的第二布隆数组;
过滤掉所述第一布隆数组、所述第二布隆数组对应的一定不存在重复关系的所述第一关键字和所述第二关键字;
其中,根据所述第一布隆数组和所述第二布隆数组获得过滤数组,根据所述过滤数组过滤掉所述第一布隆数组、所述第二布隆数组对应的一定不存在重复关系的所述第一关键字和所述第二关键字包括:对所述第一键值数据表对应的所有所述第一布隆数组进行处理得到第一统计数组,以及对所述第二键值数据表对应的所有所述第二布隆数组进行处理得到第二统计数组;根据所述第一统计数组和所述第二统计数组获得所述过滤数组,所述过滤数组分别与所述第一布隆数组、所述第二布隆数组进行比对;
根据过滤处理后的所述第一布隆数组对应的所述第一关键字、所述第二布隆数组对应的所述第二关键字,进行所述第一键值数据表和所述第二键值数据表的连接;
其中,所述对所述第一键值数据表对应的所有所述第一布隆数组进行处理得到第一统计数组,以及对第二键值数据表对应的所有所述第二布隆数组进行处理得到第二统计数组包括:
将所述第一布隆数组和第二布隆数组根据相同的哈希函数映射到相同容量、相同初始值的比特数组中,对所述第一布隆数组进行同位操作得到所述第一统计数组,以及对所述第二布隆数组进行同位操作得到所述第二统计数组;
所述根据所述第一统计数组和所述第二统计数组获得过滤数组包括:对所述第一统计数组与所述第二统计数组进行同位与操作,得到所述过滤数组,通过所述同位与操作对所述第一统计数组对应的所述第一关键字和所述第二统计数组对应的第二关键字取交集。
2.根据权利要求1所述的方法,其特征在于,所述第一布隆数组为根据哈希函数对所述第一键值数据表中的所述第一关键字进行映射得到的比特数组,所述第二布隆数组为根据哈希函数对所述第二键值数据表中的所述第二关键字进行映射得到的比特数组。
3.根据权利要求1所述的方法,其特征在于,所述过滤掉所述第一布隆数组、所述第二布隆数组对应的一定不存在重复关系的所述第一关键字和所述第二关键字包括:
根据所述第一布隆数组和所述第二布隆数组获得过滤数组,所述过滤数组分别与所述第一布隆数组、所述第二布隆数组进行比对,过滤掉所述第一布隆数组、所述第二布隆数组对应的一定不存在重复关系的所述第一关键字和所述第二关键字。
4.根据权利要求1所述的方法,其特征在于,所述对所述第一布隆数组进行同位操作得到所述第一统计数组,以及对所述第二布隆数组进行同位操作得到所述第二统计数组包括:
对所述第一布隆数组进行同位加操作得到第一计数数组,以及对所述第二布隆数组进行同位加操作得到第二计数数组;
将所述第一计数数组转换为比特数组,得到所述第一统计数组,以及将所述第二计数数组转换为比特数组,得到所述第二统计数组。
5.根据权利要求4所述的方法,其特征在于,还包括:当所述第一键值数据表更新时,根据更新后生成的所述第一布隆数组更新所述第一计数数组,以及当所述第二键值数据表更新时,根据更新后生成的所述第二布隆数组更新所述第二计数数组。
6.根据权利要求1所述的方法,其特征在于,所述过滤数组分别与所述第一布隆数组、所述第二布隆数组进行比对,过滤掉所述第一布隆数组、所述第二布隆数组对应的一定不存在重复关系的所述第一关键字和所述第二关键字包括:
将所述过滤数组与所述第一布隆数组、所述第二布隆数组进行同位比对,若所述第一布隆数组和/或所述第二布隆数组未全部覆盖所述过滤数组,则判定所述第一关键字和所述第二关键字一定不存在重复关系,则过滤掉其对应的所述第一关键字和/或所述第二关键字。
7.一种键值数据表的连接装置,其特征在于,包括:
处理模块,用于获取第一键值数据表中每个第一关键字对应的第一布隆数组,以及获取第二键值数据表中每个第二关键字对应的第二布隆数组;
过滤模块,用于过滤掉所述第一布隆数组、所述第二布隆数组对应的一定不存在重复关系的第一关键字和第二关键字;
连接模块,用于根据过滤处理后的所述第一布隆数组对应的第一关键字、所述第二布隆数组对应的第二关键字,进行第一键值数据表和第二键值数据表的连接;
所述过滤模块,用于对所述第一键值数据表对应的所有所述第一布隆数组进行处理得到第一统计数组,以及对所述第二键值数据表对应的所有所述第二布隆数组进行处理得到第二统计数组;根据所述第一统计数组和所述第二统计数组获得过滤数组,所述过滤数组分别与所述第一布隆数组、所述第二布隆数组进行比对;
其中,所述过滤模块,所述对所述第一键值数据表对应的所有所述第一布隆数组进行处理得到第一统计数组,以及对第二键值数据表对应的所有所述第二布隆数组进行处理得到第二统计数组包括:
将所述第一布隆数组和第二布隆数组根据相同的哈希函数映射到相同容量、相同初始值的比特数组中,对所述第一布隆数组进行同位操作得到所述第一统计数组,以及对所述第二布隆数组进行同位操作得到所述第二统计数组;
所述根据所述第一统计数组和所述第二统计数组获得过滤数组包括:对所述第一统计数组与所述第二统计数组进行同位与操作,得到所述过滤数组,通过所述同位与操作对所述第一统计数组对应的所述第一关键字和所述第二统计数组对应的第二关键字取交集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611182420.1A CN108205571B (zh) | 2016-12-20 | 2016-12-20 | 键值数据表的连接方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611182420.1A CN108205571B (zh) | 2016-12-20 | 2016-12-20 | 键值数据表的连接方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108205571A CN108205571A (zh) | 2018-06-26 |
CN108205571B true CN108205571B (zh) | 2022-04-29 |
Family
ID=62603134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611182420.1A Active CN108205571B (zh) | 2016-12-20 | 2016-12-20 | 键值数据表的连接方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108205571B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271408B (zh) | 2018-08-31 | 2020-07-28 | 阿里巴巴集团控股有限公司 | 一种分布式数据连接处理方法、装置、设备及存储介质 |
CN111367992B (zh) * | 2018-12-25 | 2023-06-27 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及装置,计算机存储介质和电子设备 |
CN109739855B (zh) * | 2018-12-28 | 2022-03-01 | 第四范式(北京)技术有限公司 | 实现数据表拼接及自动训练机器学习模型的方法和系统 |
CN111475492B (zh) * | 2020-05-14 | 2023-06-16 | 支付宝(中国)网络技术有限公司 | 数据处理方法以及装置 |
CN113760898A (zh) * | 2021-01-25 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 表连接操作的处理方法和装置 |
US11841856B2 (en) * | 2022-03-24 | 2023-12-12 | Visa International Service Association | System, method, and computer program product for efficiently joining time-series data tables |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916261B (zh) * | 2010-07-28 | 2013-07-17 | 北京播思软件技术有限公司 | 一种分布式并行数据库系统的数据分区方法 |
CN102253820B (zh) * | 2011-06-16 | 2013-03-20 | 华中科技大学 | 一种流式重复数据检测方法 |
US8780635B2 (en) * | 2012-11-09 | 2014-07-15 | Sandisk Technologies Inc. | Use of bloom filter and improved program algorithm for increased data protection in CAM NAND memory |
CN103345472B (zh) * | 2013-06-04 | 2016-08-10 | 北京航空航天大学 | 基于有限二叉树布隆过滤器的去冗文件系统及其构建方法 |
CN103294822B (zh) * | 2013-06-17 | 2016-08-10 | 北京航空航天大学 | 一种基于主动哈希和布隆过滤器的高效缓存方法 |
CN106055679A (zh) * | 2016-06-02 | 2016-10-26 | 南京航空航天大学 | 一种多层次缓存感知型索引方法 |
-
2016
- 2016-12-20 CN CN201611182420.1A patent/CN108205571B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108205571A (zh) | 2018-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108205571B (zh) | 键值数据表的连接方法及装置 | |
WO2020147488A1 (zh) | 异常群体识别方法及装置 | |
CN108205577B (zh) | 一种数组构建、数组查询的方法、装置及电子设备 | |
CN108875077B (zh) | 数据库的列存储方法、装置、服务器及存储介质 | |
JP2013149277A (ja) | 圧縮データの構造を問い合わせる方法 | |
US10002142B2 (en) | Method and apparatus for generating schema of non-relational database | |
JP6751064B2 (ja) | データ検索システム、データ検索方法、及びプログラム | |
CN113342750A (zh) | 一种文件的数据比对方法、装置、设备及存储介质 | |
CN110168532A (zh) | 数据更新方法和存储装置 | |
CN108427736B (zh) | 一种用于查询数据的方法 | |
WO2021179488A1 (zh) | 监控数据存储方法、设备、服务器及存储介质 | |
CN105677903A (zh) | 获取数据的方法和装置、计算机设备 | |
CN107451204B (zh) | 一种数据查询方法、装置及设备 | |
CN108140022B (zh) | 数据查询方法和数据库系统 | |
WO2022199400A1 (zh) | 持久内存文件系统元数据的检索方法和装置、存储结构 | |
CN116881287A (zh) | 一种数据查询方法及相关设备 | |
CN114996240A (zh) | 数据表校验方法、装置、设备、存储介质及程序 | |
CN109344169B (zh) | 数据处理方法及装置 | |
CN114840487A (zh) | 分布式文件系统的元数据管理方法和装置 | |
CN111666302A (zh) | 用户排名的查询方法、装置、设备及存储介质 | |
CN116610700A (zh) | 查询语句检测方法及装置、存储介质 | |
CN113495901B (zh) | 一种面向可变长数据块的快速检索方法 | |
CN113360551B (zh) | 一种靶场中时序数据的存储与快速统计方法及系统 | |
US20070239794A1 (en) | Method and system for updating logical information in databases | |
CN111143006B (zh) | 命令帮助信息的获取方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |