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

文档序号:6382617阅读:901来源:国知局
专利名称:一种基于hash算法的数据查找方法
技术领域
本发明涉及一种数据查找方法,更具体地说是指一种将数据进行HASH算法之后, 按其HASH值进行分组存储,再按HASH值进行查找的方法。
背景技术
现有技术中,各种海量数据在查找过程中都占用系统极大的资源,严重影响处理 速度。比如,黑名单过滤技术目前被广泛地应用于金融、证券、商业等领域。针对金融和电 子支付领域的黑名单数据,主要体现为银行卡的卡号或账户号。面对发展迅猛的电子支付、 手机支付、POS终端消费、ATM自助终端等行业市场,为了有效防止丢卡、盗卡、账户外泄等 造成的损失和风险,收单机构或发卡机构会对挂失的或被认定为风险的卡号和账户设定成 黑名单,并动态下发更新到用户操作终端,进行拦截非法操作处理,限定黑名单里的卡号或 账户的消费、取款、转账等涉及资金变动的操作,从而达到防损失和防风险的目的。
由于黑名单的数据量庞大,目前现有的技术方案大多是基于嵌入式数据库进行处 理,进行固定格式存取处理。
由于黑名单的数据量庞大,要实现快速定位到具体的某条记录数据,需要经过繁 杂的查找和比较,才能得知结果。在这一个过程中,需要较大的内存空间和较长的时间才能 实现。目前市场上的一些终端设备采用移植嵌入式数据库对黑名单数据进行处理。嵌入式 数据库对设备的操作系统依赖性强,必须具备适合的操作系统才能移植和使用,而且在使 用过程中会使得系统开销增大;嵌入式数据库会对数据源进行格式化处理,并生成适用于 自身的数据格式,但会使数据量大增加,所以存储容量要求较高;嵌入式数据库在查找定位 的时间上存在瓶颈,对于可变长度的黑名单处理效率较低,耗时较多,无法满足具有高度快 速找查并完成处理的脱机消费、电子支付等需求。
因此,为了解决现有技术中对黑名单之类的数据能以快速方式地进行查找的问 题,有必要开发一种新的查找方法。发明内容
本发明的目的在于克服现有技术的缺陷,提供一种基于HASH算法的数据查找方法。
为实现上述目的,本发明采用以下技术方案
一种基于HASH算法的数据查找方法,该方法是先根据数据库的数据总容量,以设 定值N进行HASH算法求值,并设有N个数据链表头,每个数据链表头指定其第一个数据节 点的存储位置;再根据每个数据内容逐个算出HASH值,并将其链接至该HASH值相应的数 据链表头指定的第一个数据节点的存储位置,若第一个数据节点已存储有数据时,则存储 至其指向的下一个存储位置,依此类推;其中,每个数据节点包括数据内容和同一 HASH值 的下一个数据节点的存储位置指向;查找时,先对待查找的数据进行HASH算法,按其HASH 值,找到相应的数据链表头,再根据数据链表头指向的存储装置逐一进行查找对比,若发现有相同数据内容的数据节点,则待查数据处于数据库,若一直查找对比至该数据链表头的 最后一个数据节点时,均未查找到有相同的数据内容时,则待查数据不在数据库中。
其进一步技术方案为所述的数据节点还包括数据长度值,查找对比时,先将待查 数据的数据长度与数据节点的数据长度值比较,若长度值相同时,再进行数据内容的比较, 若长度值不相同时,则与下一个位置的数据节点进行查找对比。
其进一步技术方案为当有新的数据内容添加时,对其内容进行HASH算法求值, 按其HASH值找到相应的数据链表头,将其存储至该数据链表头的最后一个数据节点指向 的存储位置。
其进一步技术方案为若有数据需要删除时,以同样的方式找到待删数据的数据 节点,对全部内容进行删除,并将其下一个数据节点的存储位置指向的内容替换至上一个 存储位置的数据节点的存储位置指向。
其进一步技术方案为删除某一数据节点时,同时修改该数据链表头的最后一个 数据节点的存储位置指向为被删除数据节点的存储位置。
其进一步技术方案为所述的数据库为银行用户黑名单。
本发明与现有技术相比的有益效果是本发明查找方法具有查找速度更快的特 点,能为系统节约宝贵时间。在I万条长度为40的银行用户黑名单中查找所需大时间为 I 3ms,在20万条长度为40的银行用户黑名单中查找所需最大时间为5 IOms ;存储空 间更小,针对黑名单的数据特性,对数据进行压缩存储,删除数据后的零散存储空间能马上 被利用;可移植及应用扩展性方面更好,不需依赖于POS机等使用终端的操作系统;占用内 存很小,整个散列链表直接固化在文件上。本发明还可以用其它数据库的查找中,比如车牌 黑名单查找、身份证黑名单的查找。
下面结合附图和具体实施例对本发明作进一步描述。


