CN103020182B - 一种基于hash算法的数据查找方法 - Google Patents

一种基于hash算法的数据查找方法 Download PDF

Info

Publication number
CN103020182B
CN103020182B CN201210499041.0A CN201210499041A CN103020182B CN 103020182 B CN103020182 B CN 103020182B CN 201210499041 A CN201210499041 A CN 201210499041A CN 103020182 B CN103020182 B CN 103020182B
Authority
CN
China
Prior art keywords
data
back end
blacklist
memory location
gauge outfit
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
Application number
CN201210499041.0A
Other languages
English (en)
Other versions
CN103020182A (zh
Inventor
吴世林
苏建忠
黎劲松
Original Assignee
Shenzhen Xinguodu Tech Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Xinguodu Tech Co Ltd filed Critical Shenzhen Xinguodu Tech Co Ltd
Priority to CN201210499041.0A priority Critical patent/CN103020182B/zh
Publication of CN103020182A publication Critical patent/CN103020182A/zh
Application granted granted Critical
Publication of CN103020182B publication Critical patent/CN103020182B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种基于HASH算法的数据查找方法,该方法是先根据数据库的数据总容量,以设定值N进行HASH算法求值,并设有N个数据链表头,每个数据链表头指定其第一个数据节点的存储位置;再根据每个数据内容逐个算出HASH值,并将其链接至该HASH值相应的数据链表头指定的第一个数据节点的存储位置,若第一个数据节点已存储有数据时,则存储至其指向的下一个存储位置,依此类推。本发明查找方法具有查找速度更快的特点,能为系统节约宝贵时间。可移植及应用扩展性方面更好,不需依赖于POS机等使用终端的操作系统;占用内存很小,整个散列链表直接固化在文件上。本发明还可以用其它数据库的查找中,比如车牌黑名单查找、身份证黑名单的查找。

Description

一种基于HASH算法的数据查找方法
技术领域
本发明涉及一种数据查找方法,更具体地说是指一种将数据进行HASH算法之后,按其HASH值进行分组存储,再按HASH值进行查找的方法。
背景技术
现有技术中,各种海量数据在查找过程中都占用系统极大的资源,严重影响处理速度。比如,黑名单过滤技术目前被广泛地应用于金融、证券、商业等领域。针对金融和电子支付领域的黑名单数据,主要体现为银行卡的卡号或账户号。面对发展迅猛的电子支付、手机支付、POS终端消费、ATM自助终端等行业市场,为了有效防止丢卡、盗卡、账户外泄等造成的损失和风险,收单机构或发卡机构会对挂失的或被认定为风险的卡号和账户设定成黑名单,并动态下发更新到用户操作终端,进行拦截非法操作处理,限定黑名单里的卡号或账户的消费、取款、转账等涉及资金变动的操作,从而达到防损失和防风险的目的。
由于黑名单的数据量庞大,目前现有的技术方案大多是基于嵌入式数据库进行处理,进行固定格式存取处理。
由于黑名单的数据量庞大,要实现快速定位到具体的某条记录数据,需要经过繁杂的查找和比较,才能得知结果。在这一个过程中,需要较大的内存空间和较长的时间才能实现。目前市场上的一些终端设备采用移植嵌入式数据库对黑名单数据进行处理。嵌入式数据库对设备的操作系统依赖性强,必须具备适合的操作系统才能移植和使用,而且在使用过程中会使得系统开销增大;嵌入式数据库会对数据源进行格式化处理,并生成适用于自身的数据格式,但会使数据量大增加,所以存储容量要求较高;嵌入式数据库在查找定位的时间上存在瓶颈,对于可变长度的黑名单处理效率较低,耗时较多,无法满足具有高度快速找查并完成处理的脱机消费、电子支付等需求。
因此,为了解决现有技术中对黑名单之类的数据能以快速方式地进行查找的问题,有必要开发一种新的查找方法。
发明内容
本发明的目的在于克服现有技术的缺陷,提供一种基于HASH算法的数据查找方法。
为实现上述目的,本发明采用以下技术方案:
一种基于HASH算法的数据查找方法,该方法是先根据数据库的数据总容量,以设定值N进行HASH算法求值,并设有N个数据链表头,每个数据链表头指定其第一个数据节点的存储位置;再根据每个数据内容逐个算出HASH值,并将其链接至该HASH值相应的数据链表头指定的第一个数据节点的存储位置,若第一个数据节点已存储有数据时,则存储至其指向的下一个存储位置,依此类推;其中,每个数据节点包括数据内容和同一HASH值的下一个数据节点的存储位置指向;查找时,先对待查找的数据进行HASH算法,按其HASH值,找到相应的数据链表头,再根据数据链表头指向的存储装置逐一进行查找对比,若发现有相同数据内容的数据节点,则待查数据处于数据库,若一直查找对比至该数据链表头的最后一个数据节点时,均未查找到有相同的数据内容时,则待查数据不在数据库中。
其进一步技术方案为:所述的数据节点还包括数据长度值,查找对比时,先将待查数据的数据长度与数据节点的数据长度值比较,若长度值相同时,再进行数据内容的比较,若长度值不相同时,则与下一个位置的数据节点进行查找对比。
其进一步技术方案为:当有新的数据内容添加时,对其内容进行HASH算法求值,按其HASH值找到相应的数据链表头,将其存储至该数据链表头的最后一个数据节点指向的存储位置。
其进一步技术方案为:若有数据需要删除时,以同样的方式找到待删数据的数据节点,对全部内容进行删除,并将其下一个数据节点的存储位置指向的内容替换至上一个存储位置的数据节点的存储位置指向。
其进一步技术方案为:删除某一数据节点时,同时修改该数据链表头的最后一个数据节点的存储位置指向为被删除数据节点的存储位置。
其进一步技术方案为:所述的数据库为银行用户黑名单。
本发明与现有技术相比的有益效果是:本发明查找方法具有查找速度更快的特点,能为系统节约宝贵时间。在1万条长度为40的银行用户黑名单中查找所需大时间为1~3ms,在20万条长度为40的银行用户黑名单中查找所需最大时间为5~10ms;存储空间更小,针对黑名单的数据特性,对数据进行压缩存储,删除数据后的零散存储空间能马上被利用;可移植及应用扩展性方面更好,不需依赖于POS机等使用终端的操作系统;占用内存很小,整个散列链表直接固化在文件上。本发明还可以用其它数据库的查找中,比如车牌黑名单查找、身份证黑名单的查找。
下面结合附图和具体实施例对本发明作进一步描述。
附图说明
图1为本发明一种基于HASH算法的数据查找方法具体实施例的每个数据链表容器内的链接示意图;
图2为本发明一种基于HASH算法的数据查找方法具体实施例的数据存储之后每个数据节点之间的链接示意图;
图3为本发明一种基于HASH算法的数据查找方法具体实施例的在同一数据链表容器内的数据查找对比的流程示意图。
具体实施方式
为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。
本发明一种基于HASH算法的数据查找方法,该方法是先根据数据库的数据总容量,以设定值N进行HASH算法求值,并设有N个数据链表头,每个数据链表头指定其第一个数据节点的存储位置;再根据每个数据内容逐个算出HASH值,并将其链接至该HASH值相应的数据链表头指定的第一个数据节点的存储位置,若第一个数据节点已存储有数据时,则存储至其指向的下一个存储位置,依此类推;其中,每个数据节点包括数据内容和同一HASH值的下一个数据节点的存储位置指向;查找时,先对待查找的数据进行HASH算法,按其HASH值,找到相应的数据链表头,再根据数据链表头指向的存储装置逐一进行查找对比,若发现有相同数据内容的数据节点,则待查数据处于数据库,若一直查找对比至该数据链表头的最后一个数据节点时,均未查找到有相同的数据内容时,则待查数据不在数据库中。
其中,数据节点还包括数据长度值,查找对比时,先将待查数据的数据长度与数据节点的数据长度值比较,若长度值相同时,再进行数据内容的比较,若长度值不相同时,则与下一个位置的数据节点进行查找对比。
当有新的数据内容添加时,对其内容进行HASH算法求值,按其HASH值找到相应的数据链表头,将其存储至该数据链表头的最后一个数据节点指向的存储位置。
若有数据需要删除时,以同样的方式找到待删数据的数据节点,对全部内容进行删除,并将其下一个数据节点的存储位置指向的内容替换至上一个存储位置的数据节点的存储位置指向。删除某一数据节点时,同时修改该数据链表头的最后一个数据节点的存储位置指向为被删除数据节点的存储位置。本实施例中,数据库为银行用户黑名单。
本发明的实现算法方案如下:
算法原理:
设定n个容器容纳(slot)所有黑名单数据所算得的hash值,并保证所算得的hash值都落在【0~n】这个区间,运算模型为:value=fnHash(x)%n。
由于hash算得的值会存在相同,为了保证数据的完整性,采用n个链表记录这些黑名单数据,每一个链表容器Slot(x)记录一个相同value的所有黑名单数据。一个黑名单数据体现为链表中的一个节点Node,如图1所示。
根据黑名单数据的特征,对黑名单数据进行压缩后保存在链表节点的Data内,不足长度的内容以0xF补全。并将所有容器链表Slot(x)及数据固化到文件中,固化后所有黑名单数据是无序的,但可通过链表拓扑访问到所有的黑名单数据。如图2所示。
数据的查找:
a)对待查找的数据进行fnHash(x),得到待查找数据的落点位置,即落在哪个Slot链表中,并得到待查数据的长度。
b)在对应的Slot链表中进行查找所有长度匹配的节点Node,即找出所有长度一致的黑名单数据。
c)与匹配长度的节点的黑名单数据进行比较。
d)进行完上述a)、b)、c)步骤都没找到相同的数据,则认为待查数据不在黑名单文件中。
本发明实现了基于hash散列思维的黑名单快速查找算法。即为了达到快速查找并匹配并与黑名单比较,采用了hash散列思维,对黑名单数据存入存储器时,重新初始化建立重映射关系,压缩在一个小的映射表内,再进行数据处理,并通过该表进行链表式数据扩展,固化在文件上。即将大型数据通过散列算法进行分割小块处理,实现快速定位。
1.其关键内容是将大型的数据,按算法进行格式化,生成一个存在n组的数据链表式散列网络拓扑的文件。即根据hash算法,对每个黑名单数据都计算出一个hash值,使该值落点都落在指定的范围区内【0~n】,为保证不丢失数据,为每个算得相同hash值的黑名单构建一个链表数据进行记录,查找黑名单时,先对黑名单计算hash值,可以快速定位到黑名单所在的链表中,然后在相同hash值的链表中匹配确认要查找的黑名单是否存在。
2.同时,链表中的每个黑名单数据视为链表的一个节点,并将这些链表数据固化在文件的内容中,当前节点数据直接包含下一个节点数据在文件中的偏移位置,这样遍历某个hash值链表时,处理当前节点的时候,也同时知道下一个节点在文件中位置。查找黑名单时,打开文件,读出一个节点数据进行匹配比较,如果数据一致返回查找到记录,否则根据当前的节点指向位置,查找一个节点数据进行匹配直至匹配成功或查找到链表结束,这个过程中,仅需申请一个节点的内存即可,这样使用大大的节省了内存开销而无需将链表运行于内存当中就能快速匹配链表中的黑名单数据。
3.为进一步提升黑名单查找过程中的匹配速度,对每个黑名单的数据加入长度信息(即数据长度值),查找时,只与长度匹配的链表节点数据进行比较,使得比较的次数及时间再次减少,从需降低查找时间,提交效率。
于其它实施例中,数据库也可以是身份证黑名单或车牌黑名单等。
综上所述,本发明查找方法具有查找速度更快的特点,能为系统节约宝贵时间。在1万条长度为40的银行用户黑名单中查找所需大时间为1~3ms,在20万条长度为40的银行用户黑名单中查找所需最大时间为5~10ms;存储空间更小,针对黑名单的数据特性,对数据进行压缩存储,删除数据后的零散存储空间能马上被利用;可移植及应用扩展性方面更好,不需依赖于POS机等使用终端的操作系统;占用内存很小,整个散列链表直接固化在文件上。本发明还可以用其它数据库的查找中,比如车牌黑名单查找、身份证黑名单的查找。
上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。

