[发明专利]一种对象存储设备中的对象查找方法有效
申请号: | 200910060552.0 | 申请日: | 2009-01-16 |
公开(公告)号: | CN101464901A | 公开(公告)日: | 2009-06-24 |
发明(设计)人: | 冯丹;何水兵;庞丽萍;谭支鹏;陆承涛;谢雨来;胡洋;秦亦 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 华中科技大学专利中心 | 代理人: | 方 放 |
地址: | 430074湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 对象 存储 设备 中的 查找 方法 | ||
1.一种对象存储设备中的对象查找方法,包括:
(1)系统初始化步骤:顺序进行下述过程:
(1.1)根据磁盘的超级块信息,找到磁盘上索引结构体所在的磁盘 块号W,根据磁盘块号W,将磁盘上索引结构体内容读到内存中;
(1.2)在内存中建立映射结构体,将映射结构体的内容,设置为读 取的索引结构体的I、R、N、HT;
(1.3)等待用户操作,根据用户操作类型,分别转步骤(2)、(3)、 (4);
(2)记录插入步骤:创建一个新对象时,进行下述过程:
(2.1)从内存映射结构体中,取参数I、N、R、HT,以对象标志符 为关键字,根据哈希函数,计算出哈希值,取出哈希值对应的二进制形式 的低I位,并将其换算为整数,记为M,置R为R+1,将区分哈希桶是否 要分裂的标志Splitflag置为0;
(2.2)判断是否M<N,是则顺序进行,否则转过程(2.10);
(2.3)将第一操作桶址D1置为HT中第M项的值,将块号为D1的 磁盘块内容读到内存中的第一映射桶;
(2.4)主记录号H置为所述哈希值除以J的余数,第一记录号F初 始化为主记录号H;J为一个哈希桶最多存放的记录数;
(2.5)在第一映射桶中取出第F个记录,判断该记录是否为空记录, 是则顺序进行,否则转过程(2.7);
(2.6)将新记录添加到第一映射桶中第F个记录的位置,同时将第 一映射桶的内容写回到块号为D1的磁盘块中;转过程(2.12);
(2.7)第一记录号F+1后除以J,所得余数赋予F,判断是否F=H, 是则顺序进行,否则转过程(2.5);
(2.8)判断第一映射桶是否有溢出桶,是则顺序进行,否则转过程 (2.11);
(2.9)将D1置为第一映射桶的溢出桶地址,将块号为D1的磁盘块 内容从磁盘读到内存中的第一映射桶,转过程(2.4);
(2.10)将M置为M-2(I-1),转过程(2.3);
(2.11)在磁盘上分配块号为V的磁盘块作为第一映射桶的溢出桶, 将第一映射桶的内容写回到块号为D1的磁盘块中;将第一映射桶的所有 内容置为空,将新记录添加到第一映射桶中第H条记录位置,将第一操 作桶址D1置为V,将第一映射桶的内容写回到块号为D1的磁盘块中;
(2.12)判断是否R/N>t,t为给定的阈值,是则顺序进行,否则转 过程(2.22);
(2.13)在磁盘上分配块号为U的磁盘块为一个新哈希桶,将HT的 第N项值置为U,将N置为N+1;
(2.14)判断是否N>2I,是则顺序进行,否则转过程(2.16);
(2.15)将I置为I+1;
(2.16)判断N-1的I位二进制形式第一位是否为1,是则顺序进行, 否则转过程(2.23);
(2.17)将N-1的I位二进制形式的低I-1位换算成整数,记为 K,将第二操作桶址D2置为HT中第K项的值,将块号为D2的磁盘块内 容读到内存中的第二映射桶,第二记录号S初始化为0;将第一操作桶址 D1置为HT中第N-1项的值,将块号为D1的磁盘块内容读到内存中的第 一映射桶,将Splitflag置为1;
(2.18)在第二映射桶中取出第S个记录,判断该记录哈希值的二 进制形式从右往左的第I位是否等于1,是则将第二映射桶中第S个记录 置为空,将第二映射桶的内容写回到块号为D2的磁盘块中,转过程(2.4), 否则顺序进行;
(2.19)第二记录号S+1后除以J,所得余数赋予记录号S,判断是 否S=0,是则顺序进行,否则转过程(2.18);
(2.20)判断第二映射桶是否有溢出桶,是则顺序进行,否则置 Splitflag=0,转过程(2.23);
(2.21)将D2置为第二映射桶的溢出桶地址,将溢出桶内容从磁盘 读到内存中的第二映射桶,转过程(2.18);
(2.22)判断是否Splitflag=0,是则顺序进行,否则转过程(2.19);
(2.23)将内存中的映射结构体内容写回到磁盘块W中,等待用户 操作,分别转步骤(2)、(3)、(4);
(3)记录查找步骤:在读对象,写对象或者查看对象属性信息时进 行,顺序进行下述过程:
(3.1)从内存映射结构体中,取参数I、N、HT,以对象标志符为关 键字,根据哈希函数,计算出哈希值,取出哈希值对应的二进制形式的低 I位,并将该低I位二进制数换算为整数,记为M;
(3.2)判断是否M<N,是则顺序进行,否则转过程(3.9);
(3.3)将块号为HT中第M项值的磁盘块内容读到内存中的映射桶;
(3.4)主记录号H置为哈希值除以J的余数,记录号A初始化为主 记录号H;
(3.5)在映射桶中取出第A个记录,判断该记录的关键字是否为要 查找的对象标志符,是则顺序进行,否则转过程(3.7);
(3.6)返回第A个记录,转过程(3.12);
(3.7)记录号A+1后除以J,所得余数赋予记录号A,判断是否A= H,是则顺序进行,否则转过程(3.5);
(3.8)判断映射桶是否有溢出桶,是则顺序进行,否则转过程(3.11);
(3.9)将溢出桶内容从磁盘读到内存中的映射桶,转过程(3.5);
(3.10)将M设置为M-2(I-1),转过程(3.3);
(3.11)返回空记录;
(3.12)等待用户操作,分别转步骤(2)、(3)、(4);
(4)记录删除步骤:在删除一个已存在的对象时,进行下述过程:
(4.1)从内存映射结构体中,取参数I、N、R、HT,以对象标志符 为关键字,根据哈希函数,计算出哈希值,取出哈希值对应的二进制形式 的低I位,并将该低I位二进制数换算为整数,记为M;
(4.2)判断是否M<N,是则顺序进行,否则转过程(4.9);
(4.3)将操作桶址D置为HT中第M项的值,将块号为D的磁盘块 内容读到内存中的映射桶;
(4.4)主记录号H置为哈希值除以J的余数,记录号A初始化为主 记录号H;
(4.5)在映射桶中取出第A个记录,判断该记录的关键字是否为要 查找的对象标志符,是则顺序进行,否则转过程(4.7);
(4.6)删除映射桶中第A个记录,将映射桶的内容写回到块号为D 的磁盘块中,将R置为R-1,将内存中的映射结构体内容写回到磁盘块W 中,转过程(4.11);
(4.7)记录号A+1后除以J,所得余数赋予记录号A,判断是否A= H,是则顺序进行,否则转过程(4.5);
(4.8)判断映射桶是否有溢出桶,是则顺序进行,否则转过程(4.11);
(4.9)将操作桶址D置为映射桶的溢出桶地址,将溢出桶内容从磁 盘读到内存中的映射桶,转过程(4.5);
(4.10)将M设置为M-2(I-1),转过程(4.3);
(4.11)等待用户操作,分别转步骤(2)、(3)、(4);
所述步骤(2)、(3)、(4)根据用户操作类型独立运行;
所述记录由对象标志符和对象索引节点块号组成,其中对象标志符 为128位的无符号整数,对象索引节点块号为相应对象索引节点在磁盘 上的块号;
所述索引结构体,是一个数据结构,由I、N、R、HT 4个参数组成, 其中,I为二进制形式表示的哈希值中当前被使用的位数,N为当前哈 希桶数,R为当前记录总数,HT为含有N个表项的哈希表,它的每个表 项存放对应哈希桶在磁盘上的地址,以便通过它可以找到对应的哈希桶;
所述映射结构体,是一个数据结构,位于内存中,其数据结构和索 引结构体相同;
所述哈希桶,是一个存储单元,由磁盘上固定数目的磁盘块构成, 它最多存放J个记录和一个32位的溢出桶地址,所有记录的对象标志符 的哈希值的右边I位均相同,I由索引结构体中指定;
所述哈希表,为含有N个表项的表,它的每个表项存放对应哈希桶 在磁盘上的地址,以便通过它可以找到对应的哈希桶。
2.如权利要求1所述的对象查找方法,其特征在于:
所述记录插入步骤中,所述阈值t=P×J,P为实数,0<P<1,P过 小时,生成的空闲哈希桶过多,哈希表过大,磁盘空间浪费多;P过大时, 可能有较多的哈希桶有溢出桶,查找效率下降;J为一个哈希桶最多存 放的记录数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910060552.0/1.html,转载请声明来源钻瓜专利网。