CN109800228A - 一种高效快速解决hash冲突的方法 - Google Patents
一种高效快速解决hash冲突的方法 Download PDFInfo
- Publication number
- CN109800228A CN109800228A CN201811617641.6A CN201811617641A CN109800228A CN 109800228 A CN109800228 A CN 109800228A CN 201811617641 A CN201811617641 A CN 201811617641A CN 109800228 A CN109800228 A CN 109800228A
- Authority
- CN
- China
- Prior art keywords
- hash
- address
- cuckoo
- chain
- conflict
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种高效快速解决hash冲突的方法,一种高效快速解决hash冲突的方法,通过将布谷鸟散列思想与链地址法算法结合并引入LRU算法优化实现混合哈希表查找方法,可以优化hash表构造以及查找效率,同时提高hash table的利用率。将大大加速hash寻址key的索引进程。
Description
技术领域
本发明涉及一种解决hash冲突的方法。,更具体地说,涉及一种高效快速解决hash冲突的方法。
背景技术
散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位。但是散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值,由此引出hash冲突。
解决hash冲突可以使用开放定址法。所谓的开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入。这种方法总能找到空闲地址,但容易产生数据聚集现象,从而达不到记录的均匀分布;需要的存储空间大且利用不充分。
解决hash冲突还可以链地址法。链地址法就是一旦发生了冲突,将冲突的记录存入相应的链表中。链地址法处理冲突时无堆积现象,但是当链表元素逐渐累加变大时,性能会有所下降。
发明内容
本发明要解决的技术问题在于,针对现有技术中的缺陷,提供一种高效快速解决hash冲突的方法,优化hash冲突问题时处理的性能及存储空间问题。
本发明解决其技术问题所采用的技术方案是:构造一种高效快速解决hash冲突的方法,通过将布谷鸟散列思想与链地址法算法结合并引入LRU算法优化实现混合哈希表查找方法,优化hash表构造以及查找效率。
在本发明所述的高效快速解决hash冲突的方法中,所述高效快速解决hash冲突的方法步骤为:
S1.建立两个Hash表Table1和Table2组成布谷鸟散列表以及一个链地址哈希表Table3;同时创建三个Hash函数,hashA、hashB和hashC;
S2.获得key后根据函数hashA、hashB计算hashcode,检查建立两个表Table1、Table2所对应的地址是否为空,如果其中一个为空,则直接插入到空地址当中,同时添加键频次C(count)通过比较Table1和Table2对应地址频次,将出现概率大的分配在所需比较次数少的位置,以而提高查找效率;
S3.如果都不为空,则使用函数hashC插入到链地址哈希表Table3中,并为其添加键频次P(count);
S4.链地址表中的数据根据其P(count)的大小进行排序,将概率大的数据上浮至链地址表的表头;当链地址表中元素的概率大于布谷鸟散列表中元素的概率值时,链地址表中的元素将被移到布谷鸟散列表中,方便查找。
实施本发明的一种高效快速解决hash冲突的方法,具有以下有益效果:通过此发明可以优化hash表构造以及查找效率,同时提高hash table的利用率。将大大加速hash寻址key的索引进程。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明的高效快速解决hash冲突的方法流程图
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,所述高效快速解决hash冲突的方法步骤为:S1.建立两个Hash表Table1和Table2组成布谷鸟散列表以及一个链地址哈希表Table3;同时创建三个Hash函数,hashA、hashB和hashC;
S2.获得key后根据函数hashA、hashB计算hashcode,检查建立两个表Table1、Table2所对应的地址是否为空,如果其中一个为空,则直接插入到空地址当中,同时添加键频次C(count)通过比较Table1和Table2对应地址频次,将出现概率大的分配在所需比较次数少的位置,以而提高查找效率;
S3.如果都不为空,则使用函数hashC插入到链地址哈希表Table3中,并为其添加键频次P(count);
S4.链地址表中的数据根据其P(count)的大小进行排序,将概率大的数据上浮至链地址表的表头;当链地址表中元素的概率大于布谷鸟散列表中元素的概率值时,链地址表中的元素将被移到布谷鸟散列表中,方便查找。
进一步地,使用布谷鸟散列的思想利用较少的计算换取较大的空间,同时引入链表法解决布谷鸟散列在hash冲突处理时处理时间长的问题,并且通过LRU使得热点数据的查询效率变的更快。
尽管通过以上实施例对本发明进行了揭示,但本发明的保护范围并不局限于此,在不偏离本发明构思的条件下,对以上各构件所做的变形、替换等均将落入本发明的权利要求范围内。
Claims (2)
1.一种高效快速解决hash冲突的方法,其特征在于,所述高效快速解决hash冲突的方法步骤为:
S1.建立两个Hash表Table1和Table2组成布谷鸟散列表以及一个链地址哈希表Table3;同时创建三个Hash函数,hashA、hashB和hashC;
S2.获得key后根据函数hashA、hashB计算hashcode,检查建立两个表Table1、Table2所对应的地址是否为空,如果其中一个为空,则直接插入到空地址当中,同时添加键频次C(count)通过比较Table1和Table2对应地址频次,将出现概率大的分配在所需比较次数少的位置,以而提高查找效率;
S3.如果都不为空,则使用函数hashC插入到链地址哈希表Table3中,并为其添加键频次P(count);
S4.链地址表中的数据根据其P(count)的大小进行排序,将概率大的数据上浮至链地址表的表头;当链地址表中元素的概率大于布谷鸟散列表中元素的概率值时,链地址表中的元素将被移到布谷鸟散列表中,方便查找。
2.根据权利要求1所述的高效快速解决hash冲突的方法,其特征在于,使用布谷鸟散列的思想利用较少的计算换取较大的空间,同时引入链表法解决布谷鸟散列在hash冲突处理时处理时间长的问题,并且通过LRU使得热点数据的查询效率变的更快。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811617641.6A CN109800228B (zh) | 2018-12-28 | 2018-12-28 | 一种高效快速解决hash冲突的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811617641.6A CN109800228B (zh) | 2018-12-28 | 2018-12-28 | 一种高效快速解决hash冲突的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109800228A true CN109800228A (zh) | 2019-05-24 |
CN109800228B CN109800228B (zh) | 2023-03-10 |
Family
ID=66557883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811617641.6A Active CN109800228B (zh) | 2018-12-28 | 2018-12-28 | 一种高效快速解决hash冲突的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109800228B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111460510A (zh) * | 2020-04-17 | 2020-07-28 | 支付宝(杭州)信息技术有限公司 | 基于隐私保护确定相同业务数据的方法及装置 |
CN113360516A (zh) * | 2021-08-11 | 2021-09-07 | 成都信息工程大学 | 基于先进先出及最小活跃数策略的集合成员管理方法 |
CN113779320A (zh) * | 2021-08-18 | 2021-12-10 | 北京计算机技术及应用研究所 | 一种表项存储地址冲突的解决方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102346735A (zh) * | 2010-07-29 | 2012-02-08 | 高通创锐讯通讯科技(上海)有限公司 | 一种减少哈希冲突的哈希查找方法 |
CN105302838A (zh) * | 2014-07-31 | 2016-02-03 | 华为技术有限公司 | 分类方法、查找方法和设备 |
US20170192892A1 (en) * | 2016-01-06 | 2017-07-06 | Netapp, Inc. | High performance and memory efficient metadata caching |
WO2018120109A1 (zh) * | 2016-12-30 | 2018-07-05 | 华为技术有限公司 | 数据处理的方法和装置 |
CN108287840A (zh) * | 2017-01-09 | 2018-07-17 | 北京大学 | 一种基于矩阵哈希的数据存储和查询方法 |
-
2018
- 2018-12-28 CN CN201811617641.6A patent/CN109800228B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102346735A (zh) * | 2010-07-29 | 2012-02-08 | 高通创锐讯通讯科技(上海)有限公司 | 一种减少哈希冲突的哈希查找方法 |
CN105302838A (zh) * | 2014-07-31 | 2016-02-03 | 华为技术有限公司 | 分类方法、查找方法和设备 |
US20170192892A1 (en) * | 2016-01-06 | 2017-07-06 | Netapp, Inc. | High performance and memory efficient metadata caching |
WO2018120109A1 (zh) * | 2016-12-30 | 2018-07-05 | 华为技术有限公司 | 数据处理的方法和装置 |
CN108287840A (zh) * | 2017-01-09 | 2018-07-17 | 北京大学 | 一种基于矩阵哈希的数据存储和查询方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111460510A (zh) * | 2020-04-17 | 2020-07-28 | 支付宝(杭州)信息技术有限公司 | 基于隐私保护确定相同业务数据的方法及装置 |
CN113360516A (zh) * | 2021-08-11 | 2021-09-07 | 成都信息工程大学 | 基于先进先出及最小活跃数策略的集合成员管理方法 |
CN113779320A (zh) * | 2021-08-18 | 2021-12-10 | 北京计算机技术及应用研究所 | 一种表项存储地址冲突的解决方法 |
CN113779320B (zh) * | 2021-08-18 | 2024-02-27 | 北京计算机技术及应用研究所 | 一种表项存储地址冲突的解决方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109800228B (zh) | 2023-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109800228A (zh) | 一种高效快速解决hash冲突的方法 | |
CN108287840B (zh) | 一种基于矩阵哈希的数据存储和查询方法 | |
US11429609B2 (en) | Geo-scale analytics with bandwidth and regulatory constraints | |
US8799284B2 (en) | Method for automated scaling of a massive parallel processing (MPP) database | |
US9965504B2 (en) | Transient and persistent representation of a unified table metadata graph | |
CN105095413B (zh) | 一种解决数据倾斜的方法及装置 | |
EP3026579A1 (en) | Forced ordering of a dictionary storing row identifier values | |
CN106991102B (zh) | 倒排索引中键值对的处理方法及处理系统 | |
CN104008199B (zh) | 一种数据查询方法 | |
US9665612B2 (en) | Run-time decision of bulk insert for massive data loading | |
EP3862888A1 (en) | Hybrid data distribution in a massively parallel processing architecture | |
CN107679104B (zh) | 大表流式并行高速数据比对方法 | |
CN112015741A (zh) | 一种海量数据的分库分表存储方法与装置 | |
CN104871153A (zh) | 用于灵活的分布式大规模并行处理(mpp)数据库的系统和方法 | |
JP6418431B2 (ja) | 効率的な1対1結合のための方法 | |
CN107209768A (zh) | 用于数据集的可扩展排序的方法和设备 | |
US9489413B2 (en) | Asynchronous global index maintenance during partition maintenance | |
CN105095457A (zh) | 历史数据存储管理方法 | |
CN106991116B (zh) | 数据库执行计划的优化方法和装置 | |
CN100476815C (zh) | 网页标识抓取方法 | |
US9600517B2 (en) | Convert command into a BULK load operation | |
KR20180085633A (ko) | 질의 처리 장치 및 방법 | |
KR101658885B1 (ko) | 너비우선 탐색을 위한 그래프 처리 방법 및 장치 | |
CN112162981A (zh) | 一种自适应的路由分库分表方法及系统 | |
US11216438B2 (en) | Database creation and collision reduction |
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 | ||
CP03 | Change of name, title or address |
Address after: 518000 4001, Block D, Building 1, Chuangzhi Yuncheng Lot 1, Liuxian Avenue, Xili Community, Xili Street, Nanshan District, Shenzhen, Guangdong Patentee after: Shenzhen Zhuyun Technology Co.,Ltd. Address before: 518000 East, 3rd floor, incubation building, China Academy of science and technology, 009 Gaoxin South 1st Road, Nanshan District, Shenzhen City, Guangdong Province Patentee before: SHENZHEN BAMBOOCLOUD TECHNOLOGY CO.,LTD. |
|
CP03 | Change of name, title or address |