Claims (1)

1.一种基于HASH算法的数据查找方法,该方法是先根据数据库的数据总容量,以设定值N进行HASH算法求值,并设有N个数据链表头,每个数据链表头指定其第一个数据节点的存储位置;再根据每个数据内容逐个算出HASH值,并将其链接至该HASH值相应的数据链表头指定的第一个数据节点的存储位置,若第一个数据节点已存储有数据时,则存储至其指向的下一个存储位置,依此类推;其中,每个数据节点包括数据内容和同一HASH值的下一个数据节点的存储位置指向;查找时,先对待查找的数据进行HASH算法,按其HASH值,找到相应的数据链表头,再根据数据链表头指向的存储装置逐一进行查找对比,若发现有相同数据内容的数据节点,则待查数据处于数据库,若一直查找对比至该数据链表头的最后一个数据节点时,均未查找到有相同的数据内容时,则待查数据不在数据库中;
其中,数据节点还包括数据长度值,查找对比时,先将待查数据的数据长度与数据节点的数据长度值比较,若长度值相同时,再进行数据内容的比较,若长度值不相同时,则与下一个位置的数据节点进行查找对比;
当有新的数据内容添加时,对其内容进行HASH算法求值,按其HASH值找到相应的数据链表头,将其存储至该数据链表头的最后一个数据节点指向的存储位置;
若有数据需要删除时,以同样的方式找到待删数据的数据节点,对全部内容进行删除,并将其下一个数据节点的存储位置指向的内容替换至上一个存储位置的数据节点的存储位置指向;删除某一数据节点时,同时修改该数据链表头的最后一个数据节点的存储位置指向为被删除数据节点的存储位置;其中的数据库为银行用户黑名单;
采用的算法为:
设定n个容器容纳(slot)所有黑名单数据所算得的hash值,并保证所算得的hash值都落在【0~n】这个区间,运算模型为:value=fnHash(x)%n;
由于hash算得的值会存在相同,为了保证数据的完整性,采用n个链表记录这些黑名单数据,每一个链表容器Slot(x)记录一个相同value的所有黑名单数据;
一个黑名单数据体现为链表中的一个节点Node;
根据黑名单数据的特征,对黑名单数据进行压缩后保存在链表节点的Data内,不足长度的内容以0xF补全;并将所有容器链表Slot(x)及数据固化到文件中,固化后所有黑名单数据是无序的,但可通过链表拓扑访问到所有的黑名单数据;
数据的查找过程为:
a)对待查找的数据进行fnHash(x),得到待查找数据的落点位置,即落在哪个Slot链表中,并得到待查数据的长度;
b)在对应的Slot链表中进行查找所有长度匹配的节点Node,即找出所有长度一致的黑名单数据;
c)与匹配长度的节点的黑名单数据进行比较;
d)进行完上述a)、b)、c)步骤都没找到相同的数据,则认为待查数据不在黑名单文件中。
CN201210499041.0A 2012-11-29 2012-11-29 一种基于hash算法的数据查找方法 Active CN103020182B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210499041.0A CN103020182B (zh) 2012-11-29 2012-11-29 一种基于hash算法的数据查找方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210499041.0A CN103020182B (zh) 2012-11-29 2012-11-29 一种基于hash算法的数据查找方法

