一种高效维护节点全路径的方法、装置及应用制造方法及图纸

技术编号:34537538 阅读:50 留言:0更新日期:2022-08-13 21:32
本申请提出了高效维护节点全路径的方法、装置及应用,包括以下步骤获取变更节点;执行第一SQL语句将所述变更节点及所述变更节点的所有子节点的节点全路径设定为空,并返回受影响的节点数量;若受影响的节点数量不为0,执行第二SQL语句初始化所述节点全路径的数据;若所述节点全路径内含有识别通识符,执行第三SQL语句补全含有识别通识符号的所述节点全路径的数据,通过三条SQL的组合实现高效且扩展场景多的节点全路径的维护方法。场景多的节点全路径的维护方法。场景多的节点全路径的维护方法。

【技术实现步骤摘要】
一种高效维护节点全路径的方法、装置及应用


[0001]本申请涉及数据处理领域,特别是涉及高效维护节点全路径的方法、装置及应用。

技术介绍

[0002]在关系型数据库用于存储树形结构数据的表中往往会增加一个字段用于存储节点全全路径,一般用path代表该字段,path字段的内容为:本节点及其以上所有节点的ID按照父节点ID+分隔符+子节点ID的方式排列后拼接而成一个字符串。path会为程序进行快速检索时带来极大的效率提升和很多便利。但当树形数据发生变更后,维护path的内容将是一份额外的工作,不恰当或者低效的维护方法将会造成path内容和实际情况不能实时的保持一致或者错误。
[0003]通常的做法中都是在数据库存储过程对path字段的内容进行更新,这种方法会带来难以调试、可移植性差、以及随着数据量的增加或者数据结构的变化,原来存储过程选择的执行计划不是最优的,需手动干预或者重新编译的缺点。
[0004]另外一种做法是通过程序读取出数据库的数据,处理后再更新入数据库,这种方法比较适用单条节点记录的更新,面对批量更新代码逻辑复杂会大幅上升;并且要获取某个节点的所有父节点需要程序多次连接数据库进行递归的查询,效率低下。

技术实现思路

