logo好方法网

数组树数据储存方法、快速查找方法及可读储存介质


技术摘要:
本发明公开了数组树数据储存方法、快速查找方法及可读储存介质。该数组树数据储存方法,包括如下步骤,获取关键字和关键字的数字排列特征,对关键字进行预处理;根据数字排列特征,将关键字映射成数组与树形结构结合表示的链路,建立树形数据结构;将储存数据的内存地  全部
背景技术:
在数据查找算法中,哈希(hash)查找算法虽然等值查找效率极高,但哈希查找算 法却同时存在范围查找功能的不足及磁盘IO效率低等问题,使哈希查找算法应用的场景较 少。应用较为广泛的是以分治管理思想为代表的B树(balanced  tree  oforder  m)和B 树算 法,B树和B 树算法高效的检索效率和完善的功能而被各大数据库厂商采用。但因B树和B 树算法数据结构的限制,存在着索引占用内存资源较高和检索数据集记录数大于10000000 后,性能下降较明显的问题。所以,B树和B 树并不适合海量数据的数据检索。随着大数据应 用的不断深化,对查找算法的数据存储结构也提出了更高的要求,亟需提出一数据存储方 法,以提高检索效率的同时降低数据结构中索引占用的内存资源。
技术实现要素:
本发明的主要目的是提供一种数组树数据储存方法,旨在提高查找效率的同时, 解决数据结构中索引占用的内存资源多的问题。 为实现上述目的,本发明提出的一种数组树数据储存方法,包括如下步骤:获取关 键字和所述关键字的数字排列特征,对所述关键字进行预处理; 根据所述数字排列特征,所述数字排列特征中数字的排列次序对应树形结构中的 层级,所述关键字的数字对应树形结构中本级数组的下标,将所述关键字映射成数组与树 形结构结合表示的链路,建立树形数据结构; 根据储存数据的所述关键字的数字排列特性形成的链路,将所述储存数据的内存 地址储存至所述树形数据结构的叶节点; 将所述树形数据结构的叶节点链接。 优选地,所述链路为根据所述关键字的所述数字排列特征所形成的或经过的所述 树形结构中的数组指针及数组下标组成的顺序记录。 优选地,所述对所述关键字进行预处理的步骤,包括如下步骤: 获取系统内对所述关键字的预设长度; 根据所述预设长度,对所述关键字进行长度一致的预处理。 优选地,所述根据储存数据的所述关键字的数字排列特性形成的链路,将所述储 存数据的内存地址储存至所述树形数据结构的叶节点的步骤,包括如下步骤: 顺序读取所述关键字数组的下标,获取与所述下标对应的结构数组指针,返回链 路记录; 判断所述结构数组是否为最后一级所述树形数据结构的叶节点数组; 若是,则更新叶节点数组链接,将储存数据的内存地址储存至所述树形数据结构 4 CN 111581215 A 说 明 书 2/17 页 的叶节点数组。 优选地,所述顺序读取所述关键字数组的下标,保存链路记录的步骤,包括如下步 骤: 顺序读取所述关键字中数组的下标; 根据所述关键字中数组的下标查找对应所述树形数据结构的结构数组,并存储所 述数组指针及所述数组下标; 判断所述结构数组是否为叶节点数组; 若是,则返回链路记录。 优选地,所述结构数组包括相邻数组指针、数组长度和次级数组指针,所述相邻数 组为所述树形数据结构的所述叶节点间的连接指针,所述次级数组指针为所述树形数据结 构的次级节点的连接指针。 优选地,所述将多个所述树形数据结构的叶节点顺序链接的步骤,包括如下步骤: 从所述关键字对应的当前叶节点开始,根据链路记录,不断在所述当前叶节点的 父节点的结构数组中寻找指向左相邻叶节点的左次级数组指针和指向右相邻叶节点的右 次级数组指针; 判断所述左次级数组指针和所述右次级数组指针是否有效; 若否,继续在所述当前叶节点的父节点的结构数组继续寻找; 若是,根据找到的所述左次级数组指针和链路记录,不断在所述左次级数组指针 的次级节点数组中寻找所述左相邻叶节点,根据找到的所述右次级数组指针和链路记录, 不断在所述右次级数组指针的次级节点数组中寻找所述右相邻叶节点; 进行所述当前叶节点的左链接和右链接;所述左链接为将所述当前叶节点的数组 指针写入所述当前叶节点的左相邻叶节点的数组头部;所述右链接为将所述当前叶节点的 右相邻叶节点的数组指针写入所述当前叶节点的数组头部。 本发明还提供一种数组树数据快速查找方法,提高了检索效率,用于查找数据库, 所述数据库采用如上述任一项所述的数组树数据储存方法进行数据存储,所述数组树数据 快速查找方法,包括如下步骤: 获取储存数据的关键字,对所述关键字进行长度一致预处理; 按照数字排列特征和关键字数组所对应的树形结构链路依次检索结构数组内的 次级数组指针; 判断当前结构数组内的次级数组指针是否为空; 若是,返回空值; 判断所述当前结构数组的长度是否小于所述关键字中的数字; 若是,返回空值; 判断所述当前结构数组是否为叶节点数组; 若是,返回所述当前结构数组内的数据地址指针及数组下标作为查找结果。 优选地,所述关键字包括开始关键字和结束关键字,所述返回所述当前结构数组 内的数据地址指针及数组下标作为查找结果的步骤,包括如下步骤: 返回所述开始关键字和所述结束关键字分别对应的叶节点数组指针及叶节点数 组下标; 5 CN 111581215 A 说 明 书 3/17 页 从所述开始关键字对应的叶节点数组下标开始,依次读取所述开始关键字对应的 叶节点数组内的有效数据地址指针; 在所述开始关键字对应的叶节点数组读取完毕后,根据所述开始关键字对应的叶 节点数组头部的相邻叶节点数组指针,继续读取相邻叶节点数组中有效数据地址指针,直 至读取到所述结束关键字对应的叶节点数组中所述结束关键字对应的叶节点数组下标; 返回所有读取的有效数据地址指针作为查找结果。 本发明还提供了一种计算机可读储存介质,所述计算机可读存储介质上存储有计 算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的一种数组树数据储存 方法或如上述任一项所述的一种数组树数据快速查找方法。 本发明的技术方案中,数组树数据储存方法利用关键字中数字的排列特性,映射 成数组与树形结构结合表示的数组树存储链路,以形成便于检索数据的数据储存方式,数 组树数据储存方法中每个节点都是一个数组,每个数组最多能生成10个指针,每个数组指 针占用4个字节,B树算法中每个树节点至少定义两个指针、一个关键字及数据地址,因此数 组树数据储存方法索引小于B树索引占用的内存空间。 附图说明 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图示出的结构获得其他的附图。 图1为本发明数组树数据储存方法第一实施例的流程示意图; 图2为本发明数据关键字的数字排列特征与内存地址之间的对应关系示意图; 图3为本发明的数据排列特征示意图; 图4为本发明的数字排列特征与数组树(A树)链路示意图; 图5为本发明的数组树(A树)结构数组的结构示意图; 图6为本发明的数组树(A树)树叶节点链接示意图; 图7为本发明的数组树(A树)创建索引流程图; 图8为本发明的数组树(A树)叶节点数组与左右相邻叶节点链接示意图; 图9为本发明的数组树算法等值检索流程图; 图10为本发明的数组树算法范围查询流程图; 图11为本发明的数组树算法与二分算法100000循环检索效率对比图; 图12为本发明的数组树算法与二分算法1000000次循环检索效率对比图; 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
分享到:
收藏