Publications (2)

Publication Number Publication Date
CN103020182A CN103020182A (zh) 2013-04-03
CN103020182B true CN103020182B (zh) 2016-04-20

Family

ID=47968786

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210499041.0A Active CN103020182B (zh) 2012-11-29 2012-11-29 一种基于hash算法的数据查找方法

Country Status (1)

Country Link
CN (1) CN103020182B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103997558B (zh) * 2014-06-10 2016-07-06 宁波大学 一种面向手机的黑名单快速匹配方法
CN104700459B (zh) * 2015-03-20 2016-03-23 东南大学 一种提高afc系统终端设备黑名单匹配效率的方法
CN107967301B (zh) * 2017-11-07 2021-05-04 许继电气股份有限公司 一种电力电缆隧道监控数据的存储、查询方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1389999A (zh) * 2001-05-31 2003-01-08 深圳市中兴通讯股份有限公司 一种查找国际移动识别号和电子序列号的方法
CN101122885A (zh) * 2007-09-11 2008-02-13 腾讯科技(深圳)有限公司 一种数据缓存处理方法、系统及数据缓存装置
CN102314485A (zh) * 2011-07-27 2012-01-11 中国科学院计算机网络信息中心 哈希表添加、查找和删除方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2475252A (en) * 2009-11-10 2011-05-18 Skype Ltd A hashing scheme is used to facilitate identifying the presence of matching information items on different network nodes without disclosing the information.

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1389999A (zh) * 2001-05-31 2003-01-08 深圳市中兴通讯股份有限公司 一种查找国际移动识别号和电子序列号的方法
CN101122885A (zh) * 2007-09-11 2008-02-13 腾讯科技(深圳)有限公司 一种数据缓存处理方法、系统及数据缓存装置
CN102314485A (zh) * 2011-07-27 2012-01-11 中国科学院计算机网络信息中心 哈希表添加、查找和删除方法及装置