[0005]本申请实施例提供了一种高效维护节点全路径的方法、装置及应用,利用SQL语句以及内置函数对节点的全路径进行高效地新增或更新。
[0006]第一方面,本申请实施例提供了一种高效维护节点全路径的方法,对存储表内的节点全路径进行维护,包括以下步骤:获取变更节点;执行第一SQL语句将所述变更节点及所述变更节点的所有子节点的节点全路径设定为空,并返回受影响的节点数量;若受影响的节点数量不为0,执行第二SQL语句初始化所述节点全路径的数据;若所述节点全路径内含有识别通识符,执行第三SQL语句补全含有识别通识符号的所述节点全路径的数据。
[0007]第二方面,本申请实施例提供了一种高效维护节点全路径的装置,包括:节点获取单元,用于获取变更节点;第一SQL语句执行单元,用于执行第一SQL语句将所述变更节点及所述变更节点的所有子节点的节点全路径设定为空,并返回受影响的节点数量;第二SQL语句执行单元,用于若受影响的节点数量不为0,执行第二SQL语句初始化所述节点全路径的数据;第三SQL语句执行单元,用于若所述节点全路径内含有识别通识符,执行第三SQL语句补全含有识别通识符号的所述节点全路径的数据
[0008]第三方面,本申请实施例提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行任一所述的高效维护节点全路径的方法。
[0009]第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序包括用于控制过程以执行过程的程序代码,所述过程包括根
据任一所述的高效维护节点全路径的方法。
[0010]本专利技术的主要贡献和创新点如下:
[0011]本申请实施例通过在MySQL数据库内依次序执行多条SQL语句,并依据每条SQL语句的返回结果来判断是否进行下一步的执行动作,实现了多种情况的节点全全路径的变动的适配,具有功能扩展性强的优点;多条SQL语句分别提供数据清理、标识修改范围,初始化以及递归更新的功能,多条SQL语句组合使用使得本方案具有很强的扩展性,且范围可控以避免在修改的过程中大范围锁行。另外,本方案的SQL语句可使用“LEFT JOIN”关键字的连续拼接达到一个有限次数的递归效果,且由于数据库索引的引入可实现递归过程非常高效,利用数据库索引,大大提高了维护效率,万级别数据处理时间小于300毫秒;利用MySQL函数“CONCAT_WS”完成对字符串的拼接,并且该函数对“LEFT JOIN”后可能产生的null值在处理上也非常的友好:不会抛出异常,无需额外处理。
[0012]本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
[0013]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0014]图1是根据本申请实施例的高效维护节点全全路径方法的流程图;
[0015]图2是根据本申请一种实施例的高效维护节点全全路径方法的逻辑流程图;
[0016]图3是根据本申请一种实施例的树型结构的示意图;
[0017]图4是根据本申请一种实施例的存储树形结构数据的存储表的示意图;
[0018]图5是根据本申请实施例的高效维护节点全全路径装置的结构框图;
[0019]图6是根据本申请实施例的电子装置的硬件结构示意图。
具体实施方式
[0020]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
[0021]需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
[0022]实施例一
[0023]在介绍本方案的
技术实现思路
之前,首先介绍下本方案可能用到的专业术语:
[0024]树型结构:数据元素之间存在着“一对多”的树形关系的数据结构。在树形结构中,树根结点没有前驱结点,其余每个结点有且只有一个前驱结点。叶子结点没有后续结点,其
余每个结点的后续节点数可以是一个也可以是多个。如本方案给的图3所示,节点(1)是树根节点,可以理解为树根节点为没有父节点的节点,节点(2)的父节点是(1),节点(2)ID的全路径字段为:父节点及父节点以上所有父节点(直到树根节点)的节点ID(1)+分隔符(以下用“/”代表分隔符)+子节点ID(2)的方式排列后拼接而成一个字符串,即得到的全路径为1/2;节点(3)ID的父节点是(2),对应节点(3)ID的全路径字段为1/2/3。
[0025]存储表:数据库内用于存储数据的表。在本方案中主要针对的是树形结构,存储树型结构的存储表tree_table如图4所示,该存储表记录node_id节点ID、node_name节点名称、parent_id父节点ID、name_path节点名称的全路径以及path节点全路径。对应的,node_id节点ID依次序填写不同节点的次序,node_name节点名称填写对应节点ID的名称,parent_id父节点ID填写该本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种高效维护节点全路径的方法,对存储表内的节点全路径进行维护,其特征在于,包括以下步骤:获取变更节点;执行第一SQL语句将所述变更节点及所述变更节点的所有子节点的节点全路径设定为空,并返回受影响的节点数量;若受影响的节点数量不为0,执行第二SQL语句初始化所述节点全路径的数据;若所述节点全路径内含有识别通识符,执行第三SQL语句补全含有识别通识符号的所述节点全路径的数据。2.根据权利要求1所述的高效维护节点全路径的方法,其特征在于,在“执行第一SQL语句将所述变更节点及所述变更节点的所有子节点的节点全路径设定为空”步骤中,将所述变更节点的节点全路径输入到第一SQL语句的查找位置,查找所述变更节点的所有子节点,并将所述变更节点及所有所述子节点的节点全路径全部设定为空。3.根据权利要求1所述的高效维护节点全路径的方法,其特征在于,“执行第二SQL语句初始化所述节点全路径的数据”包括步骤:查找节点全路径为空的节点作为待处理节点,依据所述待处理节点的数据层级以及所述待处理节点的节点记录关联所述待处理节点的父节点的节点记录,汇总所有节点记录得到第一临时节点记录,其中所述第一临时节点记录内的节点记录数量同于数据层级的层级数,依据第一临时节点记录所在的数据层级依次拼接所有所述父节点的父节点ID和待处理节点的节点ID,得到所述待处理节点的节点全路径。4.根据权利要求3所述的高效维护节点全路径的方法,其特征在于,以所述待处理节点的节点记录为起始记录,以起始记录的父节点ID依次往前关联至少一父节点所在的节点记录,其中关联次数同于所述待处理节点的数据层级,将所有父节点的节点记录和待处理节点的节点记录整合得到第一临时节点记录。5.根据权利要求3所述的高效维护节点全路径的方法,其特征在于,从第一临时节点记录内的第一数据层级的节点的父节点ID为起点,依据数据层级自高至低依次拼接所有父节点ID和待处理节点ID,得到待处理节点的节点全路径。6.根据权利要求1所述的高效维护节点全路径的方法,其特征在于,第二S...

【专利技术属性】
技术研发人员:李圣权欧阳刚乐耀东陈刚毛云青
申请(专利权)人:城云科技中国有限公司
类型:发明
国别省市:

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

1