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

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

Info

Publication number
CN100452043C
CN100452043C CNB2006100414341A CN200610041434A CN100452043C CN 100452043 C CN100452043 C CN 100452043C CN B2006100414341 A CNB2006100414341 A CN B2006100414341A CN 200610041434 A CN200610041434 A CN 200610041434A CN 100452043 C CN100452043 C CN 100452043C
Authority
CN
China
Prior art keywords
index
data
hash
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.)
Expired - Fee Related
Application number
CNB2006100414341A
Other languages
English (en)
Other versions
CN1952932A (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;
}
为方便直观的表示,对每个数据编号,示例数据如下表所示:
数据链结构
数据顺序插入数据链,数据链的存储结构如图3所示。
建立hash索引
步骤
Figure C20061004143400092
数据节点按hash键值产生函数计算hash_key
Figure C20061004143400093
将数据节点的指针插入hash_key所指示hash数组中的冲突链
Figure C20061004143400094
循环以上两步将所有数据节点的指针插入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的数据节点
计算hash键值:Hash_key=35%hash_size=35%11=2
Figure C20061004143400102
按hash键值取得冲突链(如图6)。
Figure C20061004143400103
遍历此冲突链,取出id=35的节点,通过比较编号为16的数据节点的id=35
返回编号16的数据节点.

Claims (1)

1、一种多索引散列表的存储和检索方法,其特征是:
使一份数据拷贝可以创建多个散列索引;
将数据与索引分开存储管理;
所述的数据和索引分开存储管理,是指只存一份数据拷贝,同时创建多个散列索引,索引只保存数据的指针或引用;
所述的散列索引的建立步骤包括:
a、创建索引:
输入该索引产生散列键值的散列函数及比较函数并按以下步骤操作:
●创建索引实例;
●创建散列索引数组;
●依次将数据链中的元素根据散列函数产生的散列键值插入散列索引数组或者散列索引冲突链中相应的位置;
b、删除索引:
处理步骤:
●删除散列索引冲突链;
●删除散列索引数组;
●删除此索引实例;
c、插入数据:
输入待插入的数据,处理步骤:
●将此数据插入数据链;
●用散列索引的散列函数计算此元素的散列键值;
●根据键值将此元素在数据链的指针或引用插入到此索引的散列数组或冲突链;
●对其他索引以相同的步骤处理;
d、删除数据:
输入清除数据的样例元素及所用的索引标识,处理步骤:
●根据索引标识取得散列索引;
●用此索引的散列函数计算此元素的散列键值;
●通过键值到相应的散列数组或冲突链中查询数据;
●用比较函数进行判断此元素是否符合查询条件;
●对满足条件的数据,删除此数据在其他索引中的信息;
●再在数据链中删除此元素;
●最后删除本索引中所述数据的信息;
e、清除数据:
●清除所有索引中元素的信息;
●清除数据链中的所有数据信息;
多索引散列表的检索步骤包括:
a、查找数据:
输入待查询的样例元素、用于查询的索引标识,然后作如下处理:
●根据索引标识取得索引实例;
●用此索引的散列函数计算此元素的散列键值;
●通过键值到相应的散列数组或冲突链中查询数据;
●用比较函数进行判断此元素是否符合查询条件;
b、遍历数据:
处理步骤:
●依次输出数据链中的数据。
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 CN1952932A (zh) 2007-04-25
CN100452043C true 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)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101350869B (zh) * 2007-07-19 2011-08-24 中国电信股份有限公司 基于索引和散列的电信计费去重方法及设备
CN102810089B (zh) * 2011-05-30 2017-07-04 盛乐信息技术(上海)有限公司 基于内容的短链接系统及实现方法
GB2505183A (en) * 2012-08-21 2014-02-26 Ibm Discovering composite keys
US9292564B2 (en) * 2013-09-21 2016-03-22 Oracle International Corporation Mirroring, in memory, data from disk to improve query performance
CN104572933B (zh) * 2014-12-30 2018-02-23 北京像素软件科技股份有限公司 一种处理数据的方法
CN107992577B (zh) * 2017-12-04 2020-08-11 奇安信科技集团股份有限公司 一种哈希表数据冲突处理方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002209170A (ja) * 2001-01-04 2002-07-26 Nec Corp 録画再生システム及び録画再生方法
CN1377543A (zh) * 1999-09-30 2002-10-30 睦塞德技术公司 用于四路散列表的方法和装置
CN1437357A (zh) * 2002-02-07 2003-08-20 华为技术有限公司 多哈希函数的虚通道标识/虚通路标识的查找方法
US20030196026A1 (en) * 2002-04-15 2003-10-16 Moyer Paul J. Programmable microprocessor cache index hashing function

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1377543A (zh) * 1999-09-30 2002-10-30 睦塞德技术公司 用于四路散列表的方法和装置
JP2002209170A (ja) * 2001-01-04 2002-07-26 Nec Corp 録画再生システム及び録画再生方法
CN1437357A (zh) * 2002-02-07 2003-08-20 华为技术有限公司 多哈希函数的虚通道标识/虚通路标识的查找方法
US20030196026A1 (en) * 2002-04-15 2003-10-16 Moyer Paul J. Programmable microprocessor cache index hashing function

Also Published As

Publication number Publication date
CN1952932A (zh) 2007-04-25

Similar Documents

Publication Publication Date Title
Parker et al. Comparing nosql mongodb to an sql db
Boicea et al. MongoDB vs Oracle--database comparison
CN105793843B (zh) 用于oltp和分析工作量的用于内存数据库的组合行和列式存储
CN101127034B (zh) 数据组织、查询、呈现、存档、恢复、删除、提炼方法及装置和系统
US9047301B2 (en) Method for optimizing the memory usage and performance of data deduplication storage systems
US9047330B2 (en) Index compression in databases
CN102122285B (zh) 一种数据缓存系统中的数据查询系统和数据查询方法
CN100452043C (zh) 一种多索引散列表的存储和检索方法
CN104063487B (zh) 基于关系型数据库及k‑d树索引的文件数据管理方法
CN111046034A (zh) 管理内存数据及在内存中维护数据的方法和系统
WO2015109250A1 (en) CREATING NoSQL DATABASE INDEX FOR SEMI-STRUCTURED DATA
US10929354B2 (en) Metadata server and method for distributing metadata in directories using the same
CN102024019B (zh) 一种分布式文件系统中基于后缀树的目录组织方法
CN102930060A (zh) 一种数据库快速索引的方法及装置
AU2009258015A1 (en) Paging hierarchical data
WO2010084754A1 (ja) データベースシステム、データベース管理方法、データベース構造および記憶媒体
Das et al. A study on big data integration with data warehouse
CN101833511B (zh) 数据管理方法、装置和系统
Weintraub et al. Needle in a haystack queries in cloud data lakes.
Mittal et al. Efficient random data accessing in MapReduce
US20140310262A1 (en) Multiple schema repository and modular database procedures
Parker-Wood et al. Examining extended and scientific metadata for scalable index designs
Rammer et al. Atlas: A distributed file system for spatiotemporal data
CN102521383A (zh) 一种分布式系统中的海量文件存储和访问方法
Valduriez Principles of distributed data management in 2020?

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
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.

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: 20090114