Also Published As

Publication number Publication date
CN103020182A (zh) 2013-04-03

Similar Documents

Publication Publication Date Title
CN103488709B (zh) 一种索引建立方法及系统、检索方法及系统
CN102831222B (zh) 一种基于重复数据删除的差量压缩方法
CN102754394B (zh) 一种哈希表存储、查找方法以及装置
CN102467572B (zh) 支持重复数据删除程序的数据区块查询方法
WO2018121430A1 (zh) 文件存储和索引方法、装置、介质、设备及读取文件的方法
CN101625703B (zh) 一种内存数据库的日志合并方法和系统
CN103383690B (zh) 分布式数据存储方法及系统
CN103020182B (zh) 一种基于hash算法的数据查找方法
CN107958079A (zh) 聚合文件删除方法、系统、装置及可读存储介质
CN106407224A (zh) 一种键值存储系统中文件压实的方法和装置
CN103678158B (zh) 一种数据布局优化方法及系统
CN103581331A (zh) 虚拟机在线迁移方法与系统
CN103312627B (zh) 基于两级存储的正则表达式匹配方法
CN102024034A (zh) 一种面向高清媒体的嵌入式文件系统的碎片处理方法
CN101751475B (zh) 号段记录压缩方法及其装置
CN107967360A (zh) 一种实时数据库文件存储方法
CN101707513A (zh) 基于正则表达式的深度包检测方法及设备
CN109902125A (zh) 一种基于现有数据库的分布式储存方法
CN107678892A (zh) 基于跳跃恢复链的连续数据保护方法
CN111008183B (zh) 一种用于业务风控日志数据的存储方法及系统
CN101916259B (zh) 确定自动机状态转换表的空间压缩方法
CN104536700B (zh) 一种码流数据的快速存储/读取方法及系统
CN110413631A (zh) 一种数据查询方法及装置
CN104142979A (zh) 一种实现rfid标签存储管理的索引方法
CN102567377B (zh) 电子地图数据管理系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 17th Floor, Jinsong Building, Tairan Industry and Trade Park, Futian District, Shenzhen, Guangdong 518000

Patentee after: Shenzhen Xinguodu Co.,Ltd.

Address before: 17th Floor, Jinsong Building, Tairan Industry and Trade Park, Futian District, Shenzhen, Guangdong 518000

Patentee before: SHENZHEN XINGUODU TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20220809

Address after: 518000 17b, Jinsong building, Tairan 4th Road, Shatou street, Futian District, Shenzhen City, Guangdong Province

Patentee after: Shenzhen Xinguodu Technology Co.,Ltd.

Address before: 17th Floor, Jinsong Building, Tairan Industry and Trade Park, Futian District, Shenzhen, Guangdong 518000

Patentee before: Shenzhen Xinguodu Co.,Ltd.

TR01 Transfer of patent right