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

文档序号:8282340阅读:来源:国知局
;查询步骤:对查询的节点信息键值进行哈希,根据哈希值和键值从哈希区到冲突区查询是否存在该节点信息;删除步骤:对删除的节点信息键值进行哈希,根据哈希值和键值找到该节点信息,删除该节点信息,并根据该节点信息存放位置对应更新冲突区节点信息。
[0022]如图2所示,插入步骤具体过程为:
步骤11:对插入的节点信息键值进行哈希,得到哈希值;
步骤12:哈希区内是否存在该哈希值的节点,若否则将插入的节点信息放入到哈希区内,插入成功,若是则进入下步骤;
步骤13:插入的节点键值与哈希区节点键值是否相同,若是则插入失败,若否进入下步骤;
步骤14:冲突区中是否存在该键值的节点,若是则插入失败,若否则进入下步骤;
步骤15:在剩余计数区查找冲突区的下一个空闲位置,并通过拉链法将插入节点信息放入冲突区,更新剩余计数区,插入成功。
[0023]如图3所示,查询步骤具体过程为:
步骤21:对查询的节点信息键值进行哈希,得到哈希值;
步骤22:根据哈希值在哈希区查找是否存在有节点,若否则表示不存在查询的节点,若是则进入下步骤;
步骤23:查询节点和哈希区节点的键值是否相同,若是则存在查询的节点,查询成功,若否则进入下步骤;
步骤24:存在冲突,按照冲突区链表查找冲突节点;
步骤25:冲突区链表是否存在该键值节点,若否则表示不存在查询的节点,若是则表示存在查询的节点,查询成功。
[0024]如图4所示,删除步骤具体过程为:
步骤31:对要删除节点信息键值进行哈希,得到哈希值;
步骤32:根据哈希值在哈希区查找是否存在该节点,若否则删除失败,不存在该节点,若是则进入下步骤;
步骤33:根据键值判断是否为该节点,若是则删除该节点,同时将冲突区链表头节点移入到哈希区,更新剩余计数区;若否则进入下步骤;
步骤34:在冲突区根据键值顺序查找是否存在该节点,若是则删除该节点,更新冲突区链表和剩余计数区,若否则删除失败,不存在该节点。
[0025]另外,插入步骤中出现拉链法处理具体过程为:在每个节点内设置指向下一个节点的字段,哈希区内节点的字段指向一个与其冲突的冲突区节点,若冲突区内存在有多个哈希值相同的冲突节点,则以哈希区节点指向的冲突区节点为首,各节点字段依次指向下一个节点,位于最后的冲突区节点字段指向为空,形成冲突区节点链表。如图5所示,假设哈希区内存在一个节点1,冲突区内存在与该接点冲突的节点9和节点12,节点1、9、12哈希值相同,键值不同,采用拉链法后,节点I中有一个字段指向节点9,节点9有一个字段指向节点12,节点12的字段指向空。
[0026]本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
[0027]尽管本文较多地使用了索引管理区、哈希区、冲突区、剩余计数区等术语,但并不排除使用其它术语的可能性。使用这些术语仅仅是为了更方便地描述和解释本发明的本质;把它们解释成任何一种附加的限制都是与本发明精神相违背的。
【主权项】
1.一种基于连续内存的数据库索引系统,其特征在于:包括连续内存,所述内存内形成有索引管理区、哈希区、冲突区和剩余计数区, 索引管理区:用于管理整个索引内存,记录索引的基本信息的内存区域; 哈希区:用于保存节点信息,能对节点信息进行插入、查询和删除; 冲突区:用于保存与哈希区冲突的节点信息,能对节点信息进行插入、查询和删除; 剩余计数区:用来保存冲突区内没有被使用的节点统计信息。
2.根据权利要求1所述的一种基于连续内存的数据库索引系统,其特征是所述索引管理区内基本信息包括键值类型、键值长度、节点内容长度、最大节点数目、节点数目、哈希区首地址、冲突区首地址、剩余计数区首地址、剩余计数区栈顶,索引控制区对基本信息进行初始化,确定基本信息的值。
3.—种基于连续内存的数据库索引处理方法,其特征是:包括有插入步骤、查询步骤和删除步骤, 插入步骤:对插入的节点信息键值进行哈希,与哈希区的节点进行哈希值和键值的比较,将未冲突的节点信息放入哈希区,将冲突的节点信息按照拉链法处理放入冲突区,并更新剩余计数区; 查询步骤:对查询的节点信息键值进行哈希,根据哈希值和键值从哈希区到冲突区查询是否存在该节点信息; 删除步骤:对删除的节点信息键值进行哈希,根据哈希值和键值找到该节点信息,删除该节点信息,并根据该节点信息存放位置对应更新冲突区节点信息。
4.根据权利要求3所述的一种基于连续内存的数据库索引处理方法,其特征是所述插入步骤具体为: 步骤11:对插入的节点信息键值进行哈希,得到哈希值; 步骤12:哈希区内是否存在该哈希值的节点,若否则将插入的节点信息放入到哈希区内,插入成功,若是则进入下步骤; 步骤13:插入的节点键值与哈希区节点键值是否相同,若是则插入失败,若否进入下步骤; 步骤14:冲突区中是否存在该键值的节点,若是则插入失败,若否则进入下步骤; 步骤15:在剩余计数区查找冲突区的下一个空闲位置,并通过拉链法将插入节点信息放入冲突区,更新剩余计数区,插入成功。
5.根据权利要求3所述的一种基于连续内存的数据库索引处理方法,其特征是所述查询步骤具体为: 步骤21:对查询的节点信息键值进行哈希,得到哈希值; 步骤22:根据哈希值在哈希区查找是否存在有节点,若否则表示不存在查询的节点,若是则进入下步骤; 步骤23:查询节点和哈希区节点的键值是否相同,若是则存在查询的节点,查询成功,若否则进入下步骤; 步骤24:存在冲突,按照冲突区链表查找冲突节点; 步骤25:冲突区链表是否存在该键值节点,若否则表示不存在查询的节点,若是则表示存在查询的节点,查询成功。
6.根据权利要求3所述的一种基于连续内存的数据库索引处理方法,其特征是所述删除步骤具体为: 步骤31:对要删除节点信息键值进行哈希,得到哈希值; 步骤32:根据哈希值在哈希区查找是否存在该节点,若否则删除失败,不存在该节点,若是则进入下步骤; 步骤33:根据键值判断是否为该节点,若是则删除该节点,同时将冲突区链表头节点移入到哈希区,更新剩余计数区;若否则进入下步骤; 步骤34:在冲突区根据键值顺序查找是否存在该节点,若是则删除该节点,更新冲突区链表和剩余计数区,若否则删除失败,不存在该节点。
7.根据权利要求3或4或5或6所述的一种基于连续内存的数据库索引处理方法,其特征是所述拉链法处理过程为:在每个节点内设置指向下一个节点的字段,哈希区内节点的字段指向一个与其冲突的冲突区节点,若冲突区内存在有多个哈希值相同的冲突节点,则以哈希区节点指向的冲突区节点为首,各节点字段依次指向下一个节点,位于最后的冲突区节点字段指向为空,形成冲突区节点链表。
【专利摘要】本发明涉及一种基于连续内存的数据库索引系统以及处理方法。解决现有技术中基于离散内存的索引存在速度慢、效率低、不方便管理的问题。系统括连续内存,内存内形成有索引管理区、哈希区、冲突区和剩余计数区。数据库索引处理方法包括有插入步骤、查询步骤和删除步骤。对要插入、查询或删除的节点键值进行哈希,根据哈希值在哈希区内插入、查询或删除,若存在哈希值相同,则在冲突区进行插入、查询或删除。本发明的优点是:采用连续内存,并将连续内存分成四个区,相比传统基于离散内存的索引操纵速度更快速。
【IPC分类】G06F17-30
【公开号】CN104598519
【申请号】CN201410763624
【发明人】丁康, 孙福林, 李 杰, 曹辉
【申请人】浙江浙大中控信息技术有限公司
【公开日】2015年5月6日
【申请日】2014年12月11日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1