CN1952932A - 一种多索引散列表的存储和检索方法 - Google Patents

一种多索引散列表的存储和检索方法 Download PDF

Info

Publication number
CN1952932A
CN1952932A CN 200610041434 CN200610041434A CN1952932A CN 1952932 A CN1952932 A CN 1952932A CN 200610041434 CN200610041434 CN 200610041434 CN 200610041434 A CN200610041434 A CN 200610041434A CN 1952932 A CN1952932 A CN 1952932A
Authority
CN
China
Prior art keywords
index
hash
data
key assignments
array
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
Application number
CN 200610041434
Other languages
English (en)
Other versions
CN100452043C (zh
Inventor
邓勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Whale Cloud Technology Co Ltd
Original Assignee
Nanjing Zhongxing Ruanchuang Sci & Tech LLC
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 Nanjing Zhongxing Ruanchuang Sci & Tech LLC filed Critical Nanjing Zhongxing Ruanchuang Sci & Tech LLC
Priority to CNB2006100414341A priority Critical patent/CN100452043C/zh
Publication of CN1952932A publication Critical patent/CN1952932A/zh
Application granted granted Critical
Publication of CN100452043C publication Critical patent/CN100452043C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明针对现有的大数据量检索中存在的空间浪费大,占用主机资源多,维护困难的问题,公开了一种高效简明的多索引散列表的存储和检索方法,它包括A、使一份数据拷贝对应多散列索引和B、将数据与索引分开存储管理,每个多散列索引的结构又包括有二种结构。具有占用空间小,数据的维护(增、删、改)容易且不会造成数据不一致的优点。

Description

一种多索引散列表的存储和检索方法
技术领域
本发明涉及一种软件系统中大数据量的存储和检索方法,尤其是一种一种多索引散列表的存储和检索方法。
背景技术
目前,随着软件技术的发展,以及要处理的数据量越来越庞大,这时对软件系统存储和检索处理的效率提出了很高的要求。在这方面有很多高效快速的算法,散列表在这方便尤其表现出色。
散列表通过散列函数计算存储或查找的节点的散列键值,从而可以通过键值和散列数组直接得到数据存储的地址,非常高效的实现数据存储检索,如果采用链地址法解决冲突,散列表的存储结构如图1所示。
但是,在实际应用中常常需要根据节点的不同元素进行检索,如:
Struct Node
{
    Int   id;
    Int attr_id;
    …
}
对于这种节点如果我们需要根据id和attr_id进行查询,这时我们就需要建立多个散列表。内存中就需要建立多份相同的数据拷贝。
这种数据结构的缺点有:
一、造成空间的浪费。如果数据量庞大,会对主机资源造成巨大的压力。
二、存在多份数据拷贝,对数据的维护(增、删、改)非常复杂而容易造成数据不一致。
发明内容
本发明的目的是针对现有的大数据量检索中存在的空间浪费大,占用主机资源多,维护困难的问题提供一种高效简明的多索引散列表的存储和检索方法。
本发明的技术方案是:
一种多索引散列表的存储和检索方法,其特征是:
A、使一份数据拷贝可以创建多个散列索引;
B、将数据与索引分开存储管理。
上述的数据和索引可分开存储管理,只存在一份数据拷贝,同时创建多个散列索引,索引只保存数据的指针或引用。
所述的多散列索引可采用以下方法建立,它包括:
a、创建索引:
输入索引用户产生散列键值的散列函数及比较函数并按以下步骤操作:
●创建索引实例;
●创建散列索引数组;
●根据散列函数将数据链中的元素产生散列键值依次插入散列索引数组或者散列索引冲突链;
b、删除索引:
处理步骤:
●除散列索引冲突链;
●删除散列索引数组;
●删除此索引实例;
c、插入数据:
输入待插入的数据,处理步骤:
●将此数据插入数据链;
●用散列索引的散列函数计算此元素的散列键值;
●根据键值将此元素在数据链的指针或引用插入到此索引的散列数组或冲突链;
●对其他索引以相同的步骤处理;
d、查找数据:
输入待查询的样例元素、用于查询的索引标识,处理步骤:
●根据索引标识取得散列索引实例;
●用此索引的散列函数计算此元素的散列键值;
●通过键值到相应的散列数组或冲突链中查询数据;
●用比较函数进行判断个元素是否符合查询条件;
e、遍历数据:
处理步骤:
●依次输出数据链中的数据;
f、删除数据:
输入清除数据的样例元素及所用的索引标识,处理步骤:
●根据索引标识取得散列索引实例;
●用此索引的散列函数计算此元素的散列键值;
●通过键值到相应的冲突链中查询数据;
●用比较函数进行判断个元素是否符合查询条件;
●对满足条件的数据,删除此数据在其他索引的信息;
●再在数据链中删除此元素的实例;
●最后删除本索引中的信息;
g、清除数据:
清除所有索引中元素的信息;
清除数据链中的所有数据信息。
本发明的有益效果:
一、占用空间小。即使数据量庞大,也不会对主机资源造成巨大的压力。
二、无需多份数据拷贝,对数据的维护(增、删、改)容易且不会造成数据不一致。
附图说明
图1是现有的散列表的存储结构示意图。
图2是本发明的多索引散列表的存储结构示意图。
图3是本发明实施例的数据链的存储结构示意图。
图4是本发明实施例的按id建立的hash索引结构示意图。
图5是本发明实施例的按attr_id建立的索引结构示意图。
图6是本发明实施例的按hash键值取得的冲突链的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的说明。
如图2所示。
一种多索引散列表的存储和检索方法,包括:
A、使一份数据拷贝对应多散列索引;
B、将数据与索引分开存储管理。
多散列索引的结构包括有二种结构,如图2所示。
所述的多散列索引的建立步骤包括:
a、创建索引:
输入索引用户产生散列键值的散列函数及比较函数并按以下步骤操作:
●创建索引实例;
●根据散列函数将数据链中的元素产生散列键值依次插入散列索引数组或者散列索引冲突链;
b、删除索引:
处理步骤:
●删除散列索引冲突链;
●删除散列索引数组;
●删除此索引实例;
c、插入数据:
输入待插入的数据,处理步骤:
●将此数据插入数据链;
●将元素用每个散列索引的散列函数进行计算产生散列键值,插入此索引的散列数组或冲突链;
d、查找数据:
输入待查询的样例元素、用于查询的索引标识,处理步骤:
●根据索引标识取得散列索引实例;
●用此索引的散列函数计算此元素的散列键值;
●通过键值到相应的冲突链中查询数据;
●用比较函数进行判断个元素是否查询条件;
e、遍历数据:
处理步骤:
●依次输出数据链中的数据;
f、删除数据:
输入清除数据的样例元素及所用的索引标识,处理步骤:
●根据索引标识取得散列索引实例;
●用此索引的散列函数计算此元素的散列键值;
●通过键值到相应的冲突链中查询数据;
●用比较函数进行判断个元素是否查询条件;
●对满足条件的数据,删除此数据在其他索引的信息;
●再在数据链中删除此元素;
●最后删除本索引中的信息;
g、清除数据:
清除所有索引中元素的信息;
清除数据链中的所有数据信息。
以下以一个具体的多索引散列表为例对其存储和检索的方法作一具体的说明:
元素数据结构
Struct
{
    int id;
    int attr_id;
}
为方便直观的表示,对每个数据编号,示例数据如下表所示:
 编号  0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18
 Id  6  12  7  8  9  26  60  2  67  97  65  37  47  95  32  61  35  74  22
 Attr_id  66  84  85  34  27  2  17  8  76  41  27  66  35  21  14  86  97  32  14
数据链结构
数据顺序插入数据链,数据链的存储结构如图3所示。
建立hash索引
步骤
Figure A20061004143400091
数据节点按hash键值产生函数计算hash_key
Figure A20061004143400092
将数据节点的指针插入hash_key所指示hash数组中的冲突链
循环以上两步将所有数据节点的指针插入hash索引
设定hash数组的大小为hash_size=11
●按id建立hash索引
Hash键值产生函数为:id对hash_size求余,即hash_key=id%hash_size链节点中的数字表示所指向的数据节点的编号,索引结构如图4所示。
●按attr_id建立索引
Hash键值产生函数为:attr_id对hash_size求余,即hash_key=attr_id%hash_size
索引结构如图5所示。
数据检索
按id进行检索
例:查询id=35的数据节点
Figure A20061004143400101
计算hash键值:Hash_key=35%hash_size=35%11=2
Figure A20061004143400102
按hash键值取得冲突链(如图6)。
Figure A20061004143400103
遍历此冲突链,取出id=35的节点,通过比较编号为16的数据节点的id=35
Figure A20061004143400104
返回编号16的数据节点

Claims (3)

1、一种多索引散列表的存储和检索方法,其特征是:
A、使一份数据拷贝可以创建多个散列索引;
B、将数据与索引分开存储管理。
2、根据权利要求1所述的多索引散列表的实现方法,其特征是数据和索引分开存储管理,只存在一份数据拷贝,同时创建多个散列索引,索引只保存数据的指针或引用。
3、根据权利要求1所述的多索引散列表的实现方法,其特征是所述的多散列索引的建立步骤包括:
a、创建索引:
输入索引用户产生散列键值的散列函数及比较函数并按以下步骤操作:
●创建索引实例;
●创建散列索引数组;
●根据散列函数将数据链中的元素产生散列键值依次插入散列索引数组或者散列索引冲突链;
b、删除索引:
处理步骤:
●删除散列索引冲突链;
●删除散列索引数组;
●删除此索引实例;
c、插入数据:
输入待插入的数据,处理步骤:
●将此数据插入数据链;
●用散列索引的散列函数计算此元素的散列键值;
●根据键值将此元素在数据链的指针或引用插入到此索引的散列数组或冲突链;
●对其他索引以相同的步骤处理;
d、查找数据:
输入待查询的样例元素、用于查询的索引标识,处理步骤:
●根据索引标识取得散列索引实例;
●用此索引的散列函数计算此元素的散列键值;
●通过键值到相应的散列数组或冲突链中查询数据;
●用比较函数进行判断个元素是否符合查询条件;
e、遍历数据:
处理步骤:
●依次输出数据链中的数据;
f、删除数据:
输入清除数据的样例元素及所用的索引标识,处理步骤:
●根据索引标识取得散列索引实例;
●用此索引的散列函数计算此元素的散列键值;
●通过键值到相应的冲突链中查询数据;
●用比较函数进行判断个元素是否符合查询条件;
●对满足条件的数据,删除此数据在其他索引的信息;
●再在数据链中删除此元素的实例;
●最后删除本索引中的信息;
g、清除数据:
清除所有索引中元素的信息;
清除数据链中的所有数据信息。
CNB2006100414341A 2006-09-06 2006-09-06 一种多索引散列表的存储和检索方法 Expired - Fee Related CN100452043C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006100414341A CN100452043C (zh) 2006-09-06 2006-09-06 一种多索引散列表的存储和检索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006100414341A CN100452043C (zh) 2006-09-06 2006-09-06 一种多索引散列表的存储和检索方法

Publications (2)

Publication Number Publication Date
CN1952932A true CN1952932A (zh) 2007-04-25
CN100452043C CN100452043C (zh) 2009-01-14

Family

ID=38059276

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100414341A Expired - Fee Related CN100452043C (zh) 2006-09-06 2006-09-06 一种多索引散列表的存储和检索方法

Country Status (1)

Country Link
CN (1) CN100452043C (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101350869B (zh) * 2007-07-19 2011-08-24 中国电信股份有限公司 基于索引和散列的电信计费去重方法及设备
CN102810089A (zh) * 2011-05-30 2012-12-05 盛乐信息技术(上海)有限公司 基于内容的短链接系统及实现方法
CN103631842A (zh) * 2012-08-21 2014-03-12 国际商业机器公司 用于检测多列复合键列集合的方法和系统
CN104572933A (zh) * 2014-12-30 2015-04-29 北京像素软件科技股份有限公司 一种处理数据的方法
CN105556520A (zh) * 2013-09-21 2016-05-04 甲骨文国际公司 在存储器中镜像盘中的数据以提高查询性能
CN107992577A (zh) * 2017-12-04 2018-05-04 北京奇安信科技有限公司 一种哈希表数据冲突处理方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6775281B1 (en) * 1999-09-30 2004-08-10 Mosaid Technologies, Inc. Method and apparatus for a four-way hash table
JP2002209170A (ja) * 2001-01-04 2002-07-26 Nec Corp 録画再生システム及び録画再生方法
CN1184775C (zh) * 2002-02-07 2005-01-12 华为技术有限公司 多哈希函数的虚通道标识/虚通路标识的查找方法
US6804768B2 (en) * 2002-04-15 2004-10-12 Hewlett-Packard Development Company, L.P. Programmable microprocessor cache index hashing function

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101350869B (zh) * 2007-07-19 2011-08-24 中国电信股份有限公司 基于索引和散列的电信计费去重方法及设备
CN102810089A (zh) * 2011-05-30 2012-12-05 盛乐信息技术(上海)有限公司 基于内容的短链接系统及实现方法
CN103631842A (zh) * 2012-08-21 2014-03-12 国际商业机器公司 用于检测多列复合键列集合的方法和系统
CN103631842B (zh) * 2012-08-21 2016-12-28 国际商业机器公司 用于检测多列复合键列集合的方法和系统
CN105556520A (zh) * 2013-09-21 2016-05-04 甲骨文国际公司 在存储器中镜像盘中的数据以提高查询性能
CN105556520B (zh) * 2013-09-21 2019-08-13 甲骨文国际公司 在存储器中镜像盘中的数据以提高查询性能
CN104572933A (zh) * 2014-12-30 2015-04-29 北京像素软件科技股份有限公司 一种处理数据的方法
CN104572933B (zh) * 2014-12-30 2018-02-23 北京像素软件科技股份有限公司 一种处理数据的方法
CN107992577A (zh) * 2017-12-04 2018-05-04 北京奇安信科技有限公司 一种哈希表数据冲突处理方法及装置
CN107992577B (zh) * 2017-12-04 2020-08-11 奇安信科技集团股份有限公司 一种哈希表数据冲突处理方法及装置

Also Published As

Publication number Publication date
CN100452043C (zh) 2009-01-14

Similar Documents

Publication Publication Date Title
Parker et al. Comparing nosql mongodb to an sql db
Boicea et al. MongoDB vs Oracle--database comparison
CN102122285B (zh) 一种数据缓存系统中的数据查询系统和数据查询方法
US8825700B2 (en) Paging hierarchical data
CN1952932A (zh) 一种多索引散列表的存储和检索方法
US8880463B2 (en) Standardized framework for reporting archived legacy system data
TW201530328A (zh) 爲半結構化資料構建NoSQL資料庫索引的方法及裝置
CN102541529A (zh) 一种查询页面生成装置和方法
CN103593477A (zh) 一种哈希数据库的配置方法和装置
US10929354B2 (en) Metadata server and method for distributing metadata in directories using the same
CN104462147A (zh) 一种文档的存储方法
CN105117433A (zh) 一种基于Hive解析HFile统计查询HBase的方法和系统
Su et al. Taming massive distributed datasets: data sampling using bitmap indices
US20120254189A1 (en) Multilevel indexing system
WO2010084754A1 (ja) データベースシステム、データベース管理方法、データベース構造および記憶媒体
US11567969B2 (en) Unbalanced partitioning of database for application data
Das et al. A study on big data integration with data warehouse
US9684677B2 (en) Method for reliable and efficient filesystem metadata conversion
Song et al. Haery: a Hadoop based query system on accumulative and high-dimensional data model for big data
KR101628676B1 (ko) 대용량 과학 데이터 파일의 분산 저장 시스템 및 방법
CN101206586B (zh) 一种操作系统句柄管理方法
Rammer et al. Atlas: A distributed file system for spatiotemporal data
Valduriez Principles of distributed data management in 2020?
Mullangi et al. SCISSOR: scalable and efficient reachability query processing in time-evolving hierarchies
Punia et al. Implementing Information System Using MongoDB and Redis

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
C56 Change in the name or address of the patentee

Owner name: NANJING ZTESOFT TECHNOLOGY CO., LTD.

Free format text: FORMER NAME: NANJING ZHONGXING RUANCHUANG SCI. + TECH. LLC

CP01 Change in the name or title of a patent holder

Address after: 210012 Zhongxing building, No. 68, Bauhinia Road, Yuhuatai District, Nanjing, Jiangsu

Patentee after: NANJING ZTESOFT TECHNOLOGY Co.,Ltd.

Address before: 210012 Zhongxing building, No. 68, Bauhinia Road, Yuhuatai District, Nanjing, Jiangsu

Patentee before: Nanjing ZTEsoft Technology Co.,Ltd.

EE01 Entry into force of recordation of patent licensing contract

Assignee: NANJING ZTESOFT TECHNOLOGY CO.,LTD.

Assignor: NANJING ZTESOFT TECHNOLOGY Co.,Ltd.

Contract record no.: 2010320001129

Denomination of invention: A storage and search method of multiple index hash table

Granted publication date: 20090114

License type: Exclusive License

Open date: 20070425

Record date: 20100915

C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: 210012 Zhongxing building, No. 68, Bauhinia Road, Yuhuatai District, Nanjing, Jiangsu

Patentee after: ZTESOFT TECHNOLOGY Co.,Ltd.

Address before: 210012 Zhongxing building, No. 68, Bauhinia Road, Yuhuatai District, Nanjing, Jiangsu

Patentee before: NANJING ZTESOFT TECHNOLOGY Co.,Ltd.

CP03 Change of name, title or address

Address after: 210012 room 627, Ning Shuang Road, Yuhuatai District, Nanjing, Jiangsu, 627

Patentee after: WHALE CLOUD TECHNOLOGY Co.,Ltd.

Address before: 210012 Zhongxing building, No. 68, Bauhinia Road, Yuhuatai District, Nanjing, Jiangsu

Patentee before: ZTESOFT TECHNOLOGY Co.,Ltd.

CP03 Change of name, title or address
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090114

CF01 Termination of patent right due to non-payment of annual fee