一种基于连续内存的数据库索引系统及处理方法

文档序号:8282340阅读:348来源:国知局
一种基于连续内存的数据库索引系统及处理方法
【技术领域】
[0001]本发明涉及一种数据库索引技术,尤其是涉及一种操作快速的基于连续内存的数据库索引系统以及处理方法。
【背景技术】
[0002]传统的数据库中,使用的是基于离散内存的索引。存在多个问题。首先,不能多个进程共享访问同一个索引。所有需要查询或更新数据的进程需要将查询或更新的数据交给数据库查询进程进行排队操作。索引速度慢且不能充分利用计算资源。其次,离散的内存不方便内存管理,容易引起内存碎片。最后,基于离散内存的索引,想要持久化到文件比较复杂,速度也较慢。

【发明内容】

[0003]本发明主要是解决现有技术中基于离散内存的索引存在速度慢、效率低、不方便管理的问题,提供了一种操作快速的基于连续内存的数据库索引系统。
[0004]本发明还提供了一种操作快速的基于连续内存的数据库索引处理方法。
[0005]本发明的上述技术问题主要是通过下述技术方案得以解决的:一种基于连续内存的数据库索引系统,括连续内存,所述内存内形成有索引管理区、哈希区、冲突区和剩余计数区,
索引管理区:用于管理整个索引内存,记录索引的基本信息的内存区域;
哈希区:用于保存节点信息,能对节点信息进行插入、查询和删除;
冲突区:用于保存与哈希区冲突的节点信息,能对节点信息进行插入、查询和删除;冲突是指插入节点与哈希区节点的键值不同但哈希值相同。
[0006]剩余计数区:用来保存冲突区内没有被使用的节点统计信息。统计冲突区内未被使用的节点位置及数量信息。
[0007]本发明中采用连续内存,并将连续内存分成四个区。由于采用连续内存,便于在多个进程之间共享,在主流通用操作系统上共享内存必须是连续内存,通过共享内存的方式可以多个进程共享同一个数据库索引。并且避免了所有需要查询或更新数据的进程需要将查询或更新的数据交给数据库查询进程进行排队操作的问题。共享索引可以并发操作,充分利用了计算资源,索引速度快。而且连续的内存方便内存管理,在主流操作系统上一次申请内存均为连续内存,连续内存不会引起内存碎片,方便管理且速度快。最后连续的内存可以方便的持久化到文件,持久化的速度也较快。通过本发明的结构,使得能协助数据库进行插入、查询、删除等操作时更加快速。
[0008]作为一种优选方案,所述索引管理区内基本信息包括键值类型、键值长度、节点内容长度、最大节点数目、节点数目、哈希区首地址、冲突区首地址、剩余计数区首地址、剩余计数区栈顶,索引控制区对基本信息进行初始化,确定基本信息的值。构建索引控制区的初始化,首先确定键值类型、键值长度、节点内容长度、最大节点数目的值,在确定了键值长度,节点长度为键值长度加上节点内容长度再加上8,哈希区长度为节点长度乘以最大节点数目,冲突区与哈希区长度线共同个,剩余计数区的长度为最大节点数目乘以8。然后根据调用者给出的连续内存的首地址可对索引管理区进行初始化。
[0009]一种基于连续内存的数据库索引处理方法,包括有插入步骤、查询步骤和删除步骤,
插入步骤:对插入的节点信息键值进行哈希,与哈希区的节点进行哈希值和键值的比较,将未冲突的节点信息放入哈希区,将冲突的节点信息按照拉链法处理放入冲突区,并更新剩余计数区;冲突是指插入节点与哈希区节点的键值不同但哈希值相同。
[0010]查询步骤:对查询的节点信息键值进行哈希,根据哈希值和键值从哈希区到冲突区查询是否存在该节点信息;
删除步骤:对删除的节点信息键值进行哈希,根据哈希值和键值找到该节点信息,删除该节点信息,并根据该节点信息存放位置对应更新冲突区节点信息。
[0011]本发明基于连续内存的数据库索引处理方法,使得插入、查询和删除相比传统基于离散内存索引更加快速。
[0012]作为一种优选方案,所述插入步骤具体为:
步骤11:对插入的节点信息键值进行哈希,得到哈希值;
步骤12:哈希区内是否存在该哈希值的节点,若否则将插入的节点信息放入到哈希区内,插入成功,若是则进入下步骤;
步骤13:插入的节点键值与哈希区节点键值是否相同,若是则插入失败,若否进入下步骤;
步骤14:冲突区中是否存在该键值的节点,若是则插入失败,若否则进入下步骤;
步骤15:在剩余计数区查找冲突区的下一个空闲位置,并通过拉链法将插入节点信息放入冲突区,更新剩余计数区,插入成功。
[0013]作为一种优选方案,所述查询步骤具体为:
步骤21:对查询的节点信息键值进行哈希,得到哈希值;
步骤22:根据哈希值在哈希区查找是否存在有节点,若否则表示不存在查询的节点,若是则进入下步骤;
步骤23:查询节点和哈希区节点的键值是否相同,若是则存在查询的节点,查询成功,若否则进入下步骤;
步骤24:存在冲突,按照冲突区链表查找冲突节点;
步骤25:冲突区链表是否存在该键值节点,若否则表示不存在查询的节点,若是则表示存在查询的节点,查询成功。
[0014]作为一种优选方案,所述删除步骤具体为:
步骤31:对要删除节点信息键值进行哈希,得到哈希值;
步骤32:根据哈希值在哈希区查找是否存在该节点,若否则删除失败,不存在该节点,若是则进入下步骤;
步骤33:根据键值判断是否为该节点,若是则删除该节点,同时将冲突区链表头节点移入到哈希区,更新剩余计数区;若否则进入下步骤;
步骤34:在冲突区根据键值顺序查找是否存在该节点,若是则删除该节点,更新冲突区链表和剩余计数区,若否则删除失败,不存在该节点。
[0015]作为一种优选方案,所述拉链法处理过程为:在每个节点内设置指向下一个节点的字段,哈希区内节点的字段指向一个与其冲突的冲突区节点,若冲突区内存在有多个哈希值相同的冲突节点,则以哈希区节点指向的冲突区节点为首,各节点字段依次指向下一个节点,位于最后的冲突区节点字段指向为空,形成冲突区节点链表。指向为串联形式,即一个冲突节点指向第二个冲突节点,第二个冲突节点指向第三个冲突节点,直到最后一个冲突节点指向为空。
[0016]因此,本发明的优点是:采用连续内存,并将连续内存分成四个区,相比传统基于离散内存的索引操纵速度更快速。
【附图说明】
[0017]附图1是本发明中连续内存的一种分区结构示意图;
附图2是本发明中插入节点的一种流程示意图;
附图3是本发明中查询节点的一种流程示意图;
附图4是本发明中删除节点的一种流程示意图;
附图5是本发明中拉链法的一种处理示意图。
【具体实施方式】
[0018]下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
[0019]实施例:
本实施例一种基于连续内存的数据库索引系统,包括连续内存,内存内形成有索引管理区、哈希区、冲突区和剩余计数区,
索引管理区:用于管理整个索引内存,记录索引的基本信息的内存区域;基本信息包括键值类型、键值长度、节点内容长度、最大节点数目、节点数目、哈希区首地址、冲突区首地址、剩余计数区首地址、剩余计数区栈顶,索引控制区对基本信息进行初始化,确定基本信息的值。
[0020]哈希区:用于保存节点信息,能对节点信息进行插入、查询和删除;
冲突区:用于保存与哈希区冲突的节点信息,能对节点信息进行插入、查询和删除; 剩余计数区:用来保存冲突区内没有被使用的节点统计信息。
[0021]该基于连续内存的数据库索引处理方法包括有插入步骤、查询步骤和删除步骤,其中插入步骤:对插入的节点信息键值进行哈希,与哈希区的节点进行哈希值和键值的比较,将未冲突的节点信息放入哈希区,将冲突的节点信息按照拉链法处理放入冲突区,并更新剩余计数区
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1