专利名称:一种面向海量数据检索的多级桶哈希索引方法
技术领域:
本发明涉及一种面向海量数据检索的多级桶哈希索引方法,属于数据存储、检索
技术领域。
背景技术:
检索效率是海量数据存储、服务应用系统的一个重要指标,索引技术在数据空间 组织和检索中具有重要的作用,目前大型数据库和数据存储应用系统都支持哈希表索引技 术,数据来源迅速增长,如何快捷准确地获取感兴趣的信息,成为人们关注的主要问题,因 此对海量等特性对检索技术提出了更高的要求,各种信息检索、过滤、提取技术逐渐成为研 究的重点。哈希索引的一个非常重要的优点是检索效率不随数据量的增长而增加,影响哈 希性能的主要因素是磁盘读写次数和哈希冲突问题。目前哈希索引主要有两种方式,静态 哈希索引和动态哈希索引。
发明内容
针对现有技术的不足,本发明提供一种面向海量数据检索的多级桶哈希索引方 法。 —种面向海量数据检索的多级桶哈希索引方法,包括哈希索引的创建方法和检索
方法,哈希索引的创建方法如下 1)对创建索引的信息确定一个关键字; 2)在计算机内存中建立索引桶的映射表,即关键字的哈希值h和索引桶在磁盘上 的存储位置C ; 3)判断索引桶是否在磁盘上,即判断存储位置的值是否等于8个字节的最大值; 如果等于8个字节的最大值,说明磁盘上没有已存储的索引桶,继续步骤4);如果不等于8
个字节的最大值,说明磁盘上已有已存储的索引桶,转步骤(7); 4)磁盘上没有已存储的索引桶时,在磁盘上创建一个新的磁盘块d并存储信息, 建立一个新的索引桶,确定新的索引桶在磁盘块d内的序号;
5)更新映射表,使c = d;
6)更新磁盘,反复存储; 7)磁盘上已有已存储的索引桶时,确定该索引桶在磁盘块内的序号; 8)判断该索引桶是否有足够的空间存储新的关键字,如果有足够的空间,转步骤
(6);如果没有足够的空间,关键字在该索引桶溢出,存储到磁盘块内溢出桶;如果磁盘块
内溢出桶也没有足够的空间,关键字在磁盘块内溢出桶溢出,存储到全局溢出桶。 哈希索引的检索方法如下 1)对待检索索引的信息确定一个关键字; 2)读映射表; 3)判断待检索索引桶是否在磁盘上,即判断存储位置的值是否等于8个字节的最
3大值;如果等于8个字节的最大值,说明磁盘上没有已存储的待检索索引桶,检索结束;如 果不等于8个字节的最大值,说明磁盘上已有已存储的待检索索引桶,转步骤(4);
4)如果不等于8个字节的最大值,从映射表内获取待检索索引桶号和该索引桶所 在磁盘块的磁盘块号; 5)桶内检索,如果检索到,则检索结束;如果检索不到,在磁盘块内溢出桶检索;
6)在磁盘块内溢出桶检索到,检索结束;如果在磁盘块内溢出桶检索不到,则在 全局溢出桶检索,检索结束。
当存储和检索海量数据时,索引文件本身较大,哈希索引占用空间较大,为了尽量
减小哈希索引文件,提高磁盘利用效率和文件读性能,本发明提供了桶映射表,避免了哈希
索引文件中的空桶;数据检索时,为了减少磁盘读次数,本发明提供了缓存管理,提高了内
存的利用率,当桶的数据在内存中时,直接从内存取数据,避免了磁盘的读操作;为了减少
哈希冲突引起的性能下降,本发明提供了基于磁盘块结构的块内溢出桶和全局溢出桶,减
少了冲突引起的磁盘读写操作,提高了效率,实验证明本发明具有很高的实用价值。 本发明能充分利用磁盘和内存,并减少磁盘读写次数,提高海量数据存储、检索效率。
图l为索引创建流程图。
图2为索引检索流程图。
具体实施例方式
实施例 —种面向海量数据检索的多级桶哈希索引方法,包括哈希索引的创建方法和检索
方法,哈希索引的创建方法如下 1)对创建索引的信息确定一个关键字; 2)在计算机内存中建立索引桶的映射表,即关键字的哈希值h和索引桶在磁盘上 的存储位置c ; 3)判断索引桶是否在磁盘上,即判断存储位置的值是否等于8个字节的最大值; 如果等于8个字节的最大值,说明磁盘上没有已存储的索引桶,继续步骤4);如果不等于8 个字节的最大值,说明磁盘上已有已存储的索引桶,转步骤(7); 4)磁盘上没有已存储的索引桶时,在磁盘上创建一个新的磁盘块d并存储信息, 建立一个新的索引桶,确定新的索引桶在磁盘块d内的序号;
5)更新映射表,使c = d;
6)更新磁盘,反复存储; 7)磁盘上已有已存储的索引桶时,确定该索引桶在磁盘块内的序号; 8)判断该索引桶是否有足够的空间存储新的关键字,如果有足够的空间,转步骤
(6);如果没有足够的空间,关键字在该索引桶溢出,存储到磁盘块内溢出桶;如果磁盘块
内溢出桶也没有足够的空间,关键字在磁盘块内溢出桶溢出,存储到全局溢出桶。 哈希索引的检索方法如下
1)对待检索索引的信息确定一个关键字;
2)读映射表; 3)判断待检索索引桶是否在磁盘上,即判断存储位置的值是否等于8个字节的最 大值;如果等于8个字节的最大值,说明磁盘上没有已存储的待检索索引桶,检索结束;如 果不等于8个字节的最大值,说明磁盘上已有已存储的待检索索引桶,转步骤(4);
4)如果不等于8个字节的最大值,从映射表内获取待检索索引桶号和该索引桶所 在磁盘块的磁盘块号; 5)桶内检索,如果检索到,则检索结束;如果检索不到,在磁盘块内溢出桶检索;
6)在磁盘块内溢出桶检索到,检索结束;如果在磁盘块内溢出桶检索不到,则在 全局溢出桶检索,检索结束。
权利要求
一种面向海量数据检索的多级桶哈希索引方法,其特征在于,方法包括哈希索引的创建方法和检索方法,哈希索引的创建方法如下1)对创建索引的信息确定一个关键字;2)在计算机内存中建立索引桶的映射表,即关键字的哈希值h和索引桶在磁盘上的存储位置c;3)判断索引桶是否在磁盘上,即判断存储位置的值是否等于8个字节的最大值;如果等于8个字节的最大值,说明磁盘上没有已存储的索引桶,继续步骤4);如果不等于8个字节的最大值,说明磁盘上已有已存储的索引桶,转步骤(7);4)磁盘上没有已存储的索引桶时,在磁盘上创建一个新的磁盘块d并存储信息,建立一个新的索引桶,确定新的索引桶在磁盘块d内的序号;5)更新映射表,使c=d;6)更新磁盘,反复存储;7)磁盘上已有已存储的索引桶时,确定该索引桶在磁盘块内的序号;8)判断该索引桶是否有足够的空间存储新的关键字,如果有足够的空间,转步骤(6);如果没有足够的空间,关键字在该索引桶溢出,存储到磁盘块内溢出桶;如果磁盘块内溢出桶也没有足够的空间,关键字在磁盘块内溢出桶溢出,存储到全局溢出桶。哈希索引的检索方法如下1)对待检索索引的信息确定一个关键字;2)读映射表;3)判断待检索索引桶是否在磁盘上,即判断存储位置的值是否等于8个字节的最大值;如果等于8个字节的最大值,说明磁盘上没有已存储的待检索索引桶,检索结束;如果不等于8个字节的最大值,说明磁盘上已有已存储的待检索索引桶,转步骤(4);4)如果不等于8个字节的最大值,从映射表内获取待检索索引桶号和该索引桶所在磁盘块的磁盘块号;5)桶内检索,如果检索到,则检索结束;如果检索不到,在磁盘块内溢出桶检索;6)在磁盘块内溢出桶检索到,检索结束;如果在磁盘块内溢出桶检索不到,则在全局溢出桶检索,检索结束。
全文摘要
一种面向海量数据检索的多级桶哈希索引方法,涉及海量数据存储领域。其特征在于(1)提供桶映射表,用于减小哈希索引文件在磁盘上的占用空间(2)哈希索引采用了多级桶,磁盘块的大小是扇区大小的整数倍,每个磁盘块有一个或多个基本桶,可以有块内溢出桶,具有全局溢出桶(3)提供索引文件的数据缓存结构,提供了数据缓存映射表,数据缓存的管理使用缓存映射表上的双向链表实现。本區 明通过映射表减小索引文件在磁盘上的占用空间,磁盘块是磁盘扇区大小的整数倍,并通过数据缓存结构减少了磁盘读写次数,提高了内存利用效率和数据的检索效率。
文档编号G06F17/30GK101782922SQ20091025610
公开日2010年7月21日 申请日期2009年12月29日 优先权日2009年12月29日
发明者刘江, 王希常, 马磊 申请人:山东山大鸥玛软件有限公司