[发明专利]一种内存数据的非唯一索引检索方法有效
| 申请号: | 200710122869.3 | 申请日: | 2007-07-06 |
| 公开(公告)号: | CN101082935A | 公开(公告)日: | 2007-12-05 |
| 发明(设计)人: | 朱红军;蒋恒;王小飞 | 申请(专利权)人: | 中兴通讯股份有限公司 |
| 主分类号: | G06F17/30 | 分类号: | G06F17/30 |
| 代理公司: | 北京安信方达知识产权代理有限公司 | 代理人: | 许志勇;颜涛 |
| 地址: | 518057广东省深圳市南山*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 内存 数据 唯一 索引 检索 方法 | ||
技术领域
本发明公开了通讯领域中的内存数据库对其所提供的数据的一种检索方法,尤其涉及内存数据库对数据建立非唯一索引来定位数据记录的实现方法。
背景技术
在NGN网络中,实现了PSTN网和分组网的互通。MSG作为连接PSTN和IP分组网的网元,为了提高数据处理的能力,增强系统的实时性,使用了内存数据库。内存数据库的使用在网络设备中越来越广泛。
在目前使用的内存数据库中,对于内存表的记录检索是通过建立索引的方法来完成的。其实现的方法是在记录插入内存表时,依据建立内存表的关键字来建立索引。在内存数据库中,大部分情况下,其索引关键字是唯一的,但有时出于应用需要,用来建立索引的内存表的关键字不能保证唯一性。在这种情况下可以通过顺序索引来实现部分匹配。
这种方式有一个明显的缺点,就是建立顺序索引时,需要移动内存,将新建立的索引值插入到合适的位置,耗时较大,影响系统实时性;此外,由于顺序索引的部分匹配,在定位所需要的记录时,会导致检索的时间复杂度成n/2倍的增加,在最坏的情况下,需要比较n次,才能检索定位到内存记录;同时,顺序索引只应用在中小数据量的情况下,不适合大数据量的内存表。
发明内容
本发明要解决的技术问题是提供一种内存数据的非唯一索引检索方法,用于管理多条记录有相同的关键字的情况,这些队列共享同一内存空间,使得内存数据的检索定位快速方便,能够满足系统的实时性,大数据量的要求。
为了解决上述问题,本发明提供了一种内存数据的非唯一索引检索方法,其中,包括以下步骤:
(1)建立生成内存数据的非唯一索引所需的参数标识,并根据所述参数标识分配索引注册表,计算非唯一索引的索引队列入口项的值,为索引字段加上关键字标志,将索引的记录号记录到索引关键字中去;
(2)获得记录在索引注册表中的索引匹配类型,从内存数据表中记录的元数据Meta信息获得当前游标指向的记录号,然后结合给定索引关键字匹配索引项,并插入索引项;
(3)合成索引关键字,并利用合成的索引关键字匹配索引项,查找定位内存数据;
进一步的,本发明所述的方法,其中,步骤(1)中所述参数标识,包括:索引匹配类型、索引类型、索引关键字长度、索引关键字名称以及索引关键字在表中的序号;
进一步的,本发明所述的方法,其中,步骤(1)中分配索引注册表,还包括以下步骤:
(1a)从变量参数中逐个的获取用来建立索引的字段名;
(1b)由字段名获得字段的注册信息,并依据字段的注册信息计算索引关键字的长度和数目;
(1c)遍历索引注册表对象,寻一未分配的注册内存空间,初始化其索引句柄、对应的内存数据表句柄、索引类型以及索引关键字的长度,并计算非唯一索引的索引队列入口项的值;
(1d)逐个给索引字段加上关键字标志,将索引的记录号记录到索引关键字中去;
进一步的,本发明所述的方法,其中,所述步骤(2)包括:获得记录在索引注册表中的索引匹配类型,从内存数据表中记录的Meta信息获得当前游标指向的记录号,然后根据给定索引关键字匹配索引项,并插入索引项;
进一步的,本发明所述的方法,其中,所述结合给定的索引关键字匹配索引项,还包括以下步骤:
(21a)判断索引的主类型,如果是顺序索引,执行步骤21b;如果是OTHASH(一次哈希)类型索引,则执行步骤21c;
(21b)通过计算获得最后索引项,利用二分折半查找法,当索引项中记录的关键字与合成的关键字相同时,则根据索引项的入口值,得到索引队列的队列哑元,从而根据队列哑元中的记录获得记录号;
(21c)将生成的索引关键字,按照双字节类型拷贝到OTHASH类型的索引关键字结构的缓冲中去;并根据索引关键字,计算得到索引的入口值,通过入口值,计算得到索引入口的地址,从而根据入口中记录的队列头记录号,并将索引的入口值缓存到注册表中;
进一步的,本发明所述的方法,其中,所述插入索引项,还包括以下步骤:
(22a)如果是顺序索引,该索引项还未存在,需要将当前索引数据区下移一个索引项长,初始化当前索引项入口值,即索引双向队列哑元,将关键字拷贝至索引项,并将索引数加1,然后执行步骤22b;
如果是OTHASH类型,判断当前索引队列为空,则将索引数加1,然后执行步骤22b;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710122869.3/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置