图1为本发明一种基于HASH算法的数据查找方法具体实施例的每个数据链表容 器内的链接示意图2为本发明一种基于HASH算法的数据查找方法具体实施例的数据存储之后每 个数据节点之间的链接示意图3为本发明一种基于HASH算法的数据查找方法具体实施例的在同一数据链表 容器内的数据查找对比的流程示意图。
具体实施方式
为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进 一步介绍和说明,但不局限于此。
本发明一种基于HASH算法的数据查找方法,该方法是先根据数据库的数据总容 量,以设定值N进行HASH算法求值,并设有N个数据链表头,每个数据链表头指定其第一 个数据节点的存储位置;再根据每个数据内容逐个算出HASH值,并将其链接至该HASH值 相应的数据链表头指定的第一个数据节点的存储位置,若第一个数据节点已存储有数据 时,则存储至其指向的下一个存储位置,依此类推;其中,每个数据节点包括数据内容和同一 HASH值的下一个数据节点的存储位置指向;查找时,先对待查找的数据进行HASH算法, 按其HASH值,找到相应的数据链表头,再根据数据链表头指向的存储装置逐一进行查找对比,若发现有相同数据内容的数据节点,则待查数据处于数据库,若一直查找对比至该数据链表头的最后一个数据节点时,均未查找到有相同的数据内容时,则待查数据不在数据库中。
其中,数据节点还包括数据长度值,查找对比时,先将待查数据的数据长度与数据节点的数据长度值比较,若长度值相同时,再进行数据内容的比较,若长度值不相同时,则与下一个位置的数据节点进行查找对比。
当有新的数据内容添加时,对其内容进行HASH算法求值,按其HASH值找到相应的数据链表头,将其存储至该数据链表头的最后一个数据节点指向的存储位置。
若有数据需要删除时,以同样的方式找到待删数据的数据节点,对全部内容进行删除,并将其下一个数据节点的存储位置指向的内容替换至上一个存储位置的数据节点的存储位置指向。删除某一数据节点时,同时修改该数据链表头的最后一个数据节点的存储位置指向为被删除数据节点的存储位置。本实施例中,数据库为银行用户黑名单。
本发明的实现算法方案如下
算法原理
设定η个容器容纳(slot)所有黑名单数据所算得的hash值,并保证所算得的 hash值都落在O η这个区间,运算模型为value=fnHash (χ)%η。
由于hash算得的值会存在相同,为了保证数据的完整性,采用η个链表记录这些黑名单数据,每一个链表容器Slot(X)记录一个相同value的所有黑名单数据。一个黑名单数据体现为链表中的一个节点Node,如图1所示。
根据黑名单数据的特征,对黑名单数据进行压缩后保存在链表节点的Data内,不足长度的内容以OxF补全。并将所有容器链表Slot(X)及数据固化到文件中,固化后所有黑名单数据是无序的,但可通过链表拓扑访问到所有的黑名单数据。如图2所示。
数据的查找
a)对待查找的数据进行fnHash(x),得到待查找数据的落点位置,即落在哪个 Slot链表中,并得到待查数据的长度。
b)在对应的Slot链表中进行查找所有长度匹配的节点Node,即找出所有长度一致的黑名单数据。
c)与匹配长度的节点的黑名单数据进行比较。
d)进行完上述a)、b)、c)步骤都没找到相同的数据,则认为待查数据不在黑名单文件中。
本发明实现了基于hash散列思维的黑名单快速查找算法。即为了达到快速查找并匹配并与黑名单比较,采用了 hash散列思维,对黑名单数据存入存储器时,重新初始化建立重映射关系,压缩在一个小的映射表内,再进行数据处理,并通过该表进行链表式数据扩展,固化在文件上。即将大型数据通过散列算法进行分割小块处理,实现快速定位。
1.其关键内容是将大型的数据,按算法进行格式化,生成一个存在η组的数据链表式散列网络拓扑的文件。即根据hash算法,对每个黑名单数据都计算出一个hash值,使该值落点都落在指定的范围区内(Γη,为保证不丢失数据,为每个算得相同hash值的黑名单构建一个链表数据进行记录,查找黑名单时,先对黑名单计算hash值,可以快速定位 到黑名单所在的链表中,然后在相同hash值的链表中匹配确认要查找的黑名单是否存在。
2.同时,链表中的每个黑名单数据视为链表的一个节点,并将这些链表数据固化 在文件的内容中,当前节点数据直接包含下一个节点数据在文件中的偏移位置,这样遍历 某个hash值链表时,处理当前节点的时候,也同时知道下一个节点在文件中位置。查找黑 名单时,打开文件,读出一个节点数据进行匹配比较,如果数据一致返回查找到记录,否则 根据当前的节点指向位置,查找一个节点数据进行匹配直至匹配成功或查找到链表结束, 这个过程中,仅需申请一个节点的内存即可,这样使用大大的节省了内存开销而无需将链 表运行于内存当中就能快速匹配链表中的黑名单数据。
3.为进一步提升黑名单查找过程中的匹配速度,对每个黑名单的数据加入长度信 息(即数据长度值),查找时,只与长度匹配的链表节点数据进行比较,使得比较的次数及时 间再次减少,从需降低查找时间,提交效率。
于其它实施例中,数据库也可以是身份证黑名单或车牌黑名单等。
综上所述,本发明查找方法具有查找速度更快的特点,能为系统节约宝贵时间。在 I万条长度为40的银行用户黑名单中查找所需大时间为I 3ms,在20万条长度为40的 银行用户黑名单中查找所需最大时间为5 IOms ;存储空间更小,针对黑名单的数据特性, 对数据进行压缩存储,删除数据后的零散存储空间能马上被利用;可移植及应用扩展性方 面更好,不需依赖于POS机等使用终端的操作系统;占用内存很小,整个散列链表直接固化 在文件上。本发明还可以用其它数据库的查找中,比如车牌黑名单查找、身份证黑名单的查 找。
上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不 代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的 保护。本发明的保护范围以权利要求书为准。
权利要求
1.一种基于HASH算法的数据查找方法,该方法是先根据数据库的数据总容量,以设定值N进行HASH算法求值,并设有N个数据链表头,每个数据链表头指定其第一个数据节点的存储位置;再根据每个数据内容逐个算出HASH值,并将其链接至该HASH值相应的数据链表头指定的第一个数据节点的存储位置,若第一个数据节点已存储有数据时,则存储至其指向的下一个存储位置,依此类推;其中,每个数据节点包括数据内容和同一 HASH值的下一个数据节点的存储位置指向;查找时,先对待查找的数据进行HASH算法,按其HASH值,找到相应的数据链表头,再根据数据链表头指向的存储装置逐一进行查找对比,若发现有相同数据内容的数据节点,则待查数据处于数据库,若一直查找对比至该数据链表头的最后一个数据节点时,均未查找到有相同的数据内容时,则待查数据不在数据库中。
2.根据权利要求1所述的一种基于HASH算法的数据查找方法,其特征在于所述的数据节点还包括数据长度值,查找对比时,先将待查数据的数据长度与数据节点的数据长度值比较,若长度值相同时,再进行数据内容的比较,若长度值不相同时,则与下一个位置的数据节点进行查找对比。
3.根据权利要求1所述的一种基于HASH算法的数据查找方法,其特征在于当有新的数据内容添加时,对其内容进行HASH算法求值,按其HASH值找到相应的数据链表头,将其存储至该数据链表头的最后一个数据节点指向的存储位置。
4.根据权利要求2所述的一种基于HASH算法的数据查找方法,其特征在于若有数据需要删除时,以同样的方式找到待删数据的数据节点,对全部内容进行删除,并将其下一个数据节点的存储位置指向的内容替换至上一个存储位置的数据节点的存储位置指向。
5.根据权利要求4所述的一种基于HASH算法的数据查找方法,其特征在于删除某一数据节点时,同时修改该数据链表头的最后一个数据节点的存储位置指向为被删除数据节点的存储位置。
6.根据权利要求1所述的一种基于HASH算法的数据查找方法,其特征在于所述的数据库为银行用户黑名单。
全文摘要
本发明公开了一种基于HASH算法的数据查找方法,该方法是先根据数据库的数据总容量,以设定值N进行HASH算法求值,并设有N个数据链表头,每个数据链表头指定其第一个数据节点的存储位置;再根据每个数据内容逐个算出HASH值,并将其链接至该HASH值相应的数据链表头指定的第一个数据节点的存储位置,若第一个数据节点已存储有数据时,则存储至其指向的下一个存储位置,依此类推。本发明查找方法具有查找速度更快的特点,能为系统节约宝贵时间。可移植及应用扩展性方面更好,不需依赖于POS机等使用终端的操作系统;占用内存很小,整个散列链表直接固化在文件上。本发明还可以用其它数据库的查找中,比如车牌黑名单查找、身份证黑名单的查找。
文档编号G06F17/30GK103020182SQ20121049904
公开日2013年4月3日 申请日期2012年11月29日 优先权日2012年11月29日
发明者吴世林, 苏建忠, 黎劲松 申请人:深圳市新国都技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1