[发明专利]一种树形结构数据的数据库存取方法有效
申请号: | 201510191491.7 | 申请日: | 2015-04-21 |
公开(公告)号: | CN104809190B | 公开(公告)日: | 2018-07-31 |
发明(设计)人: | 王友钊;黄静 | 申请(专利权)人: | 浙江大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 邱启旺 |
地址: | 310058 浙江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 树形 结构 数据 数据库 存取 方法 | ||
本发明公开了一种树形结构数据的数据库存取方法,该方法包括:使用面向对象方法抽象数据逻辑,建立树形结构数据模型;使用多线程技术,在主线程之外建立数据存取线程;根据树形结构的节点信息,建立对应的关系型数据库数据表;在数据库中建立数据节点增加、删除、修改和查询等存储过程。本发明方法克服了占用客户端的CPU时间和使用深度递归造成的栈溢出的问题,提高了数据的增加、删除、修改和查询的效率。
技术领域
本发明涉及计算机应用领域,尤其涉及一种树形结构数据的数据库存取方法。
背景技术
关系型数据库储存非线性关系的数据一般采用的外键,多表连接等方式,不仅不能发挥关系型数据库的查询优势,而且浪费大量存储空间,造成数据冗余。常用的算法有路径表示法(Path Enumerations)、邻接表表示法(Adjacency List)、闭包表表示法(ClosureTable)等。
路径表示法需要记录当前节点的所有父亲节点在一个数据实体上面,为了记录所有节点的父节点,数据库的每一个表格都要为此开辟等于树深度N的字段量。
邻接表模型是在原有数据信息的基础上增加一个记录当前节点的父亲节点ID的字段。增加节点时只用添加一条记录即可;删除节点时,若节点是叶子节点只用直接删除,若是非叶子节点则需要递归删除所有的直接和间接孩子节点;在查询节点时,同样要用递归操作才能实现查找从根节点到查询节点的信息
闭包表表示法维护了两张表,一张表是原始的信息,另一张表保存了所有的节点的孩子节点信息;该方法解决了数据完整性的问题,部分解决了增加和删除是否困难和容易出错的问题,但是这种方法以增加一个表格和浪费将近一倍的数据行的方式来实现了相对较优的方案,而且在查询方面由于涉及两个表的操作,复杂性过高。
嵌套结合表示法对每一个节点,增加两个字段,一个左索引号(Left_Index)和一个右索引号(Right_Index),索引号组成的区间[Left_Index, Right_Index]表示一个节点的起始和结束的范围,这两个数的差值表示当前节点的所有子节点的个数。利用索引提供的信息对数据节点进行操作节省了存储空间,提高了查询效率。
嵌套集合模型能快速的查询节点所处位置的路径信息和子节点信息,但是,在添加和删除时需要修改所有父节点的左右索引值,因此需要大量的CPU的时间。为了减少占用客户端的CPU时间和避免使用深度递归造成的使用困难,我们使用到数据库的高级特性。
一方面,建立节点层次数量视图,利用数据库的触发器,调用存储在数据库的添加和删除的存储过程,该存储过程会触发我们的添加和删除触发器,然后由数据库服务器处理触发程序,这样就用异步的思想把客户端等待的时间解放出来。
另一方面,把测点的ID用路径表示法的思路来表示,这样在修改单个节点的时候不用一个个的计算直接父节点的数值范围。图1测点ID的组成图,下层节点的ID是上层所有ID的叠加,中间用下划线隔开这样就能让节点的ID唯一化。
发明内容
本发明的目的在于针对现有技术的不足,提供一种树形结构数据的数据库存取方法,能够高效方便的同时对数据库中的非线性数据进行增加、删除、修改和查询等操作。
本发明的目的是通过以下技术方案来实现的:一种树形结构数据的数据库存取方法,包括以下步骤:
(1)在内存中建立数据的树状关系模型;所述树状关系模型仅有一个根节点,每个节点具有任意多个孩子节点,每个孩子节点仅有一个双亲节点;每个节点具有唯一的ID,且具有相同的属性字段;
(2)在当前工作的主线程之外建立数据库处理工作线程;
(3)主线程将对节点的数据库操作命令发送给工作线程;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510191491.7/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置