[发明专利]一种内存数据的非唯一索引检索方法有效
| 申请号: | 200710122869.3 | 申请日: | 2007-07-06 | 
| 公开(公告)号: | CN101082935A | 公开(公告)日: | 2007-12-05 | 
| 发明(设计)人: | 朱红军;蒋恒;王小飞 | 申请(专利权)人: | 中兴通讯股份有限公司 | 
| 主分类号: | G06F17/30 | 分类号: | G06F17/30 | 
| 代理公司: | 北京安信方达知识产权代理有限公司 | 代理人: | 许志勇;颜涛 | 
| 地址: | 518057广东省深圳市南山*** | 国省代码: | 广东;44 | 
| 权利要求书: | 查看更多 | 说明书: | 查看更多 | 
| 摘要: | |||
| 搜索关键词: | 一种 内存 数据 唯一 索引 检索 方法 | ||
1.一种内存数据的非唯一索引检索方法,其特征在于,包括以下步骤:
(1)建立生成内存数据的非唯一索引所需的参数标识,并根据所述参数标识分配索引注册表,计算非唯一索引的索引队列入口项的值,为索引字段加上关键字标志,将索引的记录号记录到索引关键字中去;
(2)获得记录在索引注册表中的索引匹配类型,从内存数据表中记录的元数据Meta信息获得当前游标指向的记录号,然后结合给定索引关键字匹配索引项,并插入索引项;
(3)合成索引关键字,并利用合成的索引关键字匹配索引项,查找定位内存数据。
2.如权利要求1所述的方法,其特征在于,步骤(1)中所述参数标识,包括:索引匹配类型、索引类型、索引关键字长度、索引关键字名称以及索引关键字在表中的序号。
3.如权利要求1所述的方法,其特征在于,步骤(1)中分配索引注册表,还包括以下步骤:
(1a)从变量参数中逐个的获取用来建立索引的字段名;
(1b)由字段名获得字段的注册信息,并依据字段的注册信息计算索引关键字的长度和数目;
(1c)遍历索引注册表对象,寻一未分配的注册内存空间,初始化其索引句柄、对应的内存数据表句柄、索引类型以及索引关键字的长度,并计算非唯一索引的索引队列入口项的值;
(1d)逐个给索引字段加上关键字标志,将索引的记录号记录到索引关键字中去。
4.如权利要求1所述的方法,其特征在于,所述结合给定的索引关键字匹配索引项,还包括以下步骤:
(21a)判断索引的主类型,如果是顺序索引,执行步骤21b;如果是一次哈希OTHASH类型索引,则执行步骤21c;
(21b)通过计算获得最后索引项,利用二分折半查找法,当索引项中记录的关键字与合成的关键字相同时,则根据索引项的入口值,得到索引队列的队列哑元,从而根据队列哑元中的记录获得记录号;
(21c)将生成的索引关键字,按照双字节类型拷贝到OTHASH类型的索引关键字结构的缓冲中去;并根据索引关键字,计算得到索引的入口值,通过入口值,计算得到索引入口的地址,从而根据入口中记录的队列头记录号,并将索引的入口值缓存到注册表中。
5.如权利要求4所述的方法,其特征在于,所述插入索引项,还包括以下步骤:
(22a)如果是顺序索引,该索引项还未存在,需要将当前索引数据区下移一个索引项长,初始化当前索引项入口值,即索引双向队列哑元,将关键字拷贝至索引项,并将索引数加1,然后执行步骤22b;
如果是OTHASH类型,判断当前索引队列为空,则将索引数加1,然后执行步骤22b;
(22b)当记录索引没有创建时,即自身的索引项号、前驱、后继皆为零并且索引项哑元的后继不等于自身,将队列哑元缓存到索引队列头中,接着将索引项链接到索引队列,并产生新的队列哑元,同时缓存新的哑元,并将索引深度加1;
(22c)如果插入不成功,则需回滚索引状态。
6.如权利要求1所述的方法,其特征在于,合成索引关键字,还包括以下步骤:
(3a)由索引句柄得到索引在注册表索引信息,并进一步得到内存数据表句柄;
(3b)判断关键字合成方法,如果是一次散列,则执行步骤3c;如果不是OTHASH类型,则执行步骤3d;
(3c)将一次散列关键字缓冲区转换为双字节类型,并依次将各字段类型转换为双字节类型,同时赋给缓冲区,合成索引关键字的流程结束;
(3d)将关键字缓冲区转换为字符串类型,对于定义的每一个需要合成的索引关键字字段,执行步骤3e到步骤3g;
(3e)从索引注册表中获得索引关键字字段号,并判断记录号的有效性;
(3f)从内存数据表的META信息中,得到关键字字段的描述信息,获得关键字字段的字段长度,用来作为合成索引关键字在关键字缓冲区中的偏移量;
(3g)根据索引关键字的类型,判断索引关键字长度,如果是单个值,从变量参数中获得索引关键字的值,并将其转存入关键字缓冲区;如果是数组,将传入的变量参数转换成相应指针类型,并根据传入的地址,和关键字长度进行内存拷贝;最后,将临时指针指向关键字最后一位。
7.如权利要求1所述的方法,其特征在于,利用合成的索引关键字匹配索引项,查找定位内存数据,包括以下步骤:
(31a)根据合成的索引关键字,匹配索引表项,获得内存数据记录号;
(31b)移动数据游标指向当前记录,将当前记录的值缓存临时空间;
(31c)根据输入记录号访问该记录对应索引项,从索引项中获取下一记录号,从而可获非唯一索引当前索引队列输入记录号的下一条记录号;
(31d)根据记录号移动数据游标,获得内存数据的值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710122869.3/1.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置





