CN1858734A - 一种数据存储及搜索方法 - Google Patents
一种数据存储及搜索方法 Download PDFInfo
- Publication number
- CN1858734A CN1858734A CN 200510121164 CN200510121164A CN1858734A CN 1858734 A CN1858734 A CN 1858734A CN 200510121164 CN200510121164 CN 200510121164 CN 200510121164 A CN200510121164 A CN 200510121164A CN 1858734 A CN1858734 A CN 1858734A
- Authority
- CN
- China
- Prior art keywords
- data
- hash
- link table
- search
- data link
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据存储方法包括:确定至少两个不同的哈希桶,将数据存储于数据链表中,每个数据均具有一个相应的关键值,其中,每个关键值经哈希函数的运算得到一个相应的哈希值,而每个哈希值对应有不同的数据链表,所述数据链表中的数据均包含于所述数据链表中。数据搜索方法包括:根据各哈希桶的不同的哈希函数,计算得到所要搜索数据的关键值所对应的各个哈希值,再根据所述哈希值确定其分别对应的数据链表,在所述确定的数据链表中选择其一进行数据搜索。通过具有不同哈希桶的哈希函数的计算而于数据链表中提取数据链表,再选择最佳数据链表进行数据搜索,该方法可有效提高数据量较大时系统的搜索效率,并提高系统的实时性。
Description
技术领域
本发明涉及一种数据处理方法,更确切地讲,本发明涉及一种数据的存储及搜索方法。
背景技术
目前,数据通讯技术飞速发展,对数据量的要求亦日益增大,由此推动了存储技术的发展,使数据的大容量存储成为可能。比如,通过将路由器等网络产品的各种转发表项的规模不断扩大即可实现大量数据的存储。另一方面,在对所存储的大量数据进行搜索时,搜索算法的优劣直接影响到所存储的大量数据的利用效率及存储数据的数据结构合理程度,不合理的数据结构及低效的搜索算法会降低所存储数据的应用价值。如在路由产品中,相关转发表项的搜索效率可直接影响到产品的性能指标。
在存储方面,对于不是特别大的数据量时,一般采用链表式的存储结构,在搜索时,采用简单的逐项比较关键值的方法进行搜索。但当数据量很大时,链表的长度也会较长,这样会导致上述搜索算法的性能严重下降,从而使得系统的实时性变差。
另外,还可以采用哈希算法与链表相结合的方案,实现原理如图1所示。以每个要搜索的数据项的关键值作为输入,计算出的哈希值作为链表的索引,然后在锁定的链表中进行数据搜索。该方法虽然比所述简单的链表方案有所改进,但当数据条目数量很大时,链表的长度也很长,也会导致搜索算法的性能严重下降,从而使得系统的实时性仍然比较明显地变差。
发明内容
本发明解决的技术问题是提供一种数据存储及搜索方法,其可有效提高数据量较大时系统的搜索效率,并提高系统的实时性;本方法可应用于各种需要进行大量数据项存储、搜索的产品中,并可提高如高端核心路由器产品的性能。
为解决上述问题,本发明提供一种数据存储方法,该方法包括:
确定至少两个哈希桶;
根据待存储数据的关键值以及各个哈希桶的哈希函数计算确定各个哈希桶中该待存储数据对应的哈希值;
确定各哈希桶中相应哈希值对应的数据链表;
将数据存储于该数据关键值确定的各哈希桶中相应哈希值对应的数据链表中。
其中,所述各个哈希桶可采用不同的哈希函数。
其中,所述数据链表可以采用单向链表结构、双向链表结构、树形结构或图形结构。
相应地,本发明还提供一种数据搜索方法,该方法包括:
根据各哈希桶的哈希函数以及待搜索的数据的关键值计算得到各哈希桶中该待搜索的数据对应的哈希值;
根据所述哈希值确定各哈希桶中该哈希值对应的数据链表;
从所述确定的各个哈希桶的数据链表中选择其一进行数据搜索。
优选地,所述在确定的数据链表中选择其一进行数据搜索为选择数据搜索长度最短的数据链表进行数据搜索。
优选地,所述在确定的数据链表中选择其一进行数据搜索为选择搜索时间最短的数据链表进行数据搜索。
可选地,所述数据链表为单向链表结构。
可选地,所述数据链表为双向链表结构。
可选地,所述数据链表为树形结构。
可选地,所述数据链表为图形结构。
与现有技术相比,本发明具有以下有益效果:
本发明提供的一种数据存储及搜索方法,通过具有不同哈希桶的哈希函数的计算而于数据链表中提取数据链表,再选择最佳数据链表进行数据搜索,该方法可有效提高数据量较大时系统的搜索效率,并提高系统的实时性;另外,本方法可应用于各种需要进行大量数据项存储、搜索的产品中,并可提高如高端核心路由器产品的性能。
附图说明
图1是现有的哈希桶与数据链表相结合的原理图;
图2是本发明一种数据存储及搜索方法的哈希桶与数据链表相结合的原理图。
具体实施方式
请参照图2所示,图2是本发明的哈希桶与数据链表相结合的原理图。存储数据时,首先,确定至少两个哈希桶,具体实现时所述哈希桶采用不同的哈希函数;根据待存储数据的关键值以及各个哈希桶的哈希函数计算确定各个哈希桶中该待存储数据对应的哈希值;然后确定各哈希桶中相应哈希值对应的数据链表;最后将数据存储于该数据关键值确定的各哈希桶中相应哈希值对应的数据链表中,举例说,确定两个哈希桶,即哈希桶一及哈希桶二,其中,所述哈希桶一及哈希桶二具有不同的哈希函数。由于每个数据均对应有一个相应的关键值,这样数据的关键值经不同的哈希函数的运算可得到一个相应的哈希值,而在哈希桶中每个哈希值对应有不同的数据链表,所述各个存储同一数据的不同数据链表节点上的指针域中的指针均指向存储该数据的同一节点,如哈希桶一的刻度“2”处所对应的数据链表i,其包含节点1节、点2及节点3上所存储的数据,哈希桶二的刻度“1”处所对应的数据链表j,其包含节点1节及点2上所存储的数据,哈希桶二的刻度“N-3”处所对应的数据链表k,其包含节点3上所存储的数据。
在搜索数据时,本发明中采用下述步骤进行:
首先根据各哈希桶的哈希函数以及待搜索的数据的关键值计算得到各哈希桶中该待搜索的数据对应的哈希值;
然后根据所述哈希值确定各哈希桶中该哈希值对应的多个链表;
从所述多个链表中选择其一进行数据搜索,具体搜索时,本发明中可选择数据搜索长度最短的数据链表进行数据搜索,也可以采用选择数据搜索时间最短的数据链表进行数据搜索,这里不再赘述。
以要搜索节点3中所存储的数据为例,哈希桶一及哈希桶二所具有的不同的哈希函数,其中所述哈希桶一中刻度“2”处对应一个数据链表i,所述哈希桶二中刻度“1”处对应一个数据链表j,哈希桶二的刻度“N-3”处对应一个数据链表k,若要搜索节点3中所存储的数据,则根据节点3中存储的数据的关键值,计算得到其所对应的哈希值,结果得到哈希桶一的刻度“2”处所对应的哈希值及哈希桶二的刻度“N-3”处所对应的哈希值,哈希桶一的刻度“2”处的哈希值对应的数据链表i包含节点1、节点2及节点3上所存储的数据,哈希桶二的刻度“N-3”处的哈希值所对应的数据链表k包含节点3上所存储的数据。
得到可搜索到节点3上所存储数据的两条数据链表i及k后,再从所述两条数据链表i及k中查找到节点3上所存储数据的最优的一条数据链表,最后于所述在确定的最优的一条数据链表进行数据搜索。具体实现时,判断数据链表最优的一种方法是:该数据链表的数据搜索长度最短,而所述数据链表长度由从该数据链表所包含的数据数目表征。另外,判断该最优数据链表的另一种方法是:在数据链表中搜索数据所花费的时间最短。对两条数据链表i及k进行比较得出,要搜索到节点3中所存储的数据,即要达到节点3,显然数据链表k的路径最短,因而其所花费的时间亦为最短,所以,选择数据链表k为搜索节点3中所存储的数据的数据链表。
可以理解,本发明所提供的一种数据存储及搜索方法中所述的数据链表及数据链表可为单向链表结构、双向链表结构、树形结构或图形结构。另外,存储数据前所设置的哈希桶的数目可任意确定,不仅限于所述实施方式所述的两个哈希桶,其中,由于某种原因一个哈希桶有唯一的一个哈希函数,所以设置的哈希桶个数与通过哈希函数运算得到的数据链表个数是相等的。
本发明提供的一种数据存储及搜索方法,通过具有不同哈希桶的哈希函数的计算而确定多个数据链表,并从所述多个数据链表中选择最佳数据链表进行数据搜索,该方法可有效提高数据量较大时系统的搜索效率,并提高系统的实时性;另外,本方法可应用于各种需要进行大量数据项存储、搜索的产品中,并可提高如高端核心路由器产品的性能。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种数据存储方法,其特征在于,该方法包括:
确定至少两个哈希桶;
根据待存储数据的关键值以及各个哈希桶的哈希函数计算确定各个哈希桶中该待存储数据对应的哈希值;
确定各哈希桶中相应哈希值对应的数据链表;
将数据存储于该数据关键值确定的各哈希桶中相应哈希值对应的数据链表中。
2.根据权利要求1所述的数据存储方法,其特征在于,所述哈希桶采用不同的哈希函数。
3.根据权利要求1或2所述的数据存储方法,其特征在于,所述数据链表为单向链表结构、双向链表结构、树形结构或图形结构。
4.一种数据搜索方法,其特征在于,该方法包括:
根据各哈希桶的哈希函数以及待搜索的数据的关键值计算得到各哈希桶中该待搜索的数据对应的哈希值;
根据所述哈希值确定各哈希桶中该哈希值对应的数据链表;
从所述确定的各个哈希桶的数据链表中选择其一进行数据搜索。
5.根据权利要求4所述的数据搜索方法,其特征在于,所述在确定的数据链表中选择其一进行数据搜索为选择数据搜索长度最短的数据链表进行数据搜索。
6.根据权利要求4所述的数据搜索方法,其特征在于,所述在确定的数据链表中选择其一进行数据搜索为选择搜索时间最短的数据链表进行数据搜索。
7.如权利要求4-6任一项所述的数据搜索方法,其特征在于,所述数据链表为单向链表结构。
8.如权利要求4-6任一项所述的数据搜索方法,其特征在于,所述数据链表为双向链表结构。
9.如权利要求4-6任一项所述的数据搜索方法,其特征在于,所述数据链表为树形结构。
10.如权利要求4-6任一项所述的数据搜索方法,其特征在于,所述数据链表为图形结构。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101211640A CN100445999C (zh) | 2005-12-28 | 2005-12-28 | 一种数据存储及搜索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101211640A CN100445999C (zh) | 2005-12-28 | 2005-12-28 | 一种数据存储及搜索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1858734A true CN1858734A (zh) | 2006-11-08 |
CN100445999C CN100445999C (zh) | 2008-12-24 |
Family
ID=37297643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101211640A Expired - Fee Related CN100445999C (zh) | 2005-12-28 | 2005-12-28 | 一种数据存储及搜索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100445999C (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008128450A1 (fr) * | 2007-04-19 | 2008-10-30 | Huawei Technologies Co., Ltd. | Procédé et système de publication de contenu, procédé et système de demande de contenu |
CN101483605B (zh) * | 2009-02-25 | 2011-04-06 | 北京星网锐捷网络技术有限公司 | 数据报文的存储、查找方法和装置 |
CN102117340A (zh) * | 2011-04-19 | 2011-07-06 | 北京神州数码思特奇信息技术股份有限公司 | 一种动态数据存储方法 |
CN102130833A (zh) * | 2011-03-11 | 2011-07-20 | 中兴通讯股份有限公司 | 一种高速路由器流量管理芯片链表存储管理方法及系统 |
CN101635682B (zh) * | 2009-08-05 | 2011-12-07 | 中兴通讯股份有限公司 | 一种存储管理的方法和系统 |
CN102346783A (zh) * | 2011-11-09 | 2012-02-08 | 华为技术有限公司 | 数据检索方法及装置 |
CN102708201A (zh) * | 2012-05-17 | 2012-10-03 | 北京工业大学 | 基于rfid读写器对海量数据进行收集的方法 |
CN101996217B (zh) * | 2009-08-24 | 2012-11-07 | 华为技术有限公司 | 一种存储数据的方法及其存储设备 |
WO2014177080A1 (zh) * | 2013-11-06 | 2014-11-06 | 中兴通讯股份有限公司 | 资源对象存储处理方法及装置 |
CN104572983A (zh) * | 2014-12-31 | 2015-04-29 | 北京锐安科技有限公司 | 基于内存的散列表的构建方法、文本查找方法及相应装置 |
CN105354297A (zh) * | 2015-11-03 | 2016-02-24 | 浪潮(北京)电子信息产业有限公司 | 一种数据库中数据存储的方法及系统 |
CN105426131A (zh) * | 2015-12-03 | 2016-03-23 | 成都华为技术有限公司 | 一种kv存储实现方法和装置 |
CN105550208A (zh) * | 2015-12-02 | 2016-05-04 | 南京邮电大学 | 基于谱哈希的相似性存储设计方法 |
CN109189759A (zh) * | 2018-08-01 | 2019-01-11 | 华为技术有限公司 | Kv存储系统中的数据读取方法、数据查询方法、装置及设备 |
CN110516121A (zh) * | 2019-08-28 | 2019-11-29 | 中国银行股份有限公司 | 数据读取方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5692177A (en) * | 1994-10-26 | 1997-11-25 | Microsoft Corporation | Method and system for data set storage by iteratively searching for perfect hashing functions |
US5742807A (en) * | 1995-05-31 | 1998-04-21 | Xerox Corporation | Indexing system using one-way hash for document service |
US6516320B1 (en) * | 1999-03-08 | 2003-02-04 | Pliant Technologies, Inc. | Tiered hashing for data access |
KR20040046465A (ko) * | 2002-11-27 | 2004-06-05 | 한국전자통신연구원 | 다단계 해시함수를 이용하여 검색시간 한계를 보장하는분리 체이닝 구조의 데이터 처리 시스템 및 그 처리방법 |
-
2005
- 2005-12-28 CN CNB2005101211640A patent/CN100445999C/zh not_active Expired - Fee Related
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101291321B (zh) * | 2007-04-19 | 2012-10-03 | 华为技术有限公司 | 发布内容的方法及系统、查找内容的方法及系统 |
WO2008128450A1 (fr) * | 2007-04-19 | 2008-10-30 | Huawei Technologies Co., Ltd. | Procédé et système de publication de contenu, procédé et système de demande de contenu |
CN101483605B (zh) * | 2009-02-25 | 2011-04-06 | 北京星网锐捷网络技术有限公司 | 数据报文的存储、查找方法和装置 |
CN101635682B (zh) * | 2009-08-05 | 2011-12-07 | 中兴通讯股份有限公司 | 一种存储管理的方法和系统 |
CN101996217B (zh) * | 2009-08-24 | 2012-11-07 | 华为技术有限公司 | 一种存储数据的方法及其存储设备 |
CN102130833A (zh) * | 2011-03-11 | 2011-07-20 | 中兴通讯股份有限公司 | 一种高速路由器流量管理芯片链表存储管理方法及系统 |
CN102117340A (zh) * | 2011-04-19 | 2011-07-06 | 北京神州数码思特奇信息技术股份有限公司 | 一种动态数据存储方法 |
CN102346783A (zh) * | 2011-11-09 | 2012-02-08 | 华为技术有限公司 | 数据检索方法及装置 |
CN102346783B (zh) * | 2011-11-09 | 2014-09-17 | 华为技术有限公司 | 数据检索方法及装置 |
CN102708201B (zh) * | 2012-05-17 | 2014-11-26 | 北京工业大学 | 基于rfid读写器对海量数据进行收集的方法 |
CN102708201A (zh) * | 2012-05-17 | 2012-10-03 | 北京工业大学 | 基于rfid读写器对海量数据进行收集的方法 |
WO2014177080A1 (zh) * | 2013-11-06 | 2014-11-06 | 中兴通讯股份有限公司 | 资源对象存储处理方法及装置 |
CN104639570A (zh) * | 2013-11-06 | 2015-05-20 | 南京中兴新软件有限责任公司 | 资源对象存储处理方法及装置 |
CN104572983A (zh) * | 2014-12-31 | 2015-04-29 | 北京锐安科技有限公司 | 基于内存的散列表的构建方法、文本查找方法及相应装置 |
CN104572983B (zh) * | 2014-12-31 | 2018-03-06 | 北京锐安科技有限公司 | 基于内存的散列表的构建方法、文本查找方法及相应装置 |
CN105354297A (zh) * | 2015-11-03 | 2016-02-24 | 浪潮(北京)电子信息产业有限公司 | 一种数据库中数据存储的方法及系统 |
CN105354297B (zh) * | 2015-11-03 | 2019-03-26 | 浪潮(北京)电子信息产业有限公司 | 一种数据库中数据存储的方法及系统 |
CN105550208A (zh) * | 2015-12-02 | 2016-05-04 | 南京邮电大学 | 基于谱哈希的相似性存储设计方法 |
CN105550208B (zh) * | 2015-12-02 | 2019-04-02 | 南京邮电大学 | 基于谱哈希的相似性存储设计方法 |
CN105426131A (zh) * | 2015-12-03 | 2016-03-23 | 成都华为技术有限公司 | 一种kv存储实现方法和装置 |
CN109189759A (zh) * | 2018-08-01 | 2019-01-11 | 华为技术有限公司 | Kv存储系统中的数据读取方法、数据查询方法、装置及设备 |
CN109189759B (zh) * | 2018-08-01 | 2021-11-19 | 华为技术有限公司 | Kv存储系统中的数据读取方法、数据查询方法、装置及设备 |
CN110516121A (zh) * | 2019-08-28 | 2019-11-29 | 中国银行股份有限公司 | 数据读取方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN100445999C (zh) | 2008-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1858734A (zh) | 一种数据存储及搜索方法 | |
CN102663058B (zh) | 一种分布式网络爬虫系统中的url去重方法 | |
CN103914506B (zh) | 数据检索装置、数据存储方法和数据检索方法 | |
CN109471905B (zh) | 一种支持时间范围和属性范围复合查询的区块链索引方法 | |
WO1998041931A1 (en) | Method for implementing an associative memory based on a digital trie structure | |
CN108304460B (zh) | 一种改进数据库的定位方法及系统 | |
CN104809182A (zh) | 基于动态可分裂Bloom Filter的网络爬虫URL去重方法 | |
CN1949220A (zh) | 网络社区动态目录的构建系统和方法 | |
CN100476824C (zh) | 存储元素的方法与系统及查找元素的方法与系统 | |
CN1251076C (zh) | 用来提高至少一个程序执行速度的基于计算机平台的系统及方法 | |
CN102045412B (zh) | IPv6地址前缀压缩存储方法及设备 | |
CN111177476A (zh) | 数据查询方法、装置、电子设备及可读存储介质 | |
CN107330094A (zh) | 动态存储键值对的布鲁姆过滤器树结构及键值对存储方法 | |
CN107203532A (zh) | 索引系统的构建方法、搜索的实现方法及装置 | |
CN1912870A (zh) | 一种哈希表查表方法 | |
CN101741737B (zh) | 路由表的维护方法与装置 | |
CN1864144A (zh) | 具有条目群组和跳过操作的关联存储器 | |
Bornea et al. | Adaptive join operators for result rate optimization on streaming inputs | |
US7484068B2 (en) | Storage space management methods and systems | |
CN1897560A (zh) | 一种提高路由表容量的方法 | |
CN110908996A (zh) | 一种数据处理的方法和装置 | |
KR20100022565A (ko) | 해시트리를 이용한 url 검색방법 | |
CN1866203A (zh) | 一种字符串引用方法 | |
US20120030235A1 (en) | Priority search trees | |
Afek et al. | Recursive design of hardware priority queues |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081224 Termination date: 20171228 |