CN114048197A - 树形结构数据处理方法、电子设备及计算机可读存储装置 - Google Patents
树形结构数据处理方法、电子设备及计算机可读存储装置 Download PDFInfo
- Publication number
- CN114048197A CN114048197A CN202210037795.8A CN202210037795A CN114048197A CN 114048197 A CN114048197 A CN 114048197A CN 202210037795 A CN202210037795 A CN 202210037795A CN 114048197 A CN114048197 A CN 114048197A
- Authority
- CN
- China
- Prior art keywords
- data
- materialized
- updating
- list
- path
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
- G06F16/24566—Recursive queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种树形结构数据处理方法。该方法包括:获取数据的操作指令;响应于操作指令为数据更新指令,对树形结构数据进行更新操作;在更新操作过程中,对相应的邻接列表进行实时更新;以及在更新操作完成之后,对相应的物化路径列表进行延迟更新。本申请还公开了一种电子设备以及一种计算机可读存储装置。通过上述方式,本申请节点增删的时候,无需更改大量的数据,可在较快的时间、较少的成本下实现信息变更,同时双列表的存储实现高效的信息查询。
Description
技术领域
本申请涉及数据处理领域,特别是涉及一种树形结构数据处理方法、一种电子设备以及一种计算机可读存储装置。
背景技术
随着数据时代的不断发展,数据的存储、更新、使用等方式也日新月异。在关系型的数据使用中,经常会碰到树形结构的数据。树形结构数据是一种重要的非线性的结构数据。其可以表示数据元素之间一对多的关系,其特征就是以分支关系定义的层级结构来描述数据。其在客观世界中是广泛存在的,例如人类社会的族谱和各种社会组织结构等。树形结构数据应用的领域越来越广泛,甚至在很多的应用场景下,我们不可避免的需要采集、使用和分析树形结构数据。但是随着树形结构数据的规模不断的扩大,使其信息的查询以及变更需要耗费的计算资源不断增加,对硬件的性能要求越来越高。
发明内容
本申请主要目的是提供一种树形结构数据处理方法、一种电子设备以及一种计算机可读存储装置,能够解决树形结构数据不断增大时,其信息查询变更等操作耗费计算资源过多,硬件性能要求过高的问题。
为解决上述技术问题,本申请采用的第一个技术方案是:提供一种树形结构数据处理方法。该方法包括:获取数据的操作指令;响应于操作指令为数据更新指令,对树形结构数据进行更新操作;在更新操作过程中,对相应的邻接列表进行实时更新;以及在更新操作完成之后,对相应的物化路径列表进行延迟更新。
为解决上述技术问题,本申请采用的第二个技术方案是:提供一种电子设备。该电子设备包括存储器和处理器,存储器用于存储程序数据,程序数据能够被处理器执行,以实现如第一个技术方案中所述的树形结构数据处理方法。
为解决上述技术问题,本申请采用的第三个技术方案是:提供一种计算机解读存储装置。该装置存储有程序数据,能够被处理器执行,以实现如第一个技术方案中所述的树形结构数据处理方法。
本申请的有益效果是:区别于现有技术的情况,本申请将邻接列表和物化路径列表相结合,在树形结构数据中的节点变更时,只变更邻接列表中的数据,物化路径列表中的数据在业务不繁忙的时间段再进行数据同步,将物化路径列表的更新时间同用户的使用时间错峰,让邻接列表去保证用户的操作节点的实时反馈,物化路径列表去用于信息的查询,从而实现优势互补,在节点增删的时候,无需更改大量的数据,可在较快的时间、较少的成本下实现信息变更,同时双列表的存储实现高效的信息查询。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是一树形结构数据示意图;
图2是本申请树形结构数据处理方法第一实施例的流程示意图;
图3是树形结构数据邻接列表和物化路径列表的示意图;
图4是本申请树形结构数据处理方法第二实施例的流程示意图;
图5是调用func_tree_change_node函数一实施例的流程示意图;
图6是调用func_tree_del_node函数一实施例的流程示意图;
图7是一版本数据表示意图;
图8是本申请树形结构数据处理方法第三实施例的流程示意图;
图9是本申请树形结构数据处理方法第四实施例的流程示意图;
图10是本申请树形结构数据处理方法第五实施例的流程示意图;
图11是采用异步dblink实现的双列表数据同步的流程示意图;
图12是本申请电子设备第一实施例的流程示意图;
图13是本申请计算机可读存储装置第一实施例的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
树形结构数据一般分为有序数和无序树,有序树更多的使用在一些算法领域,而在业务中一般大多使用无序树,本申请的处理对象也是无序树结构的数据。目前的树形结构数据有以下几种常见的存储方式。
邻接列表模式,Adjacency List。这是一种比较常见的模式。通常是每个节点都只记录与自身的父节点。如图1所示,节点G会记录自己的父节点为C节点。此模式的优点是结构简单易懂。因为节点只记录自己父节点的信息,进行增删改的操作成本较低。甚至可以方便的将节点进行位置挪动,例如将图中的C节点变更为B节点的子节点只需要将C节点记录的父节点信息更改为B节点即可。但也因为节点的信息记录的少,查询时有时需要进行递归的查询操作,需要较高的计算性能。一般老的业务系统大多采用了这种模型。
物化路径模式,Path Enumeration。这是一种每个节点记录自己到根节点的路径的一种模式。其会将之前的所有节点按照父子关系的顺序记录下来。如图1所示,节点G会记录的路径信息就是A-C-G。此模式相较于邻接列表模式在一些查询上有一定的性能优势,但是增加的存储空间的开销和增删改的成本。
闭包表,Closure Table。这是用另一张表去记录存储节点之间的关系的一种模式。其记录的信息是每一个节点到所有子孙节点的关系和路径长度。类似(祖先节点、后代节点、祖先节点到后代节点的距离)这样的组合信息。例如,图1中的树结构会记录(A,A,0),(A,B,1),(A,E,2),(B,E,1)这样的信息。优势是可以快速的检索到两个节点间的关系。但是因为记录了较多的冗余信息带来了比物化路径更多的存储开销,且节点变更的成本较高。
左右值编码,Nested Set。这是一种采集记录节点的区间范围的模式。子节点在父节点的区间范围内做划分。这样就可以根据区间的包含关系直接获取到两个树节点之间的关系。例如图1中,左右值编码下存储信息如下:A[1,16],B[2,7],C[8,15],D[3,4],E[5,6],F[9,10],G[11,12],H[13,14]。可以看到此模型按照区间值按大小顺序遍历正好是树形结构的先序遍历,且数值都是整数,相差都为1,所以根据这些特征可以通过简单查询获取所有子节点、节点层级等信息,还可以通过计算获取子孙节点总数这些信息。此模型优势在于查询节点间关系,查询某一节点的子节点信息等场景。在某一节点的子节点之间的关系处理上没有明显优势。且因为强依赖于数据模型,增删改节点时需要大量更新区间信息以达成新的可以高效查询的左右值模型。变更成本是最高的。
区间嵌套模型,Nested Intervals。这是一种在左右值编码的基础上无线分割的模式。其不要求区间边界是整数而是采用分数的方式,从而做到可以低成本的增加节点。将区间左右值放到一个平面坐标系中,记录x,y坐标,通过大量的计算得出节点的位置信息。优点是提升了增加节点的性能。缺点是带来了大量的计算,计算能力成为瓶颈。
还有的技术会使用触发器来实现数据的提取和存储,但是业务场景很多情况下会避免使用触发器。因为操作繁忙是触发器会堵塞,并且其无法支持纠错和数据更改。
上述的几种方法各有优劣,但是并不能在较少的资源消耗下同时满足快速的数据更改和数据查询。因此本申请提出了一种新的处理方法。因为邻接列表模式和区间嵌套模型以外的存储方式都会带来大量的变更数据的风险,在数据使用存在一定频率变更的情况下,其他的数据会陷入性能的高风险期。而区间嵌套的方案会带来大量的计算,浪费系统的计算资源。物化路径模式与左右值编码相比的话,具有更低的数据更新成本。因此本申请将邻接列表模式与物化路径模式相结合,提出了一种新的树形结构数据的处理方法。其具体的可由以下几个实施例实现。
如图2所示,图2为本申请树形结构数据处理方法第一实施例的流程示意图。该方法包括以下步骤:
S11:获取数据的操作指令。
获取操作指令,该操作指令可包括数据变更或数据删除。数据变更一般是增加或修改节点信息,通常使用数据库自定义函数func_tree_change_node。数据删除一般是删除节点信息,通常使用数据库自定义函数func_tree_del_node。
S12:响应于操作指令为数据更新指令,对树形结构数据进行更新操作。
在调用函数进行数据更新的时候,对相应的邻接列表和物化路径列表实行不同的更新操作。
S13:在更新操作过程中,对相应的邻接列表进行实时更新。
在更新过程中,邻接列表同步的,与树形结构数据进行更新,对父子节点信息进行变动。此时物化路径列表保持不变。
S14:在更新操作完成之后,对相应的物化路径列表进行延迟更新。
在树形结构数据更新完成之后,在计算资源较为充足的时间段,物化路径列表进行更新操作,从而避免影响用户使用的实时性。
如图3所示,图3为与树形结构数据的节点相对应的邻接列表和物化路径列表。其中id为结构数据中节点的唯一id值,parent_id为其对应的父节点的id值,path是从根节点到当前节点的完整路径,level是当前节点的层级。在数据更新操作时,对parent_id采用实时更新,对path和level采用延迟更新。
如图4所示,图4为本申请树形结构数据处理方法第二实施例的流程示意图。该方法包括以下步骤:
S21:获取数据的操作指令。
获取操作指令,该操作指令可包括数据变更或数据删除。数据变更一般是增加或修改节点信息,通常使用数据库自定义函数func_tree_change_node。数据删除一般是删除节点信息,通常使用数据库自定义函数func_tree_del_node。使用func_tree_change_node函数的相关流程可如图5所示。使用func_tree_del_node函数的相关流程可如图6所示,该流程中在进行数据更新时还使用了并行树节点查询处理函数来进行数据处理,以更快速的完成更新操作。
S22:设置一版本数据表。
在进行操作之前,设置一个版本数据表tbl_version_tree。该版本数据表中包括记录了邻接列表和物化路径列表的版本数据情况。其结构可如图7所示。该版本数据表是为了保障操作的原子性,将该表中的版本数据作为加锁的目标,而不是直接锁住数据表,以方便的将需要加锁的操作和无须加锁的操作隔离开来。原子性即为,一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。在数据进行更新之前,对该数据表进行加锁,以阻止其他操作,避免对该更新操作造成影响。
S23:响应于操作指令为数据更新指令,对树形结构数据进行更新操作。
在调用函数进行数据更新的时候,对相应的邻接列表和物化路径列表实行不同的更新操作。
S24:对版本数据表申请加锁。
对版本数据表申请加锁级别ACCESS EXCLUSIVE LOCK,其会阻止其他的数据操作,直至该锁被释放。当数据变更结束之后,该锁就会释放。申请之后可等待30秒钟以判断是否成功申请。若加锁成功,执行步骤S25。若加锁不成功,执行步骤S29。
S25:在更新操作过程中,对相应的邻接列表进行实时更新。
在更新过程中,邻接列表同步的,与树形结构数据进行更新,对父子节点信息进行变动。按照操作指令修改parent_id以及其他的相关数据信息,但此时物化路径列表保持不变,不修改path和level的信息。该更新可以是数据变更或者数据删除。
S26:对版本数据表中的邻接列表的版本数据进行修改。
邻接列表更新后,对邻接列表的版本数据进行修改。如每进行一次更新,邻接列表的版本数据就加一。
S27:基于邻接列表对物化路径列表进行延迟更新。
在树形结构数据更新完成之后,在计算资源较为充足的时间段,物化路径列表进行更新操作。
S28:对版本数据表中的物化路径列表的版本数据进行修改。
同样的,在物化路径列表完成更新之后,也对其版本数据进行修改,修改为与邻接列表的版本数据一致。
S29:流程结束,提交数据信息。
操作完成之后,像系统提交最新的更改完成之后的数据信息,或提示加锁未成功,数据未更新,提交相关的数据信息。
如图8所示,图8为本申请树形结构数据处理方法第三实施例的流程示意图。该方法是对步骤S14或S25的进一步扩展。该物化路径列表的更新时机可以是定时的或随机的计算资源较为充足的时间。该方法包括以下步骤:
S31:判断版本数据表中邻接列表中的版本数据与物化路径列表的版本数据是否一致。
在对物化路径列表进行更新,即邻接列表和物化路径列表,两列表的数据同步时,先行判断其版本数据是否相同。若是,则无需进行数据更新或数据同步,则执行步骤S34。若不是,则执行步骤S32。
S32:对版本数据表申请加锁。
对版本数据表申请加锁级别ACCESS EXCLUSIVE LOCK,其会阻止其他的数据操作,直至该锁被释放。当数据变更结束之后,该锁就会释放。申请之后可等待30秒钟以判断是否成功申请。若加锁成功,执行步骤S33。
S33:进行物化路径列表的数据更新。
加锁成功后,可基于邻接列表对物化路径列表数据进行更新。
S34:流程结束,提交数据信息。
所有操作完成之后,像系统提交最新的更改完成之后的数据信息,或提示加锁未成功,数据未更新,提交相关的数据信息。
如图9所示,图9为本申请树形结构数据处理方法第四实施例的流程示意图。该方法是在第二实施例上的进一步扩展。在进行了一定的更新操作的基础上,该方法包括以下步骤:
S41:对版本数据表申请加锁。
对版本数据表申请加锁级别ACCESS EXCLUSIVE LOCK。申请之后可等待30秒钟以判断是否成功申请。若成功,则执行步骤S42。
S42:判断版本数据表中邻接列表的版本数据与物化路径列表的版本数据是否一致。
若是,则执行步骤S43。若不是,则执行步骤S44。
S43:基于物化路径列表对相关数据进行数据更新。
S44:基于邻接列表对相关数据进行数据更新。
该实施例的对象为两列表之外的与树形结构数据相关的其他数据。这些数据在用户对于树形结构数据进行操作之后尚未及时变更,因此需要基于列表数据对其进行更新处理。若两列表的版本数据一致,则说明两列表的数据都为最新数据,按照物化路径列表更便于信息查询,利于数据更新。若两列表的版本数据不一致,则说明邻接列表的数据为最新的数据,则按照邻接列表的数据进行数据更新。
如图10所示,图10为本申请树形结构数据处理方法第五实施例的流程示意图。该方法是在第二实施例上的进一步扩展。该方法包括以下步骤:
当操作指令包括了数据查询指令时,执行步骤S51。
S51:判断版本数据表中邻接列表的版本数据与物化路径列表的版本数据是否一致。
若是,则执行步骤S52。若不是,则执行步骤S53。数据查询指令未对数据进行更新处理,因此无需进行版本数据表的加锁。
S52:基于物化路径列表进行数据查询。
版本数据一致说明邻接列表和物化路径列表的数据都是最新的数据,按照物化路径列表可更快速的获取节点的相关信息。
S53:基于邻接列表进行数据查询。
版本数据不一致说明邻接列表的数据为最新的数据,需按照邻接列表进行数据的查询操作。
在上述任意实施例中,所有的有关数据更新、数据查询的操作都可以通过并行树节点查询处理函数执行相关操作。数据查询时,以邻接列表或物化路径列表为依据,按层级并行分发,根据业务逻辑查询相关的数据信息。数据更新时,以邻接列表为依据,按层级并行分发遍历整个树结构以对物化路径列表进行更新,或以邻接列表或物化路径列表为依据,按层级并行分发,根据业务逻辑更新相关的数据信息。
而该数据库内部的并行连接可采用dblink的方式实现。在连接中建立一个连接池,由主连接去拆分任务,分为多个子任务。每个子任务让子连接去执行。主连接会充分利用树形结构信心对任务进行合理拆分,通过并行的方式提高递归的性能。在数据变更前,对版本数据表进行加ACCESS EXCLUSIVE锁,确保不会被其他操作影响该操作。连接池的大小根据实际情况进行资源配置。dblink连接池的只能获取到连接是否空闲,因此并发的时候其无法保证操作的原子性,所以连接池需要集中分配。所有的连接按一定的规则收束到主连接。
如图11所示,是以实现双列表数据同步为例的流程。其他的业务场景也可以相同的方式进行业务处理。
开启数据同步事务,将邻接列表同步至物化路径列表。为版本数据表申请ACCESSEXCLUSIVE锁以保证操作原子性。申请成功后,创建数量为connum的异步dblink连接池,该数量根据实际需要而确定。创建后以一定的规则给各个连接的application_name字段赋值,以达到区分连接的目的。接着确定需要更新的物化路径列表中的path和level。然后调用递归函数,传入连接池的相关信息,以及目标节点二维数组targetNodeList。该数组中的元素由节点id、path、level组成。传入之后,初始化二维数组nextTargetNodeList为空数组。根据目标节点二维数组查询与目标节点相差一层的所有子节点信息。取出其中的一个子节点作为新的目标节点,为该子节点匹配空闲连接。获取连接后,使用dblink_get_result获取之前一次的子节点查询信息,将二者合并至二维数组nextTargetNodeList中,然后再使用dblink_send_query将两次的查询结果进行合并。完成之后重新选取下一个节点。取完所有的子节点后,调用dblink_get_result将尚未接收的查询结果加入至二维数组nextTargetNodeList中。而后在当前层处理完毕后,将二维数组nextTargetNodeList作为targetNodeList传递给下一次递归使用。递归完成之后,物化路径列表已更新完毕,关闭连接池所有连接,更新物化路径的版本数据信息,修改为与邻接列表的版本数据一致。向系统提交相关信息,流程结束。
如图12所示,图12为本申请电子设备第一实施例的结构示意图。该电子设备包括:处理器110和存储器120。
处理器110控制电子设备的操作,处理器110还可以称为CPU(Central ProcessingUnit,中央处理单元)。处理器110可能是一种集成电路芯片,具有信号序列的处理能力。处理器110还可以是通用处理器、数字信号序列处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器120存储处理器110工作所需要的指令和数据。
处理器110用于执行指令以实现本申请课程管理方法第一实施例至第五实施例中任一个所描述的方法及可能的组合方法。
如图13所示,图13为本申请计算机可读存储装置第一实施例的结构示意图。该计算机可读存储装置包括存储器210,存储器210存储有程序数据,该程序数据被执行时实现本申请课程管理方法任一实施例及可能的组合所提供的方法。
存储器210可以包括只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、闪存(Flash Memory)、硬盘、光盘等。
综上所述,通过以上实施例的描述,本申请将邻接列表和物化路径列表相结合,在树形结构数据中的节点变更时,只变更邻接列表中的数据,物化路径列表中的数据在业务不繁忙的时间段再进行数据同步,将物化路径列表的更新时间同用户的使用时间错峰,让邻接列表去保证用户的操作节点的实时反馈,物化路径列表去用于信息的查询,从而实现优势互补,在节点增删的时候,无需更改大量的数据,可在较快的时间、较少的成本下实现信息变更,同时双列表的存储实现高效的信息查询。
在本申请所提供的几个实施方式中,应该理解到,所揭露的方法以及设备,可以通过其它的方式实现。例如,以上所描述的设备实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述其他实施方式中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种树形结构数据处理方法,其特征在于,所述方法包括:
获取数据的操作指令;
响应于所述操作指令为数据更新指令,对所述树形结构数据进行更新操作;
在更新操作过程中,对相应的邻接列表进行实时更新;以及
在更新操作完成之后,对相应的物化路径列表进行延迟更新。
2.根据权利要求1所述的方法,其特征在于,所述对所述树形结构数据进行更新操作之前进一步包括:
设置一版本数据表,所述版本数据表包括所述邻接列表和所述物化路径列表的版本数据;
其中,在进行数据更新之前,对所述版本数据表进行加锁,以阻止其他操作。
3.根据权利要求2所述的方法,其特征在于,
所述在更新操作过程中,对相应的邻接列表进行实时更新之后包括:
对所述版本数据表中的所述邻接列表的所述版本数据进行修改;
所述在更新操作完成之后,对相应的物化路径列表进行延迟更新包括:
基于所述邻接列表对所述物化路径列表进行更新。
4.根据权利要求3所述的方法,其特征在于,所述基于所述邻接列表数据对所述物化路径列表进行更新之前进一步包括:
判断所述版本数据表中所述邻接列表的所述版本数据与所述物化路径列表的所述版本数据是否一致;
若一致,则无需进行物化路径列表的数据更新;
若不一致,则对所述版本数据表进行加锁,以进行下一步的物化路径列表的数据更新。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
判断所述版本数据表中所述邻接列表的所述版本数据与所述物化路径列表的所述版本数据是否一致;
若一致,基于所述物化路径列表对相关数据进行数据更新;
若不一致,基于所述邻接列表对相关数据进行数据更新。
6.根据权利要求2所述的方法,其特征在于,
所述操作指令还包括数据查询指令;
判断所述版本数据表中所述邻接列表的所述版本数据与所述物化路径列表的所述版本数据是否一致;
若一致,基于所述物化路径列表进行数据查询;
若不一致,基于所述邻接列表进行数据查询。
7.根据权利要求1所述的方法,其特征在于,
使用并行树节点查询处理函数执行所述操作指令。
8.根据权利要求1所述的方法,其特征在于,
使用异步dblink的方式执行所述操作指令。
9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器用于存储程序数据,所述程序数据能够被所述处理器执行,以实现如权利要求1-8中任一项所述的方法。
10.一种计算机可读存储装置,其特征在于,存储有程序数据,能够被处理器执行,以实现如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210037795.8A CN114048197B (zh) | 2022-01-13 | 2022-01-13 | 树形结构数据处理方法、电子设备及计算机可读存储装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210037795.8A CN114048197B (zh) | 2022-01-13 | 2022-01-13 | 树形结构数据处理方法、电子设备及计算机可读存储装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114048197A true CN114048197A (zh) | 2022-02-15 |
CN114048197B CN114048197B (zh) | 2022-04-19 |
Family
ID=80196544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210037795.8A Active CN114048197B (zh) | 2022-01-13 | 2022-01-13 | 树形结构数据处理方法、电子设备及计算机可读存储装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114048197B (zh) |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030149813A1 (en) * | 2002-02-07 | 2003-08-07 | Alain Bouchet | Method of automatic updating of an access path to the system disk of a hardware perimeter of computer resources, system for executing this method and memory used in this system |
CN101018170A (zh) * | 2006-12-08 | 2007-08-15 | 北京科技大学 | 支持移动性紫蜂无线传感器网络系统及节点移动性的方法 |
CN101421729A (zh) * | 2006-03-03 | 2009-04-29 | 奥多比公司 | 有效表示和搜索数据库中的有向无环图结构的系统和方法 |
US20090327330A1 (en) * | 2008-06-27 | 2009-12-31 | Business Objects, S.A. | Apparatus and method for dynamically materializing a multi-dimensional data stream cube |
CN102355315A (zh) * | 2011-07-08 | 2012-02-15 | 西安电子科技大学 | 天基网广播方法 |
CN102662325A (zh) * | 2012-05-04 | 2012-09-12 | 重庆邮电大学 | 一种改进自适应学习树电源管理方法 |
US20140156826A1 (en) * | 2012-11-30 | 2014-06-05 | International Business Machines Corporation | Parallel Top-K Simple Shortest Paths Discovery |
US20140269260A1 (en) * | 2013-03-14 | 2014-09-18 | Qualcomm Incorporated | Distributed path update in hybrid networks |
CN105488172A (zh) * | 2015-11-30 | 2016-04-13 | 北京奇艺世纪科技有限公司 | 一种基于位置的数据查询方法及装置 |
WO2018225226A1 (ja) * | 2017-06-08 | 2018-12-13 | 三菱電機株式会社 | 情報収集装置、自動検針システム、および経路更新方法 |
CN110083603A (zh) * | 2019-04-17 | 2019-08-02 | 武汉初心科技有限公司 | 一种基于邻接表实现节点路径的查询方法及系统 |
CN111726750A (zh) * | 2020-06-11 | 2020-09-29 | 南京千云井建筑智能科技有限公司 | 一种超宽带双向测距三边定位系统及其方法 |
CN112463189A (zh) * | 2020-11-20 | 2021-03-09 | 中国人民解放军国防科技大学 | 基于通信操作稀疏化的分布式深度学习多步延迟更新方法 |
CN112883041A (zh) * | 2021-02-23 | 2021-06-01 | 北京百度网讯科技有限公司 | 一种数据更新方法、装置、电子设备及存储介质 |
CN113486037A (zh) * | 2021-07-27 | 2021-10-08 | 北京京东乾石科技有限公司 | 更新缓存数据的方法、管理器和缓存服务器 |
-
2022
- 2022-01-13 CN CN202210037795.8A patent/CN114048197B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030149813A1 (en) * | 2002-02-07 | 2003-08-07 | Alain Bouchet | Method of automatic updating of an access path to the system disk of a hardware perimeter of computer resources, system for executing this method and memory used in this system |
CN101421729A (zh) * | 2006-03-03 | 2009-04-29 | 奥多比公司 | 有效表示和搜索数据库中的有向无环图结构的系统和方法 |
CN101018170A (zh) * | 2006-12-08 | 2007-08-15 | 北京科技大学 | 支持移动性紫蜂无线传感器网络系统及节点移动性的方法 |
US20090327330A1 (en) * | 2008-06-27 | 2009-12-31 | Business Objects, S.A. | Apparatus and method for dynamically materializing a multi-dimensional data stream cube |
CN102355315A (zh) * | 2011-07-08 | 2012-02-15 | 西安电子科技大学 | 天基网广播方法 |
CN102662325A (zh) * | 2012-05-04 | 2012-09-12 | 重庆邮电大学 | 一种改进自适应学习树电源管理方法 |
US20140156826A1 (en) * | 2012-11-30 | 2014-06-05 | International Business Machines Corporation | Parallel Top-K Simple Shortest Paths Discovery |
US20140269260A1 (en) * | 2013-03-14 | 2014-09-18 | Qualcomm Incorporated | Distributed path update in hybrid networks |
CN105488172A (zh) * | 2015-11-30 | 2016-04-13 | 北京奇艺世纪科技有限公司 | 一种基于位置的数据查询方法及装置 |
WO2018225226A1 (ja) * | 2017-06-08 | 2018-12-13 | 三菱電機株式会社 | 情報収集装置、自動検針システム、および経路更新方法 |
CN110083603A (zh) * | 2019-04-17 | 2019-08-02 | 武汉初心科技有限公司 | 一种基于邻接表实现节点路径的查询方法及系统 |
CN111726750A (zh) * | 2020-06-11 | 2020-09-29 | 南京千云井建筑智能科技有限公司 | 一种超宽带双向测距三边定位系统及其方法 |
CN112463189A (zh) * | 2020-11-20 | 2021-03-09 | 中国人民解放军国防科技大学 | 基于通信操作稀疏化的分布式深度学习多步延迟更新方法 |
CN112883041A (zh) * | 2021-02-23 | 2021-06-01 | 北京百度网讯科技有限公司 | 一种数据更新方法、装置、电子设备及存储介质 |
CN113486037A (zh) * | 2021-07-27 | 2021-10-08 | 北京京东乾石科技有限公司 | 更新缓存数据的方法、管理器和缓存服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN114048197B (zh) | 2022-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11281793B2 (en) | User permission data query method and apparatus, electronic device and medium | |
CN110908997B (zh) | 数据血缘构建方法、装置、服务器及可读存储介质 | |
US11341139B2 (en) | Incremental and collocated redistribution for expansion of online shared nothing database | |
JP2591217B2 (ja) | オブジェクトクラス定義情報実装装置 | |
US10963839B2 (en) | Nested hierarchical rollups by level using a normalized table | |
JP6928677B2 (ja) | オンライン分析処理を行うためのデータ処理方法及び装置 | |
US11934983B2 (en) | Issue and trigger rebalancing in a ranked issue management system | |
US7020659B2 (en) | System and method for managing bi-directional relationships between objects | |
CN104111958A (zh) | 一种数据查询方法及装置 | |
CN110727702B (zh) | 数据查询方法、装置、终端和计算机可读存储介质 | |
CN112084270A (zh) | 一种数据血缘处理方法、装置、存储介质及设备 | |
CN110275889B (zh) | 一种适用于机器学习的特征处理方法及装置 | |
CN110727687A (zh) | 一种物料清单转换方法及其系统 | |
US20190220799A1 (en) | Issue rank management in an issue tracking system | |
CN104298598A (zh) | 分布式环境下rdfs本体的调试方法 | |
CN113704248B (zh) | 一种基于外置索引的区块链查询优化方法 | |
US10635672B2 (en) | Method and system for merging data | |
CN114048197B (zh) | 树形结构数据处理方法、电子设备及计算机可读存储装置 | |
Larsen et al. | B-trees with relaxed balance | |
CN110955712A (zh) | 基于多数据源的开发api处理方法及装置 | |
JP6758252B2 (ja) | ヒストグラム生成方法、ヒストグラム生成装置及びヒストグラム生成プログラム | |
CN107463618B (zh) | 一种索引创建方法和装置 | |
EP3091447B1 (en) | Method for modifying root nodes and modifying apparatus | |
CN110222105B (zh) | 数据汇总处理方法及装置 | |
US20080059468A1 (en) | Method, system, and program product for grouping statements against database objects |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |