CN111506779B - 面向数据处理的对象版本与关联信息管理方法及系统 - Google Patents
面向数据处理的对象版本与关联信息管理方法及系统 Download PDFInfo
- Publication number
- CN111506779B CN111506779B CN202010309981.3A CN202010309981A CN111506779B CN 111506779 B CN111506779 B CN 111506779B CN 202010309981 A CN202010309981 A CN 202010309981A CN 111506779 B CN111506779 B CN 111506779B
- Authority
- CN
- China
- Prior art keywords
- version
- information
- node
- directed acyclic
- acyclic graph
- 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.)
- Active
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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种面向数据处理的对象版本与关联信息管理方法及系统,该方法包括:在获取输入对象的版本属性的情况下,根据预设的对象版本信息记录方法,以加权有向无环图的结构生成输入对象的版本信息;在获取输入对象和输出对象的关联关系的情况下,根据预设的对象关联信息记录方法,以三部图的结构生成对象关联信息;在获取输出对象的版本属性的情况下,根据预设的输出对象版本信息生成方法、输入对象的版本信息及对象关联信息,以加权有向无环图的结构生成输出对象的版本信息。采用本申请实施例,能够实现清晰、高效而易用的对象版本与关联信息管理及检索能力,从而改善数据处理系统的性能。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种面向数据处理的对象版本与关联信息管理方法及系统。
背景技术
大数据、云计算与人工智能技术已被工业界广泛应用。在这些技术及其应用系统之中,数据处理是必不可少的环节。如图1所示,各种各样的数据处理逻辑可以被统一抽象为:一组输入对象经过一个处理流程的操作之后,生成一组输出对象的过程。以人工智能领域常见的深度学习模型训练场景为例,图2给出了这一数据处理过程涉及的对象与流程:深度学习模型训练流程的输入对象包括算法与数据集,输出对象包括模型与汇总文件。其中,作为输入的算法是用户开发的神经网络程序,数据集是带有语义标签的文件集合;作为输出的模型是神经网络参数集合,汇总文件是训练过程实时生成的模型元信息。
在面向数据处理的系统软件(以下简称“数据处理系统”)中,对象的版本与关联信息是系统开发者和用户不可回避的要素,它们对系统的功能语义、工作效率及易用性有着重要的影响。
(一)版本信息—版本是指具有同一本质属性的一组对象之间的演进或继承关系,通常使用版本标识(如版本号)来区分这组对象中的每个个体。对象版本的变化有可能是由对象的管理者直接触发的(例如,在数据集中新增或删除了数据条目,则会产生数据集的新版本),也有可能是由数据处理流程间接触发的(例如,在深度学习模型训练场景中,用户在训练出一个模型之后,对算法进行了修改,又训练出一个新的模型,这时后一个模型可视为前一个模型的新版本)。此外,版本的变化也并非完全线性的,它有可能出现树型分支或者多重继承等复杂形式。例如,某个数据集的提供商可以在日常持续维护数据集的同时,为多个客户开发该数据集的定制版本,从而形成多版本树型并发演进的情况;在对多个版本进行合并时,又会产生多重继承的情况。
(二)关联信息—关联是指在每一次数据处理流程中,各个输入对象和输出对象的版本对应关系。例如,在深度学习模型训练场景中,用户使用MyCNN算法的20200305版本对ImageNet数据集的ILSVRC2012版本进行训练,生成了MyCNN模型的20200305-V001版本以及MyCNN汇总文件的20200305-V001版本,上述两个输入对象和两个输出对象的版本标识的集合即构成了本次训练流程的对象关联信息。
基于数据对象的版本和关联信息,数据处理系统可以更加有效地存储、管理和呈现对象,以便优化系统内部实现。有了版本和关联信息,用户也可以更好地规划和组织自己的工作,从而提升自身业务效率。仍以深度学习模型训练场景为例:用户使用版本化方式管理算法之后,就可以尝试在多个方向上修改算法,从而形成多个并存的分支版本。每个版本的算法在执行训练流程之后,系统基于算法、模型与汇总文件的关联信息,能够为每次生成的模型与汇总文件分别构建版本信息。用户通过汇总文件发现其中某个版本的效果最佳时,就可以通过关联信息溯源到对应版本的算法,从而获知哪个方向的修改是最佳的。
故此,本发明提出一种面向数据处理的对象版本与关联信息管理方法与系统,旨在以一种通用的方法为各类数据处理系统提供数据对象的版本与关联信息管理能力,进而改善系统功能与性能,提升工作效率与易用性。
发明内容
本申请实施例公开了一种面向数据处理的对象版本与关联信息管理方法及系统,能够为各类数据处理系统提供数据对象的版本与关联信息管理能力,进而改善系统功能与性能,提升工作效率与易用性。
第一方面,本申请实施例提供了一种面向数据处理的对象版本与关联信息管理方法,该方法包括:
在获取输入对象的版本属性的情况下,根据预设的对象版本信息记录方法,以加权有向无环图的结构生成输入对象的版本信息;
在获取输入对象和输出对象的关联关系的情况下,根据预设的对象关联信息记录方法,以三部图的结构生成对象关联信息;
在获取输出对象的版本属性的情况下,根据预设的输出对象版本信息生成方法、所述输入对象的版本信息及所述对象关联信息,以加权有向无环图的结构生成输出对象的版本信息。
在上述方法中,能够为各类数据处理系统提供数据对象的版本与关联信息管理能力,进而改善系统功能与性能,提升工作效率与易用性。
结合第一方面,在一种可能的实施方式中,任一所述加权有向无环图表征具有同一本质属性的一组对象之间的版本之间关系,所述加权有向无环图中的每个节点表征对象的一个版本,并以该版本的版本标识作为节点的名称,所述加权有向无环图中的每条边表征版本之间的继承关系,所述加权有向无环图中的每个权重值表征两个版本之间的距离。
结合第一方面,在一种可能的实施方式中,所述三部图表征输入对象、处理流程和输出对象三者之间的关联关系。
结合第一方面,在一种可能的实施方式中,输出对象的加权有向无环图的每个节点中包括附属数据结构,所述附属数据结构中以元组的形式记录了生成该节点表征的输出对象版本所使用的所有输入对象的版本标识集合;所述在获取输出对象的版本属性的情况下,根据预设的输出对象版本信息生成方法、所述输入对象的版本信息及所述对象关联信息,以加权有向无环图的结构生成输出对象的版本信息,包括:
当任一输出对象的新版本生成时,在所述任一输出对象的加权有向无环图Go中新增一个代表新版本的节点vn;
从记录了所述任一输出对象的三部图Gr中,获取生成所述任一输出对象新版本所使用的所有输入对象的类型集合C及版本标识集合I;
在所述节点vn的附属数据结构中,以元组形式记录所述版本标识集合I,以得到元组tn;
获取记录了所述输入对象的类型集合C中每种输入对象的加权有向无环图{Gi0,Gi1,...,Gix};
基于所述加权有向无环图{Gi0,Gi1,...,Gix},生成所述输入对象的类型集合C中每种输入对象c所形成的节点与边的列表lc,以得到集合L;
根据所述集合L生成输入对象版本标识的元组集合T;
查询所述加权有向无环图Go中除节点vn之外的节点,若存在节点vm,且所述节点vm的附属数据结构中记录的的元组tm为所述元组集合T中的元素,则在所述加权有向无环图Go中新增一条边enm,以连接所述节点vn与所述节点vm;
将所述列表lc中的所述节点vm与所述节点vn之间所有边的权重之和作为所述边enm的权重。
结合第一方面,在一种可能的实施方式中,所述根据所述集合L生成输入对象版本标识的元组集合T,包括:
执行笛卡尔积操作,以生成输入对象版本标识的元组集合T。
结合第一方面,在一种可能的实施方式中,所述将所述列表lc中的所述节点vm与所述节点vn之间所有边的权重之和作为所述边enm的权重之后,还包括:
检查所述加权有向无环图Go中任两个节点之间是否存在多条边;
若存在多条边,则保留所述多条边中权重最低的一条,删除所述多条边中其余的边。
结合第一方面,在一种可能的实施方式中,所述输入对象的版本信息、所述对象关联信息及所述输出对象的版本信息均被保持至版本与关联数据库;所述在获取输出对象的版本属性的情况下,根据预设的输出对象版本信息生成方法、所述输入对象的版本信息及所述对象关联信息,以加权有向无环图的结构生成输出对象的版本信息之后,还包括:
在获取版本或关联查询请求的情况下,根据所述查询请求检索所述版本与关联数据库;
若检索到请求的版本或关联信息,则返回所述请求的版本或关联信息;
若未检索到所述请求的版本或关联信息,则返回空值。
第二方面,本申请实施例提供一种面向数据处理的对象版本与关联信息管理系统,包括:
输入对象版本管理组件,用于在获取输入对象的版本属性的情况下,根据预设的对象版本信息记录方法,以加权有向无环图的结构生成输入对象的版本信息;
对象关联管理组件,用于在获取输入对象和输出对象的关联关系的情况下,根据预设的对象关联信息记录方法,以三部图的结构生成对象关联信息;
输出对象版本管理组件,用于在获取输出对象的版本属性的情况下,根据预设的输出对象版本信息生成方法、所述输入对象的版本信息及所述对象关联信息,以加权有向无环图的结构生成输出对象的版本信息。
结合第二方面,在一种可能的实施方式中,还包括:
版本与关联数据库,用于保存所述输入对象的版本信息、所述对象关联信息及所述输出对象的版本信息;
版本与关联检索组件,用于在获取版本或关联查询请求的情况下,根据所述查询请求检索版本与关联数据库,其中,所述版本与关联数据库用于保存所述输入对象的版本信息、所述对象关联信息及所述输出对象的版本信息;若检索到请求的版本或关联信息,则返回所述请求的版本或关联信息;若未检索到所述请求的版本或关联信息,则返回空值。
第三方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当计算机程序在处理器上运行时,实现第一方面,或者第一方面的任一项可能的实现方式所描述的方法。
通过实施本申请实施例,能够为各类数据处理系统提供数据对象的版本与关联信息管理能力,进而改善系统功能与性能,提升工作效率与易用性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图作简单地介绍。
图1是本申请实施例提供的一个三部图;
图2是本申请实施例提供的又一个三部图;
图3A是本申请实施例提供的一种面向数据处理的对象版本与关联信息管理方法的流程示意图;
图3B是本申请实施例提供的又一种面向数据处理的对象版本与关联信息管理方法的流程示意图;
图3C是本申请实施例提供的又一种面向数据处理的对象版本与关联信息管理方法的流程示意图;
图4是本申请实施例提供的一个加权有向无环图;
图5是本申请实施例提供的又一个加权有向无环图;
图6是本申请实施例提供的又一个三部图;
图7是本申请实施例提供的又一个三部图;
图8是本申请实施例提供的又一个加权有向无环图;
图9是本申请实施例提供的一种面向数据处理的对象版本与关联信息管理系统的结构示意图。
具体实施方式
下面将结合附图对本申请实施例中的技术方案进行描述。
请参见图3A,图3A是本申请实施例提供的一种面向数据处理的对象版本与关联信息管理方法,该方法包括但不限于如下步骤:
步骤S301:在获取输入对象的版本属性的情况下,根据预设的对象版本信息记录方法,以加权有向无环图的结构生成输入对象的版本信息。
具体地说,在预设的对象版本信息记录方法中,每个对象实例均具有一个版本标识,具有同一本质属性的一组对象之间的版本标识不得重复。其中,版本标识可以是整数、哈希值、字符串或其他计算机系统可以存储和处理和格式。在一具体的实施例中,对象的版本标识为“对象类型-整数编号”。
在预设的对象版本信息记录方法中,使用加权有向无环图数据对象的版本之间关系,任一加权有向无环图表征具有同一本质属性的一组对象之间的版本之间关系。一个加权有向无环图通常会包括零个至多个节点、零条至多条边、及零个至多个权重值,而加权有向无环图中的每个节点表征对象的一个版本,并以该版本的版本标识作为节点的名称,加权有向无环图中的每条边表征版本之间的继承关系,边的方向由子版本指向父版本(参照UML类图的惯例),加权有向无环图中每个权重值表征两个版本之间的距离。在一具体的实施例中,对两个版本之间的距离定义如下:如果子版本是由对象的管理者直接触发生成的,那么子版本与父版本之间的距离定义为预设值(例如,预设值为1);如果子版本是由本本申请所述的输出对象版本信息生成方法间接触发生成的,那么子版本与父版本之间的距离由输出对象版本信息生成方法所定义的算法确定。
图4、图5给出了以加权有向无环图方式记录对象版本信息的两组示例。图4首先介绍版本线性演进和树型分支的情况,图5进一步引入多重继承的情况。
图4中,对象IA的IA-2、IA-3版本继承了IA-1版本,因此IA-2、IA-3节点分别发出一条有向边指向IA-1节点;IA-4、IA-5版本继承了IA-2版本,因此IA-4、IA-5节点分别发出一条有向边指向IA-2节点。IA-6版本不继承IA-1~IA-5版本,因此IA-6节点没有发出任何有向边;IA-7版本继承了IA-6版本,因此IA-7节点发出一条有向边指向IA-6节点。IA-8版本不继承IA-1~IA-7版本,因此IA-6节点在图中是一个孤立的节点。图中所有版本是由IA对象的管理者直接触发生成的,所以所有边的权重均为1。图5中与图4类似的地方不再赘述,这里重点关注多重继承的情况。对象IB的IB-5版本同时继承了IB-2、IB-3版本,因此IB-5节点发出两条有向边分别指向IB-2、IB-3节点;IB-9版本同时继承了IB-7、IB-8版本,因此IB-9节点发出两条有向边分别指向IB-7、IB-8节点。
加权有向无环图是一种抽象的数据结构,它在计算机系统中的表示和存储方式有多种。例如,可以把描述节点和边的集合保存在关系型数据库中,或者直接使用图数据库中预定义的数据结构。本发明不限制加权有向无环图在计算机系统中的具体表示和存储方式。这里以使用节点和边的集合来表示和存储为例。图4的节点集合可以表示为:{IA-1,IA-2,IA-3,IA-4,IA-5,IA-6,IA-7,IA-8},边集合可表示为:{{IA-2,IA-1,1},{IA-3,IA-1,1},{IA-4,IA-2,1},{IA-5,IA-2,1},{IA-7,IA-6,1}}。
在一具体的实施例中,请参见图3B,在执行步骤S301之前,还执行步骤S304:获取输入对象的版本S304:获取输入对象的版本属性。
在一具体的实施例中,在生成输入对象的版本信息之后,还可以将输入对象的版本信息保存到版本与关联数据库。
步骤S302:在获取输入对象和输出对象的关联关系的情况下,根据预设的对象关联信息记录方法,以三部图的结构生成对象关联信息。
具体地说,数据处理逻辑涉及三类实体:输入对象、处理流程和输出对象。在预设的对象关联信息记录方法中,使用三部图数据结构记录这些实体之间的关联信息,三部图表征输入对象、处理流程和输出对象三者之间的关联关系。对象关联信息记录方法中的三部图包含输入、处理和输出三个部分。输入部分由一组带有版本标识的输入对象节点组成,处理部分由一组带有版本标识的处理流程节点组成,输出部分由一组带有版本标识的输出对象节点组成。输入部分与处理部分之间,以及处理部分与输出部分之间存在边;输入部分与输出部分之间,以及各个部分内部不存在边。此外,每个输出对象是由唯一一个处理流程生成的,因此每个输出对象节点只会连接到一个处理流程节点,不会连接到多个处理流程节点。图6和图7给出了以三部图方式生成对象关联信息的两组示例。需要注意的是,三部图中所有的边本质上是无向且无权的,但为了更加清晰地体现三个部分的划分,故在图中给边加上箭头,以便表现出输入对象、处理流程和输出对象之间的顺序关系。
请参见图6,描述了处理流程PA的PA-1版本以对象IA的IA-1版本及对象IB的IB-1版本作为输入,其处理结果是输出了对象OA的OA-1版本及对象OB的OB-1版本。此时,PA-1、IA-1、IB-1、OA-1、OB-1构成一组对象关联。请参见图7,图7在图6的基础上,描述了处理流程PB的PB-1版本以对象IB的IB-1版本及对象IC的IC-1版本作为输入,其处理结果是输出了对象OC的OC-1版本。此时,PB-1、IB-1、IC-1、OC-1构成一组对象关联。可以看出,对于图7这种涉及到多个处理流程的三部图,是可以将每个处理流程所涉及的子图独立分析和理解的。例如,图6就是图7的子图,它独立描述了PA-1处理流程所涉及的对象关联信息。我们可以把图7映射到一个深度学习场景的实施例来理解。在该实施例中,PA代表深度学习模型训练流程,PB代表数据集校验流程;IA代表算法,IB代表数据集,IC代表校验规则集;OA代表模型,OB代表汇总文件,OC代表校验结果文件。算法(IA)和数据集(IB)经过训练流程(PA)的处理得到了模型(OA)和汇总文件(OB);数据集(IB)和校验规则集(IC)经过校验流程(PB)的处理得到了校验结果文件(OC)。由于所有对象及流程仅出现了一次,它们的版本标识中的整数编号统一设定为1。
三部图是一种抽象的数据结构,它在计算机系统中的表示和存储方式有多种。例如,可以把描述节点和边的集合保存在关系型数据库中,或者直接使用图数据库中预定义的数据结构。本发明不限制三部图在计算机系统中的具体表示和存储方式。这里以使用三个部分的节点集合以及两两部分之间边的集合来表示和存储为例。图6的节点集合可以表示为:{{IA-1,IB-1},{PA-1},{OA-1,OB-1}},边集合可表示为:{{{IA-1,PA-1},{IB-1,PA-1}},{{PA-1,OA-1},{PA-1,OB-1}}}。
在一具体的实施例中,请参见图3B,在执行步骤S302之前,还执行步骤S305:获取输入对象和输出对象的关联关系。
在一具体的实施例中,在生成对象关联信息之后,还可以将对象关联信息保存到版本与关联数据库。
步骤S303:在获取输出对象的版本属性的情况下,根据预设的输出对象版本信息生成方法、所述输入对象的版本信息及所述对象关联信息,以加权有向无环图的结构生成输出对象的版本信息。
具体地说,对象版本的变化如果是由对象的管理者直接触发的,那么基于哪个(些)父版本生成了哪个(些)子版本的事实将是显而易见的。只需要依据上述的对象版本信息记录方法,在记录版本信息的加权有向无环图中新增代表子版本的节点以及代表继承关系的有向边,即可表示这种版本变化。数据处理系统中的输入对象即符合这种简单的情况。
然而,对象版本的变化如果是由数据处理流程间接触发的,那么对象版本之间的关系就不是能够直观确定的。数据处理系统中的输出对象即属于这种情况。在特定数据处理流程中,当某个输入对象的版本发生了变化,同一处理流程再次执行之后生成的输出对象的版本也会随之变化。本申请通过预设的输出对象版本信息生成方法,能够生成代表输出对象版本信息的加权有向无环图,从而有效记录输出对象的版本信息。在一具体的实施例中,可以通过如下步骤生成输出对象的版本信息。
S3031:当任一输出对象的新版本生成时,在所述任一输出对象的加权有向无环图Go中新增一个代表新版本的节点vn。
具体地说,当某个输出对象的新版本生成时,在记录该输出对象的加权有向无环图Go中新增一个代表新版本的节点vn,其版本标识in不同于加权有向无环图Go中所有已有节点。
S3032:从记录了所述任一输出对象的三部图Gr中,获取生成所述任一输出对象新版本所使用的所有输入对象的类型集合C及版本标识集合I。
S3033:在所述节点vn的附属数据结构中,以元组形式记录所述版本标识集合I,以得到元组tn。
具体地说,输出对象的加权有向无环图的每个节点中包括附属数据结构,附属数据结构中以元组的形式记录了生成该节点表征的输出对象版本所使用的所有输入对象的版本标识集合。其中,附属数据结构既可以是一种附加在加权有向无环图Go版本节点上的数据结构,也可以直接引用三部图Gr中现有的输入对象版本标识集合I,还可以是其他任何等价的数据结构。
S3033:获取记录了输入对象的类型集合C中每种输入对象的加权有向无环图{Gi0,Gi1,...,Gix}。
S3034:基于加权有向无环图{Gi0,Gi1,...,Gix},生成输入对象的类型集合C中每种输入对象c所形成的节点与边的列表lc,以得到集合L。
具体地说,针对每种输入对象类型c(c∈C),基于它们各自的加权有向无环图{Gi0,Gi1,...,Gix},列出该种对象类型c对应的加权有向无环图Gic中,从生成本次输出所使用的输入对象版本节点沿有向边方向溯源到顶所形成的节点与有向边(含权重)的列表lc。对于不涉及多重继承的情况,列表lc是唯一的;对于涉及多重继承的情况,列表会有多条{lc0,lc1,...,lcx},应全部列出。
S3035:根据所述集合L生成输入对象版本标识的元组集合T。
在一具体的实施例中,可以取集合L中列表l(l∈L)中的版本标识,执行笛卡尔积操作(即从所有列表中各取一个元素,找到所有取法的排列组合),以生成输入对象版本标识的元组集合T。需要注意的是,对于S3034中所述的一种对象类型具有多个列表的情况,在执行笛卡尔积操作时,每个列表要分别和其他对象类型的列表执行操作,从而生成多个元组集合,且不能在同一对象类型的多个列表之间执行笛卡尔积操作。
S3036:查询所述加权有向无环图Go中除节点vn之外的节点,若存在节点vm,且所述节点vm的附属数据结构中记录的的元组tm为所述元组集合T中的元素,则在加权有向无环图Go中新增一条边enm,以连接节点vn与节点vm。
具体地说,节点vm为加权有向无环图Go中除节点vn之外任一节点。在一具体的实施例中,可以遍历加权有向无环图Go中除vn之外的所有节点,如果存在一个节点vm,其附属数据结构中存储的元组tm是元组集合T的元素,那么在加权有向无环图Go中,新增一条有向边enm,由节点vn指向节点vm,代表新版本的继承关系。
S3037:将所述列表lc中的所述节点vm与所述节点vn之间所有边的权重之和作为边enm的权重。
具体地说,针对元组tm中的每个输入对象的版本标识,在生成的该对象类型对应的列表lc中,找到从该版本(即节点vm)到新版本(即节点vn)之间的所有有向边,这些有向边的权重之和构成有向边enm的权重。
S3038:检查加权有向无环图Go中任两个节点之间是否存在多条边;若存在多条边,则保留多条边中权重最低的一条,删除多条边中其余的边。
具体地说,检查加权有向无环图Go中,S3037所生成的有向边的集合;如果节点vn和节点vm之间存在多条有向边,则只保留权重最低的一条,删除两个节点之间的其余有向边。
需要注意的是,上述步骤描述的是输出对象版本信息生成方法的一种实现方式。为了表达的清晰性,上述步骤中使用了“取得……所有……”、“笛卡尔积”、“遍历”等相对直观而简单的实现方式。在实际的计算机系统上,上述步骤可以有多种不同的等价实现,例如通过一些索引数据结构避免完整的笛卡尔积和遍历操作,从而优化执行效率。但本质上,只要是达到相同执行效果的操作序列,可认为是与上述步骤等价的实现,因而同样属于本方法的保护范围。
下面以图6所示的数据处理流程为例,说明本方法的实施例。图6涉及的输入对象IA、IB的版本信息分别已在图4、图5中展示。本实施例在图8中展示了输出对象OA的版本信息。图8中的每个节点上方标注了输出对象的版本标识,下方标注了生成该对象所使用的两个输入对象的版本标识(即S3033所述的“附属数据结构”)。需要说明的是,这里预先设定对象OA的各个版本是按照版本标识中的整数编号顺序,从小到大依次生成的。因此在分析图8中的版本OA-x时,应考虑所有整数编号小于等于x的节点及其发出的有向边,而要忽略所有整数编号大于x的节点及其发出的有向边。
(一)当基于IA-1、IB-1生成OA-1时,OA的版本信息加权有向无环图Go中新增节点OA-1。对象IA对应的列表是IA-1,对象IB对应的列表是IB-1。二者版本标识的笛卡尔积是{{IA-1,IB-1}}。Go中除OA-1外没有其他任何节点,因此无须执行后续新增有向边的步骤。
(二)当基于IA-2、IB-1生成OA-2时,Go中新增节点OA-2。由图4、图5可知,对象IA对应的列表是IA-2→IA-1(输入对象版本信息图上的有向边权重始终为1,所以列表中省略权重标注),对象IB对应的列表是IB-1。二者版本标识的笛卡尔积是{{IA-2,IB-1},{IA-1,IB-1}},其中第2项恰与Go中OA-1节点的附属数据结构相同,因此在Go中新增从OA-2指向OA-1的有向边。该边的权重由列表中的版本标识间有向边权重之和确定,即1+0=1。
(三)当基于IA-2、IB-3生成OA-3时,Go中新增节点OA-4。由图4、图5可知,对象IA对应的列表是IA-2→IA-1,对象IB对应的列表是IB-3→IB-1。二者版本标识的笛卡尔积是{{IA-2,IB-3},{IA-2,IB-1},{IA-1,IB-3},{IA-1,IB-1}},其中第2项恰与Go中OA-2节点的附属数据结构相同,因此在Go中新增从OA-3指向OA-2的有向边。该边的权重由列表中的版本标识间有向边权重之和确定,即0+1=1。第4项恰与Go中OA-1节点的附属数据结构相同,因此在Go中新增从OA-3指向OA-1的有向边。该边的权重由列表中的版本标识间有向边权重之和确定,即1+1=2。
(四)OA-4的节点及有向边生成流程与OA-3类似,这里不再赘述。
(五)当基于IA-3、IB-5生成OA-5时,Go中新增节点OA-5。由图4、图5可知,对象IA对应的列表是IA-3→IA-1,对象IB对应的列表有两个,分别是IB-5→IB-2→IB-1和IB-5→IB-3→IB-1。这时需要使用OB的两个列表分别与OA的列表执行笛卡尔积操作。第一组笛卡尔积是{{IA-3,IB-5},{IA-3,IB-2},{IA-3,IB-1},{IA-1,IB-5},{IA-1,IB-2},{IA-1,IB-1}},其中第6项恰与Go中OA-1节点的附属数据结构相同,因此在Go中新增从OA-5指向OA-1的有向边。该边的权重由列表中的版本标识间有向边权重之和确定,即1+2=3。第二组笛卡尔积是{{IA-3,IB-5},{IA-3,IB-3},{IA-3,IB-1},{IA-1,IB-5},{IA-1,IB-3},{IA-1,IB-1}},其中第6项恰也与Go中OA-1节点的附属数据结构相同,因此在Go中再次新增从OA-5指向OA-1的有向边。该边的权重由列表中的版本标识间有向边权重之和确定,即1+2=3。最后,由于从OA-5到OA-1只应保留一条权重最低的有向边,应从两条权重为3的边中任意删除一条。
(六)当基于IA-1、IB-7生成OA-6时,Go中新增节点OA-6。由图4、图5可知,对象IA对应的列表是IA-1,对象IB对应的列表是IB-7。二者版本标识的笛卡尔积是{{IA-1,IB-7}}。此时Go中除OA-6外尚不存在节点的附属数据结构与此笛卡尔积元素相同,故无须新增有向边。OA-6不继承任何已有的节点。
(七)当基于IA-3、IB-9生成OA-7时,Go中新增节点OA-7。由图4、图5可知,对象IA对应的列表是IA-3→IA-1,对象IB对应的列表有两个,分别是IB-9→IB-7和IB-9→IB-8→IB-7。这时需要使用OB的两个列表分别与OA的列表执行笛卡尔积操作。第一组笛卡尔积是{{IA-3,IB-9},{IA-3,IB-7},{IA-1,IB-9},{IA-1,IB-7}},其中第4项恰与Go中OA-6节点的附属数据结构相同,因此在Go中新增从OA-7指向OA-6的有向边。该边的权重由列表中的版本标识间有向边权重之和确定,即1+1=2。第二组笛卡尔积是{{IA-3,IB-9},{IA-3,IB-8},{IA-3,IB-7},{IA-1,IB-9},{IA-1,IB-8},{IA-1,IB-7}},其中第6项恰也与Go中OA-6节点的附属数据结构相同,故在Go中再次新增从OA-7指向OA-6的有向边。该边的权重由列表中的版本标识间有向边权重之和确定,即1+2=3。最后,由于从OA-7到OA-6只应保留一条权重最低的有向边,应删除权重为3的边。
(八)OA-8的节点生成流程与OA-6类似,这里不再赘述。
在一具体的实施例中,在生成输出对象的版本信息之后,还可以将输出对象的版本信息保存到版本与关联数据库。
在一具体的实施例中,请参见图3C,在执行步骤S303之后,还可以执行如下步骤。
步骤S307:获取版本或关联查询请求。
步骤S308:在获取版本或关联查询请求的情况下,根据查询请求检索版本与关联数据库。
具体地说,输入对象的版本信息、对象关联信息及输出对象的版本信息均保存到版本与关联数据库中。
步骤S309:若检索到请求的版本或关联信息,则返回请求的版本或关联信息。
步骤S310:若未检索到请求的版本或关联信息,则返回空值。
在图3A至图3C所描述的方法中,能够为各类数据处理系统提供数据对象的版本与关联信息管理能力,进而改善系统功能与性能,提升工作效率与易用性。
请参见图9,图9是本申请实施例提供的一种面向数据处理的对象版本与关联信息管理系统,该面向数据处理的对象版本与关联信息管理系统包括数据输入组件、数据处理组件、数据输出组件、输入对象版本管理组件、对象关联管理组件、输出对象版本管理组件、版本与关联数据库、及版本与关联检索组件。
所述输入对象版本管理组件,用于从所述数据输入组件获取输入对象的版本属性,根据预设的对象版本信息记录方法,以加权有向无环图的结构生成输入对象的版本信息,并将所述输入对象的版本信息保存到所述版本与关联数据库。
所述对象关联管理组件,用于从所述数据处理组件获取输入对象和输出对象的关联关系,根据预设的对象关联信息记录方法,以三部图的结构生成对象关联信息,并将所述对象关联信息保存到所述版本与关联数据库。
所述输出对象版本管理组件,用于从所述数据输出组件获取输出对象的版本属性,根据预设的输出对象版本信息生成方法、所述输入对象的版本信息及所述对象关联信息,以加权有向无环图的结构生成输出对象的版本信息,并将所述输出对象的版本信息保存到所述版本与关联数据库。
所述版本与关联数据库用于保存所述输入对象的版本信息、所述对象关联信息、及所述输出对象的版本信息。所述版本与关联数据库可以是关系型数据库、图数据库,或者其他任何具有存储和管理结构化数据能力的软硬件系统。所述输入对象版本管理组件、所述输入对象版本管理组件、所述输出对象版本管理组件均通过调用版本与关联数据库的接口,将各自生成的对象版本与关联信息提交到数据库中保存。
所述版本与关联检索组件,用于对外界提供检索上述对象版本与关联信息的能力。该组件可以提供一种或多种面向外部用户或组件的访问接口,包括但不限于web界面、命令行、RESTAPI、编程库等。外部用户或组件通过调用本组件的接口,可以获取版本与关联数据库中保存的对象版本与关联信息,进而可以在业务中使用这些信息,实现具体应用价值。
图9所示的面向数据处理的对象版本与关联信息管理系统中各个组件的具体实现及有益效果还可以对应参照图3A至图3C所示的方法实施例的相应描述,此处不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当计算机程序在面向数据处理的对象版本与关联信息管理系统上运行时,实现图3A至图3C所示的方法。
综上所述,采用本申请的面向数据处理的对象版本与关联信息管理方法能够为各类数据处理系统提供数据对象的版本与关联信息管理能力,进而改善系统功能与性能,提升工作效率与易用性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可存储程序代码的介质。
Claims (7)
1.一种面向数据处理的对象版本与关联信息管理方法,其特征在于,包括:
在获取输入对象的版本属性的情况下,根据预设的对象版本信息记录方法,以加权有向无环图的结构生成输入对象的版本信息,其中,任一所述加权有向无环图表征具有同一本质属性的一组对象之间的版本之间关系,所述加权有向无环图中的每个节点表征对象的一个版本,并以该版本的版本标识作为节点的名称,所述加权有向无环图中的每条边表征版本之间的继承关系,所述加权有向无环图中的每个权重值表征两个版本之间的距离;
在获取输入对象和输出对象的关联关系的情况下,根据预设的对象关联信息记录方法,以三部图的结构生成对象关联信息,其中,所述三部图表征输入对象、处理流程和输出对象三者之间的关联关系;
在获取输出对象的版本属性的情况下,根据预设的输出对象版本信息生成方法、所述输入对象的版本信息及所述对象关联信息,以加权有向无环图的结构生成输出对象的版本信息,其中,输出对象的加权有向无环图的每个节点中包括附属数据结构,所述附属数据结构中以元组的形式记录了生成该节点表征的输出对象版本所使用的所有输入对象的版本标识集合;
其中,所述在获取输出对象的版本属性的情况下,根据预设的输出对象版本信息生成方法、所述输入对象的版本信息及所述对象关联信息,以加权有向无环图的结构生成输出对象的版本信息,包括:
当任一输出对象的新版本生成时,在所述任一输出对象的加权有向无环图Go中新增一个代表新版本的节点vn;
从记录了所述任一输出对象的三部图Gr中,获取生成所述任一输出对象新版本所使用的所有输入对象的类型集合C及版本标识集合I;
在所述节点vn的附属数据结构中,以元组形式记录所述版本标识集合I,以得到元组tn;
获取记录了所述输入对象的类型集合C中每种输入对象的加权有向无环图{Gi0,Gi1,...,Gix};
基于所述加权有向无环图{Gi0,Gi1,...,Gix},生成所述输入对象的类型集合C中每种输入对象c所形成的节点与边的列表1c,以得到集合L;
根据所述集合L生成输入对象版本标识的元组集合T;
查询所述加权有向无环图Go中除节点vn之外的节点,若存在节点vm,且所述节点vm的附属数据结构中记录的的元组tm为所述元组集合T中的元素,则在所述加权有向无环图Go中新增一条边enm,以连接所述节点vn与所述节点vm;
将所述列表1c中的所述节点vm与所述节点vn之间所有边的权重之和作为所述边enm的权重。
2.根据权利要求1所述的方法,其特征在于,所述根据所述集合L生成输入对象版本标识的元组集合T,包括:
执行笛卡尔积操作,以生成输入对象版本标识的元组集合T。
3.根据权利要求1所述的方法,其特征在于,所述将所述列表1c中的所述节点vm与所述节点vn之间所有边的权重之和作为所述边enm的权重之后,还包括:
检查所述加权有向无环图Go中任两个节点之间是否存在多条边;
若存在多条边,则保留所述多条边中权重最低的一条,删除所述多条边中其余的边。
4.根据权利要求1所述的方法,其特征在于,所述输入对象的版本信息、所述对象关联信息及所述输出对象的版本信息均被保持至版本与关联数据库;所述在获取输出对象的版本属性的情况下,根据预设的输出对象版本信息生成方法、所述输入对象的版本信息及所述对象关联信息,以加权有向无环图的结构生成输出对象的版本信息之后,还包括:
在获取版本或关联查询请求的情况下,根据所述查询请求检索所述版本与关联数据库;
若检索到请求的版本或关联信息,则返回所述请求的版本或关联信息;
若未检索到所述请求的版本或关联信息,则返回空值。
5.一种面向数据处理的对象版本与关联信息管理系统,其特征在于,包括:
输入对象版本管理组件,用于在获取输入对象的版本属性的情况下,根据预设的对象版本信息记录方法,以加权有向无环图的结构生成输入对象的版本信息,其中,任一所述加权有向无环图表征具有同一本质属性的一组对象之间的版本之间关系,所述加权有向无环图中的每个节点表征对象的一个版本,并以该版本的版本标识作为节点的名称,所述加权有向无环图中的每条边表征版本之间的继承关系,所述加权有向无环图中的每个权重值表征两个版本之间的距离;
对象关联管理组件,用于在获取输入对象和输出对象的关联关系的情况下,根据预设的对象关联信息记录方法,以三部图的结构生成对象关联信息,其中,所述三部图表征输入对象、处理流程和输出对象三者之间的关联关系;
输出对象版本管理组件,用于在获取输出对象的版本属性的情况下,根据预设的输出对象版本信息生成方法、所述输入对象的版本信息及所述对象关联信息,以加权有向无环图的结构生成输出对象的版本信息,其中,输出对象的加权有向无环图的每个节点中包括附属数据结构,所述附属数据结构中以元组的形式记录了生成该节点表征的输出对象版本所使用的所有输入对象的版本标识集合;
其中,所述输出对象版本管理组件,还用于当任一输出对象的新版本生成时,在所述任一输出对象的加权有向无环图Go中新增一个代表新版本的节点vn;从记录了所述任一输出对象的三部图Gr中,获取生成所述任一输出对象新版本所使用的所有输入对象的类型集合C及版本标识集合I;在所述节点vn的附属数据结构中,以元组形式记录所述版本标识集合I,以得到元组tn;获取记录了所述输入对象的类型集合C中每种输入对象的加权有向无环图{Gi0,Gi1,...,Gix};基于所述加权有向无环图{Gi0,Gi1,...,Gix},生成所述输入对象的类型集合C中每种输入对象c所形成的节点与边的列表1c,以得到集合L;根据所述集合L生成输入对象版本标识的元组集合T;查询所述加权有向无环图Go中除节点vn之外的节点,若存在节点vm,且所述节点vm的附属数据结构中记录的的元组tm为所述元组集合T中的元素,则在所述加权有向无环图Go中新增一条边enm,以连接所述节点vn与所述节点vm;将所述列表1c中的所述节点vm与所述节点vn之间所有边的权重之和作为所述边enm的权重。
6.根据权利要求5所述的系统,其特征在于,还包括:
版本与关联数据库,用于保存所述输入对象的版本信息、所述对象关联信息及所述输出对象的版本信息;
版本与关联检索组件,用于在获取版本或关联查询请求的情况下,根据所述查询请求检索版本与关联数据库,其中,所述版本与关联数据库用于保存所述输入对象的版本信息、所述对象关联信息及所述输出对象的版本信息;若检索到请求的版本或关联信息,则返回所述请求的版本或关联信息;若未检索到所述请求的版本或关联信息,则返回空值。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当计算机程序在处理器上运行时,实现权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010309981.3A CN111506779B (zh) | 2020-04-20 | 2020-04-20 | 面向数据处理的对象版本与关联信息管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010309981.3A CN111506779B (zh) | 2020-04-20 | 2020-04-20 | 面向数据处理的对象版本与关联信息管理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111506779A CN111506779A (zh) | 2020-08-07 |
CN111506779B true CN111506779B (zh) | 2021-03-16 |
Family
ID=71864755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010309981.3A Active CN111506779B (zh) | 2020-04-20 | 2020-04-20 | 面向数据处理的对象版本与关联信息管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111506779B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112685425B (zh) * | 2021-01-08 | 2022-06-17 | 东云睿连(武汉)计算技术有限公司 | 一种数据资产元信息处理系统和方法 |
CN117112011A (zh) * | 2023-08-16 | 2023-11-24 | 北京冠群信息技术股份有限公司 | 一种版本管理方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541875A (zh) * | 2010-12-16 | 2012-07-04 | 北京大学 | 有向无环图的关系型节点数据的存取方法、装置及系统 |
CN103207858A (zh) * | 2012-01-11 | 2013-07-17 | 富士通株式会社 | 用于推荐Web服务组合的装置和方法 |
CN104965760A (zh) * | 2015-06-29 | 2015-10-07 | 广州酷狗计算机科技有限公司 | 一种管理软件功能模块生命周期的方法和装置 |
CN105474196A (zh) * | 2013-06-10 | 2016-04-06 | 李镛在 | 用于管理集成数据对象的系统及其方法 |
CN105956087A (zh) * | 2016-04-29 | 2016-09-21 | 清华大学 | 数据及代码版本管理系统及方法 |
CN110956272A (zh) * | 2019-11-01 | 2020-04-03 | 第四范式(北京)技术有限公司 | 实现数据处理的方法和系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100426291C (zh) * | 2005-11-26 | 2008-10-15 | 华为技术有限公司 | 在后台管理系统中实现数据库升级的系统和方法 |
CN105024929A (zh) * | 2015-07-22 | 2015-11-04 | 上海交通大学 | 软件定义网络中应用感知资源管理方法 |
CN108268275B (zh) * | 2017-06-12 | 2021-05-04 | 平安普惠企业管理有限公司 | 软件版本控制方法及软件版本控制设备 |
US10929100B2 (en) * | 2017-09-08 | 2021-02-23 | EMC IP Holding Company LLC | Mitigating causality discrepancies caused by stale versioning |
CN108733832B (zh) * | 2018-05-28 | 2019-04-30 | 北京阿可科技有限公司 | 有向无环图的分布式存储方法 |
CN109726216A (zh) * | 2018-12-29 | 2019-05-07 | 北京九章云极科技有限公司 | 一种基于有向无环图的数据处理方法和处理系统 |
CN110717076B (zh) * | 2019-09-06 | 2024-05-28 | 平安科技(深圳)有限公司 | 节点管理方法、装置、计算机设备及存储介质 |
-
2020
- 2020-04-20 CN CN202010309981.3A patent/CN111506779B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541875A (zh) * | 2010-12-16 | 2012-07-04 | 北京大学 | 有向无环图的关系型节点数据的存取方法、装置及系统 |
CN103207858A (zh) * | 2012-01-11 | 2013-07-17 | 富士通株式会社 | 用于推荐Web服务组合的装置和方法 |
CN105474196A (zh) * | 2013-06-10 | 2016-04-06 | 李镛在 | 用于管理集成数据对象的系统及其方法 |
CN104965760A (zh) * | 2015-06-29 | 2015-10-07 | 广州酷狗计算机科技有限公司 | 一种管理软件功能模块生命周期的方法和装置 |
CN105956087A (zh) * | 2016-04-29 | 2016-09-21 | 清华大学 | 数据及代码版本管理系统及方法 |
CN110956272A (zh) * | 2019-11-01 | 2020-04-03 | 第四范式(北京)技术有限公司 | 实现数据处理的方法和系统 |
Non-Patent Citations (3)
Title |
---|
Graph Data Management of Evolving Dependency Graphs for Multi-versioned Codebases;Oshini Goonetilleke;《2017 IEEE International Conference on Software Maintenance and Evolution (ICSME)》;20171107;574-583 * |
产品结构化信息树版本管理方法的研究与实现;李涛 等;《计算机应用研究》;20101015;第27卷(第10期);3829-3833 * |
多节点有向无环图优化算法;范伟 等;《重庆理工大学学报(自然科学)》;20111215;第25卷(第12期);84-88 * |
Also Published As
Publication number | Publication date |
---|---|
CN111506779A (zh) | 2020-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Treude et al. | Difference computation of large models | |
Atzeni et al. | Semistructured and structured data in the web: Going back and forth | |
US8838655B2 (en) | Type projection query of an instance space | |
JP5108749B2 (ja) | データ記憶システム内のデータを操作するシステムおよび方法 | |
Ramanathan et al. | Extraction of object-oriented structures from existing relational databases | |
US20050289167A1 (en) | Impact analysis in an object model | |
Lee et al. | Signature file methods for indexing object-oriented database systems | |
CN110019287B (zh) | 执行结构化查询语言sql指令的方法和装置 | |
US11106665B1 (en) | Automated SQL source code review | |
CN111506779B (zh) | 面向数据处理的对象版本与关联信息管理方法及系统 | |
US11474812B1 (en) | Automated data store access source code review | |
Petermann et al. | BIIIG: enabling business intelligence with integrated instance graphs | |
CA2461871A1 (en) | An efficient index structure to access hierarchical data in a relational database system | |
US20070156653A1 (en) | Automated knowledge management system | |
US10592391B1 (en) | Automated transaction and datasource configuration source code review | |
RU2707708C2 (ru) | Система и способ поиска данных в базе данных графов | |
Cui et al. | FRI-miner: fuzzy rare itemset mining | |
Tung et al. | An efficient method for mining multi-level high utility itemsets | |
Bertino | Method precomputation in object-oriented databases | |
Leida et al. | Semantics-aware data integration for heterogeneous data sources | |
Beheshti et al. | Bp-sparql: A query language for summarizing and analyzing big process data | |
CN111680036B (zh) | 一种基于图存储的配置管理数据库 | |
Reina et al. | Modeling and enforcing integrity constraints on graph databases | |
US10275237B1 (en) | Automated spring wiring source code review | |
Ahmed et al. | Data Matching: An Algorithm for Detecting and Resolving Anomalies in Data Federation |
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 |