The invention relates to a compact key value pair storage structure and a fast key value pair searching method, belonging to the field of real-time large data processing and key value query technology. Based on a hierarchical hash table and a Bloom filter, the structure is stored on the first layer using a 2 left hashing hash structure. Each hash table is saved in the upper table as a data stored in the upper table, and the conflict data is preserved with the Bloom filter, and the \Bloom filter judgment\ is found. Whether the key has the results in the current set \as an index to improve the search speed, so as to improve the storage space utilization to make the structure compact and realize fast search software platform requirements. The invention can effectively solve the problems of the current large-scale key values, such as the uncertainty of storage and lookup time, the constant search speed, the slow speed of the software implementation and the requirement of the application.
【技术实现步骤摘要】
一种结构紧凑的键值对存储结构及快速键值对查找方法
本专利技术涉及一种结构紧凑的键值对存储结构及快速键值(key-value)对查找方法,特别涉及一种基于多层次哈希表(hashtable)和布鲁姆过滤器(bloomfilter,BF)的键值对存储和查找方法,属于实时大数据处理及键值查询
技术介绍
随着互联网规模的日益扩大,网络流量日益增长,计算机
对大数据存储和查找速率的要求越来越高。键值对查找问题在计算机领域的各个方向如大数据处理和高速网络中应用颇广。然而,键值对查找方法的性能严重受限于硬件资源,因此,在网络功能虚拟化的趋势下,适应软件平台更为重要且更加适应互联网发展。在一个软件平台中会同时处理多种任务,存储和查找方法不能独自占用一整个高速缓存(cache),因此,该方法要谨慎地控制放入cache中的结构大小,且避免频繁替换。然而,现有方法大多数更适应硬件平台,且在查找速度和cache使用效率方面不够高。现在已有的键值对查找方法主要分为哈希表查找,树形查找,以及基于布鲁姆过滤器的查找方法。哈希表方法是较为传统的方法,可以通过确定的时间复杂度O(1) ...
【技术保护点】
一种结构紧凑的键值对存储结构及快速键值对查找方法,其特征在于:核心思想是基于分层哈希表和布鲁姆过滤器相结合的结构,通过首层使用2‑left hashing哈希结构存储,每层哈希表都作为辅助表保存在上层表中发生存储冲突的数据,并结合布鲁姆过滤器进行冲突数据的保存,将“布鲁姆过滤器判断所查找的键是否存在当前集合中的结果”作为索引提高查找速度,从而提高存储空间利用率使结构紧凑并实现快速查找的软件平台要求。
【技术特征摘要】
1.一种结构紧凑的键值对存储结构及快速键值对查找方法,其特征在于:核心思想是基于分层哈希表和布鲁姆过滤器相结合的结构,通过首层使用2-lefthashing哈希结构存储,每层哈希表都作为辅助表保存在上层表中发生存储冲突的数据,并结合布鲁姆过滤器进行冲突数据的保存,将“布鲁姆过滤器判断所查找的键是否存在当前集合中的结果”作为索引提高查找速度,从而提高存储空间利用率使结构紧凑并实现快速查找的软件平台要求。2.一种结构紧凑的键值对存储结构,其特征在于:简称存储结构包括λ层哈希表,从第二层哈希表开始,每层哈希表中包含的总存储块数量呈等比序列递减,其中,优选的等比因子为10;其中,首层哈希表,即第一层哈希表,使用2-lefthashing哈希表,该哈希表存在左右两个子表,每个子表中包含相同个数的存储块;对于其余层哈希表,不存在子表的概念;其中,每个存储块包含N个存储单元,每个存储单元的大小为M比特;其中,M*N的范围小于使用该存储结构的计算机缓存行的大小,优选的N为8,优选的M为32或64比特;每个存储块中第一个存储单元保存该存储块中已被占用的存储单元个数,其余存储单元中存储的是键值对;其中,键值对包括键和值;具体存储时存储的是键的“值”和键的“校验值”;其中,存储的“值”部分可以存储该值本身或者指向值本身存储位置的指针,后文统称为值;键的“校验值”的计算可使用常用的校验算法,如crc循环冗余校验或md5校验算法;除最后一层哈希表外,每层哈希表对应一个布鲁姆过滤器,从第一层布鲁姆过滤器开始,每层布鲁姆过滤器的所占空间大小呈等比序列递减,其中,优选的等比因子为10。3.一种快速键值对查找方法,其特征在于:包括键值对数据存储过程和键值对查找过程;其中,键值对数据存储过程,即键值对插入过程,简称插入过程;键值对查找过程简称查找过程;其中,插入过程的具体步骤如下:步骤1,设置哈希表层数以及每一层哈希表包含存储块的个数,同时设置每一层哈希表对应的布鲁姆过滤器的大小;步骤2,设置哈希表每个存储块中包含的存储单元的个数N,设置每个存储单元的大小为M比特;步骤3,向第一层哈希表,即2-lefthashing,中插入数据,若不冲突,则该键值对插入成功,跳至步骤5;若冲突,则将数据标记在第一层对应的bloomfilter中,并执行步骤4;步骤4,判断当前层是否为最后一层,并根据判断结果,若为最后一层,则跳入步骤7,若当前层不是哈希表结构中的最后一层,应向当前层对应的布鲁姆过滤器集合中添加当前键,跳至步骤5;步骤5跳入下一层哈希表中,进行一次哈希运算,使用此哈希运算的结果确定一个存储块位置,通过判断该存储块和当前键是否存在冲突来进行如下操作:当出现插入数据冲突时,需要跳至步骤4;当插入数据不冲突时,将插入数据,即将该键的值和该键的校验值保存到该存储块的第一个空闲的存储单元中,进入步骤6;步骤6,数据插入成功,即键值对插入函数调用成功,函数返回1,结束插入过程;步骤7,数据插入失败,即键值对插入函数调用失败,函数返回0,结束插入过程;至此,从步骤1到步骤6或步骤7,完成了插入过程;第二部分键值对查找过程,即对于给出键值对中的键,查找对应键值对中的值的过程,简称查找过程,具体步骤如下:步骤8,在第一层布鲁姆过滤器集合中对给出键值对中的键进行查找,通过判断该键是否在该集合中保存,决定跳至步骤10还是步骤9;步骤9,在2-lefthashing中进行两次哈希计算,其结果在左右子表中分别确定一个存储块;将两个存储块中每个非空单元内的校验值和“根据当前键计算出的校验值”比较,查看是否存在相等的情况,决定跳至步骤14还是步骤15,步骤10,进入下一层布鲁姆过滤器,在下一层布鲁姆过滤器集合中对给出的键进行查找,通过判断该键是否在该布鲁姆过滤器集合中来进行如下操作:10.1若该键存在于该布鲁姆过滤器集合中,通过判断当前布鲁姆过滤器所在层是否为最后一层,决定跳至步骤11还是步骤10;10.2若该键不存在于该层布鲁姆过滤器集合中,进...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。