一种实时数据库的B+树索引方法及装置制造方法及图纸

技术编号:7248997 阅读:244 留言:0更新日期:2012-04-11 18:40
本发明专利技术适用于数据处理领域,提供了一种实时数据库的B+树索引方法及装置,所述方法包括:根据实时数据库中表或记录的个数,获得节点个数,所述节点包括节点域和控制域;根据每个节点所需占用的内存空间,划分对应的内存空间用于存储每个节点的节点域和控制域;将表或记录的关键字存储至节点的节点域,将指针信息存储至节点的控制域,以此生成各节点及B+树索引。提供了一种既高效,又稳定的索引方法。既提高了实时数据库的稳定性,又提高了实时数据库的性能,使得用户能够更加快捷地访问实时数据库。

【技术实现步骤摘要】

本专利技术属于数据处理领域,尤其涉及一种实时数据库的B+树索引方法及装置
技术介绍
随着现今数据量的不断扩充,数据库中的数据不断增多,在应用时要求数据库具有主动、实时、时效等特性。其中,索引是提高数据库系统执行效率的一种有效工具。由于实时数据库的索引受内存的快速存取以及高有效利用率的影响,因此适用于实时数据库的索引结构大致可以分为两大类一类是数据保持某种自然排序的索引结构,如各种数据结构; 另一类是数据随机分布的索引结构,如各种哈希结构。传统索引结构主要有下列三种,以下将详细描述。第一,采用数组做索引结构。其具体方法为通过预先知道数据的大小或者通过虚拟存储映射技术而使数据妥当增长,使数组索引使用的空间最小。然而,数组索引结构不能动态维护,每一维护操作所引起的数据移动量是O(n)级的(η为数组元素个数),使得维护代价过高。且数组索引结构实用性不强。第二,采用AVL树(一种自平衡二叉查找树)做索引结构。由于AVL树操作的时间复杂度较小,为0(Log2N) (N为记录数),因此具有较高的存取性能。但是由于其每个结点只有一个数据元素,却有两个指针和有关指针信息,造成其内存的有效利用率很低。第三,采用B树(一种数据结构)做索引结构。B树是一种动态调节的平衡树,B树的操作代价是o( Logk + l + l-^- +C),其中,k是B树的阶(0rder),N是记录数,C是一个很小的整数。然而,将B树作为索引结构时,由于关键字分布在整个B树中,并且在内结点(叶结点以外的结点)中出现过的关键字不再出现在叶结点中,使得顺序链不能将树中所有关键字链接在一起,这不利于需要顺序查找或排序的操作。其次,在B树中,删除操作比较繁琐。因此,B树无法满足实时数据库高效的执行效率。
技术实现思路
本专利技术实施例的目的在于提供一种实时数据库的B+树索引方法及装置,旨在解决现有的用于实时数据库的索引结构效率不高,实用性不强的问题。本专利技术实施例是这样实现的,一种实时数据库的B+树索引方法,所述方法包括根据实时数据库中表或记录的个数,获得节点个数,所述节点包括节点域和控制域;根据每个节点所需占用的内存空间,划分对应的内存空间用于存储每个节点的节点域和控制域;将表或记录的关键字存储至节点的节点域,将指针信息存储至节点的控制域,以此生成各节点及B+树索引。本专利技术实施例的另一目的在于提供了一种实时数据库的B+树索引装置,所述装置包括节点个数获取单元,用于根据实时数据库中表或记录的个数,获得节点个数,所述节点包括节点域和控制域;内存划分单元,用于根据每个节点所需占用的内存空间,划分对应的内存空间用于存储每个节点的节点域和控制域;索引生成单元,用于将表或记录的关键字存储至节点的节点域,将指针信息存储至节点的控制域,以此生成各节点及B+树索引。在本专利技术实施例中,通过B+树来实现实时数据库的索引,提供了一种既高效,又稳定的索引方法。既提高了实时数据库的稳定性,又提高了实时数据库的性能,使得用户能够更加快捷地访问实时数据库。附图说明图1是本专利技术实施例一提供的实时数据库的B+树索引方法流程图;图2是本专利技术实施例二提供的根据B+树索引查找关键字的实例;图3是本专利技术实施例三提供的根据B+树索引插入关键字的一种实例;图4是本专利技术实施例三提供的根据B+树索引插入关键字的一种实例;图5是本专利技术实施例四提供的根据B+树索引删除关键字的一种实例;图6是本专利技术实施例四提供的根据B+树索引删除关键字的一种实例;图7是本专利技术实施例五提供的实时数据库的B+树索引装置结构示意图。具体实施例方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。本专利技术实施例提供一种实时数据库的B+树(一种数据结构)索引方法,通过重新定义B+树的节点域及控制域的数据结构后,创建B+树,利用B+树建立实时数据库的索引。本专利技术提供了一种实时数据库的B+树索引方法及装置所述方法包括根据实时数据库中表或记录的个数,获得节点个数,所述节点包括节点域和控制域;根据每个节点所需占用的内存空间,划分对应的内存空间用于存储每个节点的节点域和控制域;将表或记录的关键字存储至节点的节点域,将指针信息存储至节点的控制域,以此生成各节点及B+树索引。所述装置包括节点个数获取单元,用于根据实时数据库中表或记录的个数,获得节点个数,所述节点包括节点域和控制域;内存划分单元,用于根据每个节点所需占用的内存空间,划分对应的内存空间用于存储每个节点的节点域和控制域;索引生成单元,用于将表或记录的关键字存储至节点的节点域,将指针信息存储至节点的控制域,以此生成各节点及B+树索引。为了说明本专利技术所述的技术方案,下面通过具体实施例来进行说明。实施例一如图1所示为本专利技术提供的实时数据库的B+树索引方法的流程图,为了便于说明,仅示出了与本专利技术实施例相关的部分。在步骤SlOl中,根据实时数据库中表或记录的个数,获得节点个数,所述节点包括节点域和控制域。在本专利技术实施例中,由于索引既可以是实时数据库中表的索引,也可以是实时数据库中各条记录的索引。在B+树中,用一个节点来表示一个表或一条数据库中的记录,因此表的个数或记录的条数与节点个数相同。若是创建表的索引,则根据表的个数获得节点的个数;若是创建记录的索引,则根据记录的个数获得节点的个数。在本专利技术实施例中,节点包括节点域和控制域。其中,节点域用于存储节点信息, 此处即为表或记录的关键字;控制域用于存储指针信息,此处的指针信息包括但不限于 指向其他节点的指针及指向关键字对应的表或记录的指针。在步骤S102中,根据每个节点所需占用的内存空间,划分对应的内存空间用于存储每个节点的节点域和控制域。在本专利技术实施例中,由于每个节点的大小不同,占用的内存空间大小就不同。在计算出每个节点所占用的内存空间后,划分对应的内存空间用于存储每个节点的节点域和控制域。如将内存地址0X00到0X11的内存空间用于存储第一个节点的节点域。在步骤S103中,将表或记录的关键字存储至节点的节点域,将指针信息存储至节点的控制域,以此生成各节点及B+树索引。在本专利技术实施例中,将表或记录的关键字存储至各节点的节点域,并将表或记录的关键字作为节点的关键字,将指针信息(如指针信息)存储至节点的控制域,初始化B+ 树,生成各节点及B+树索引。在本专利技术实施例中,生成的B+树中每个节点的子树个数小于等于B+树的阶数,所述B+树每个分支所包括的子树个数大于等于B+树的阶数,所述B+树中除叶子节点外,其他节点至少有两颗子树。在B+树中,每个节点的子树个数与该节点的关键字个数相同,叶子节点包含的关键字的个数大于等于子树个数的二分之一。叶子节点用于存储节点的关键字及指向该关键字对应的表或记录的指针,或用于存储数据文件分块后每块数据文件的最大关键字及指向该最大关键字对应的表或记录的指针,叶子节点按关键字值的大小顺序进行链接,所有叶子节点都在一层。所有分支节点包括该分支节点的子节点中值最大关键字或值最小的关键字的分界值及指向该分界值的指针。如图2中,第二层中左边第一个节点包含关键字F及J,而F和J正是该节点的子节点中值最小的关键字的分界值。本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:丁明伟
申请(专利权)人:航天科工深圳集团有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术