构建数据仓库表级别血缘关系的方法及装置转让专利

申请号 : CN202010819732.9

文献号 : CN111782738B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘世超姚登科王君

申请人 : 北京斗米优聘科技发展有限公司

摘要 :

本公开提供了一种构建数据仓库表级别血缘关系的方法及装置,该方法包括对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句;解析用于操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘关系,解决了相关技术中构建数据仓库表级别血缘关系慢、构建数据仓库表级别血缘关系不准确、需要人工干预的问题,具有能够以自动化和低耦合的方式进行采集、解析和存储数据仓库HIVE表之间血缘关系,且通过可视化工具进行图文结合的方式检索和展示的有益效果。

权利要求 :

1.一种构建数据仓库表级别血缘关系的方法,其特征在于,包括:对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句,其过程包括:依照分割信息将所述数据处理代码空间地分割为表示取样信息的信息取样区域,并且依照子分割信息,通过递归式的二分查找来分割所述信息取样区域,以至少将所述信息取样区域分割为不同尺寸的具有截断一元码的子区域;

基于所述截断一元码,检查所分割的各个子区域,如果该子区域超过预定的区域尺寸,则将该子区域进一步分割为具有最大区域尺寸的子区域,重复地对这些子区域进行递归式地检查以及分割,直到所有的子区域都小于所述预定的区域尺寸;以及通过上下文索引,自适应地抽取所述子区域中的语法元素,以获取所述数据处理代码所涉及的用于操作所述数据仓库的语句,其中,所述上下文索引是基于语法元素以及二值化后的二进制串的索引;

解析用于操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘关系。

2.如权利要求1所述的构建数据仓库表级别血缘关系的方法,其特征在于,所述数据处理代码是将数据从数据源经过抽取、转换、加载至所述数据仓库的代码或脚本,并且,用于操作所述数据仓库的语句为SQL语句。

3.如权利要求1所述的构建数据仓库表级别血缘关系的方法,其特征在于,对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句包括:使用JAVA语言对所述数据处理代码以定时方式或运行时监听方式进行采集识别,以获取所述数据处理代码所涉及的用于操作所述数据仓库的语句。

4.如权利要求1所述的构建数据仓库表级别血缘关系的方法,其特征在于,解析用于操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系包括:使用HIVE组件的SQL解析工具,解析所述SQL语句中所引用到的源表和目标表,确定所述源表和所述目标表之间的依赖和被依赖关系。

5.如权利要求1至4中任一项所述的构建数据仓库表级别血缘关系的方法,其特征在于,确定所述表之间的依赖和被依赖关系之后,所述方法还包括:将所确定的依赖和被依赖关系,按自身场景或需要的结构,存储至存储组件中;以及通过数据可视化工具连接所述存储组件,以供用户检索所述依赖和被依赖关系。

6.如权利要求1所述的构建数据仓库表级别血缘关系的方法,其特征在于,采用以下公式进行所述递归式地检查以及分割:其中,a是截断一元码的个数,k是信息取样区域的个数,j是子区域的个数,P是分割的概率。

7.如权利要求1或6所述的构建数据仓库表级别血缘关系的方法,其特征在于,解析操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系包括:基于语法元素结构,预测所述子区域的层间依赖性;

基于所预测的层间依赖性,反复解析所述子区域以获取用于操作所述数据仓库的语句。

8.一种构建数据仓库表级别血缘关系的装置,其特征在于,包括:获取模块,被配置为对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句,包括:依照分割信息将所述数据处理代码空间地分割为表示取样信息的信息取样区域,并且依照子分割信息,通过递归式的二分查找来分割所述信息取样区域,以至少将所述信息取样区域分割为不同尺寸的具有截断一元码的子区域;

基于所述截断一元码,检查所分割的各个子区域,如果该子区域超过预定的区域尺寸,则将该子区域进一步分割为具有最大区域尺寸的子区域,重复地对这些子区域进行递归式地检查以及分割,直到所有的子区域都小于所述预定的区域尺寸;以及通过上下文索引,自适应地抽取所述子区域中的语法元素,以获取所述数据处理代码所涉及的用于操作所述数据仓库的语句,其中,所述上下文索引是基于语法元素以及二值化后的二进制串的索引;

确定模块,被配置为解析操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘关系。

9.一种可读存储介质,所述可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时用于实现如权利要求1‑7任一项所述的方法。

说明书 :

构建数据仓库表级别血缘关系的方法及装置

技术领域

[0001] 本公开属于计算机领域,特别涉及一种构建数据仓库表级别血缘关系的方法、装置、及存储介质。

背景技术

[0002] 随着企业业务的不断发展和数据需求的不断增加,数据仓库ETL抽取(extract)、转换(transform)、加载(load)任务也随之不断积累,识别海量HIVE表之间依赖关系的难度
和复杂度也不断递增。
[0003] 相关技术中,开发人员人肉识别数据仓库中ETL代码中的HIVE表级别依赖关系;通过手动记录各ETL脚本中HIVE SQL引用的源表名和目标表名至相关文档,持续更新、维护文
档内容;文档共享于使用人员。
[0004] 传统方式虽然简单,但由于都是人肉识别、输入、维护信息,开发人员的能力和工作质量参差不齐,无论从血缘关系的准确性,还是可维护性都难以保持。并且,ETL过程中直
接或间接带来的工作量也十分巨大。

发明内容

[0005] 为了解决上述技术问题至少之一,本公开提供了一种构建数据仓库表级别血缘关系的方法、装置、及存储介质。
[0006] 根据本公开的第一个方面,提供了一种构建数据仓库表级别血缘关系的方法,包括:对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于
操作所述数据仓库的语句;解析用于操作所述数据仓库的语句中所引用到的表,确定所述
表之间的依赖和被依赖关系,以构建表级别血缘关系。
[0007] 在本公开的一个示例性实施方式中,所述数据处理代码是将数据从数据源经过抽取、转换、加载至所述数据仓库的代码或脚本,并且,用于操作所述数据仓库的语句为SQL语
句。
[0008] 在本公开的一个示例性实施方式中,对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句包括:使用JAVA语言对
所述数据处理代码以定时方式或运行时监听方式进行采集识别,以获取所述数据处理代码
所涉及的用于操作所述数据仓库的语句。
[0009] 在本公开的一个示例性实施方式中,解析用于操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系包括:使用HIVE组件的SQL解析工具,解析所
述SQL语句中所引用到的源表和目标表,确定所述源表和所述目标表之间的依赖和被依赖
关系。
[0010] 在本公开的一个示例性实施方式中,确定所述表之间的依赖和被依赖关系之后,所述方法还包括:将所确定的依赖和被依赖关系,按自身场景或需要的结构,存储至存储组
件中;以及通过数据可视化工具连接所述存储组件,以供用户检索所述依赖和被依赖关系。
[0011] 在本公开的一个示例性实施方式中,基对所述数据仓库的数据处理代码进行采集识别包括:依照分割信息将所述数据处理代码空间地分割为表示取样信息的信息取样区
域,并且依照子分割信息,通过递归式的二分查找来分割所述信息取样区域,以至少将所述
信息取样区域分割为不同尺寸的具有截断一元码的子区域;基于所述截断一元码,检查所
分割的各个子区域,如果该子区域超过预定的区域尺寸,则将该子区域进一步分割为具有
最大区域尺寸的子区域,重复地对这些子区域进行递归式地检查以及分割,直到所有的子
区域都小于所述预定的区域尺寸;以及通过上下文索引,自适应地抽取所述子区域中的语
法元素,以获取所述数据处理代码所涉及的用于操作所述数据仓库的语句。
[0012] 在本公开的一个示例性实施方式中,采用以下公式进行所述递归式地检查以及分割: 其中,a是截断一元码的个数,k是信息取样区域的
个数,j是子区域的个数,P是分割的概率。
[0013] 在本公开的一个示例性实施方式中,解析操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系包括:基于语法元素结构,预测所述子区域的层间
依赖性;基于所预测的层间依赖性,反复解析所述子区域以获取用于操作所述数据仓库的
语句。
[0014] 根据本公开的另一个方面,提供了一种构建数据仓库表级别血缘关系的装置,包括获取模块,被配置为对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理
代码所涉及的用于操作所述数据仓库的语句;确定模块,被配置为解析操作所述数据仓库
的语句中所引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘关系。
[0015] 根据本公开的又一个方面,提供了一种计算机设备,包括处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序
用于实现如上描述的构建数据仓库表级别血缘关系的方法。
[0016] 根据本公开的又一个方面,提供了一种计算机可读存储介质,该存储介质存储有计算机程序,该计算机程序被处理器执行时用于实现如上描述的构建数据仓库表级别血缘
关系的方法。
[0017] 在本公开中,通过对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句,解析用于操作所述数据仓库的语句中所
引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘关系,解决了相关技
术中构建数据仓库表级别血缘关系慢、构建数据仓库表级别血缘关系不准确、需要人工干
预的问题,具有能够以自动化和低耦合的方式进行采集、解析和存储数据仓库HIVE表之间
血缘关系,且通过可视化工具进行图文结合的方式检索和展示的有益效果。

附图说明

[0018] 此处所说明的附图用来提供对本公开的进一步理解,构成本公开的一部分,本公开的示意性实施方式及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:
[0019] 图1是根据本公开实施方式的构建数据仓库表级别血缘关系的方法的流程图。
[0020] 图2是根据本公开实施方式的另一种构建数据仓库表级别血缘关系的方法的流程图。
[0021] 图3是根据本公开实施方式的构建数据仓库表级别血缘关系的装置的结构示意图。
[0022] 图4是根据本公开实施方式的构建数据仓库表级别血缘关系的系统的结构示意图。
[0023] 图5为适于用来实现本公开实施方式的服务器的计算机设备的结构示意图。

具体实施方式

[0024] 为使本公开实施的目的、技术方案和优点更加清楚,下面将结合本公开实施方式中的附图,对本公开实施方式中的技术方案进行更加详细的描述。在附图中,自始至终相同
或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施方式是
本公开一部分实施方式,而不是全部的实施方式。下面通过参考附图描述的实施方式是示
例性的,旨在用于解释本公开,而不能理解为对本公开的限制。基于本公开中的实施方式,
本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本
公开保护的范围。下面结合附图对本公开的实施方式进行详细说明。
[0025] 需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用
的数据在适当情况下可以互换,以便这里描述的本公开的实施方式能够以除了在这里图示
或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于
覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限
于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产
品或设备固有的其它步骤或单元。
[0026] 本公开首先对所使用的术语进行定义,以使其含义清楚。
[0027] 数据仓库(Data Warehouse)可简写为DW或DWH,是为企业所有级别的决策制定过程、供所有类型数据支持的战略集合。
[0028] HIVE是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。
[0029] JAVA是一种面向对象编程语言。
[0030] SHELL是一种程序设计语言,交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令。
[0031] PYTHON是一种跨平台的计算机程序设计语言,具体地说,是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
[0032] MYSQL是一种关系型数据库管理系统。
[0033] NEO4J是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。
[0034] 截断一元码是一元码的变体,用在已知语法元素的最大值cMax的情况。
[0035] SQL是结构化查询语言(Structured Query Language)的简称,其是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系
数据库系统。
[0036] 数据可视化工具是一种通过合适的图表将数据描绘出来,使杂乱无章的数据可读性得到提高,便于企业从数据中找到规律的工具。
[0037] 提取,转换,加载(ETL)工具是负责从多个来源提取数据,清理,自定义,重新格式化,集成并插入到数据仓库中的软件。
[0038] 下面开始描述本公开的示例性实施方式。
[0039] 根据本公开一个示例性实施方式,提供了一种构建数据仓库表级别血缘关系的方法,如图1所示,该方法包括以下步骤:
[0040] 步骤S102,自动识别ETL代码中的HIVE SQL。
[0041] 通过使用JAVA语言对数据仓库ETL(包含SHELL、PYTHON或其他类型)代码或脚本进行定时或运行时监听方式采集识别,获取其涉及的HIVE SQL语句。
[0042] 步骤S104,通过HIVE LineageInfo解析出血缘关系。
[0043] 使用HIVE组件自带SQL解析工具LineageInfo,解析ETL脚本中HIVE SQL所引用到的源表和目标表,明确表与表之间依赖和被依赖关系。
[0044] 步骤S106,将血缘关系按需存储。
[0045] 将血缘关系信息按自身场景或需要的结构,存储至相关存储组件,例如MYSQL、NEO4J等。
[0046] 步骤S108,通过可视化工具检索、展示血缘关系。
[0047] 通过数据可视化工具连接存储组件,供使用人员按需进行查询阅览。
[0048] 在本公开的示例性实施方式中,血缘关系的采集、解析、存储和展示,完全由程序定时和监听方式自动触发,无需人为干预,极大提升准确性,且ETL开发人员无需关心血缘
关系采集,很大程度上减少额外工作,提高人效;其次,过程中与现有数据仓库ETL任务保持
隔离,做到整体架构的低耦合,这样就大大的提高整体架构的稳定性和健壮性。
[0049] 根据本公开的另一个示例性实施方式,提供了一种构建数据仓库表级别血缘关系的方法,如图2所示,该方法包括以下步骤:
[0050] 步骤S202,对数据仓库的数据处理代码进行采集识别,获取数据处理代码所涉及的用于操作数据仓库的语句。
[0051] 数据仓库是旨在使决策者能够做出更快更好的决策技术的集合。数据仓库体系结构由三层组成:数据源,DSA和主数据仓库。
[0052] ETL主要有三个功能:从不同的数据源提取数据;传播到数据暂存区,在此对其进行转换和清理;然后加载到数据仓库。数据处理代码是将数据从数据源经过抽取、转换、加
载至数据仓库的代码或脚本,例如,ETL代码或脚本。
[0053] Hive提供了SQL查询方式来分析存储在ETL的分布式文件系统中的数据,从而可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能。这种SQL就是Hive 
SQL,其可以利用SQL语言查询、汇总、分析数据。
[0054] 在一个示例性实施方式中,使用JAVA语言对ETL代码或脚本以定时方式或运行时监听方式进行采集识别,以获取ETL代码或脚本所涉及的SQL语句或HIVE SQL语句。
[0055] 具体地,可以依照分割信息将数据处理代码空间地分割为表示取样信息的信息取样区域,并且依照子分割信息,通过递归式的二分查找来分割信息取样区域,以至少将信息
取样区域分割为不同尺寸的具有截断一元码的子区域。然后,基于截断一元码,检查所分割
的各个子区域。如果该子区域超过预定的区域尺寸,则将该子区域进一步分割为具有最大
区域尺寸的子区域,重复地对这些子区域进行递归式地检查以及分割,直到所有的子区域
都小于预定的区域尺寸。
[0056] 在一个示例性实施方式中,采用以下公式进行递归式地检查以及分割:其中,a是截断一元码的个数,k是信息取样区域的个
数,j是子区域的个数,P是分割的概率。在确定了分割的概率之后,如果分割的概率大于预
定的阈值,则表示应该进行分割。之后,通过上下文索引,自适应地抽取子区域中的语法元
素,以获取数据处理代码所涉及的用于操作数据仓库的语句。其中,截断一元码是一元码的
变体,用在已知语法元素的最大值的情况,上下文索引是基于语法元素以及二值化后的二
进制串的索引。
[0057] 步骤S204,解析用于操作数据仓库的语句中所引用到的表,确定表之间的依赖和被依赖关系,以构建表级别血缘关系。
[0058] 使用HIve组件的SQL解析工具,解析SQL语句中所引用到的源表和目标表,确定源表和目标表之间的依赖和被依赖关系。
[0059] 使用Hive的内部解析方法来解析sql,以便可以在hive中执行的所有sql都可以完全解析为字段依赖项。通过分析Hive编译模块的源代码,确定每个模块所处的数据结构。源
代码与HIVE的内部结构有关。本公开的实施方式中,没有对源代码进行干扰性的更改,而是
利用了Hive挂钩绑定到Hive的内部工作机制,其提供了使用Hive扩展和集成外部功能的能
力,并且可用于在查询处理的每个步骤中注入一些代码,而无需重新编译Hive。
[0060] Hive挂钩的API中,Hive已经实现了血缘挂钩。可以设计一个mysql表来存储字段依赖关系。还可以有依赖关系的创建时间和更新时间,以便于及时清除过期的依赖关系。使
用配置HIVE挂钩具有以下优点:sql执行后自动更新依赖项;编写依赖项模块的执行状态不
会影响在线任务,即,如果依赖项由于某种原因而无法写入,则不会影响在线任务的正常运
行。
[0061] 在大量现有的语法规则中,找到条目规则相对简单,因为该条目具有严格的要求,它必须能够处理完整的输入,并且规则匹配条件必须包含特定的令牌EOF,表示文件结尾
(文件结尾)。
[0062] 找到条目规则后,python中的调用语句知道如何编写它,但是由于java是一种强类型语言,因此python变量不能随便传递,并且必须符合java的类型系统。在本公开的示例
性实施方式中,可以遵循诸如树遍历的规则名称,也可以根据配置单元中的关键字进行搜
索。HiveLexer.g中定义的令牌也可以使用。
[0063] 解析器使用自动类自动查找Java类名称,并将其映射到Python中的“类定义对象”。如果使用Python中的“type”进行检查,则类型为JavaClass。
[0064] 在Jinus文档中,找到JavaClass中的属性javaconstructor。javaconstructor的属性是一个元组列表,每个元组对应一个可接受的构造函数签名,第一个元组是一个元组,
表示需要传递的参数类型,第二个元组是返回值类型,因为java构造函数不需要返回值,总
是存在false。
[0065] 接下来,取决于注入代码的具体阶段,根据挂钩的类型,可以在查询处理期间的不同点调用该挂钩。例如,Pre‑semantic‑analyzer挂钩:在Hive对查询字符串运行语义分析
器之前调用;Post‑semantic‑analyzer挂钩:在Hive对查询字符串运行语义分析器之后调
用。
[0066] 通过上述步骤,便可以基于语法元素结构,预测子区域的层间依赖性;并且基于所预测的层间依赖性,反复解析子区域以获取用于操作数据仓库的语句。
[0067] 步骤S206,检索和展示血缘关系。
[0068] 在一个示例性实施方式中,将所确定的依赖和被依赖关系,按自身场景或需要的结构,存储至存储组件中。之后,通过数据可视化工具连接存储组件,以供用户检索依赖和
被依赖关系。
[0069] 根据本公开的一个示例性实施方式,提供了一种构建数据仓库表级别血缘关系的装置。如图3所示,该构建数据仓库表级别血缘关系的装置(简称为构建血缘关系的装置)包
括获取模块32和确定模块34。
[0070] 获取模块32被配置为对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句;确定模块34被配置为解析操作所述数
据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘
关系
[0071] 根据本公开的一个示例性实施方式,提供了一种构建数据仓库表级别血缘关系的系统。如图4所示,该构建数据仓库表级别血缘关系的系统包括数据源42、ETL工具44、构建
血缘关系的装置46、和数据库48。
[0072] ETL的数据源42可以具有许多不同的数据结构格式,例如平面文件,XML数据集,关系表,非关系源,Web日志源,旧版系统和电子表格。这导致ETL的代码或脚本涉及到数据时,
表达非常复杂。
[0073] ETL工具44主要执行ETL提取、DW、映射和加载处理。
[0074] 在ETL提取过程中,可能会创建一些临时表来保存将非结构化源转换为数据库的结果。提取过程包括初始提取和刷新。当目标数据仓库中没有数据时首次执行ETL方案时,
将进行初始提取。进行刷新提取以捕获增量数据(DW中的旧数据与数据源中的更新数据之
间的差异)。最好将初始提取的ETL方案与刷新提取的ETL方案分开。这意味着用户可能需要
为同一ETL场景构建两个EMD模型;一个用于初始提取,另一个用于使用临时区域中找到的
临时表中的旧数据进行刷新提取。
[0075] 在DW过程中,绘制数据仓库模式表。尽管事实表和维度表在功能和特性上明显不同,但是它们都是数据容器。基本上,数据仓库存储为关系结构而不是多维结构。多维性发
生在联机分析处理引擎中。
[0076] 在映射过程,绘制所需的转换函数。转换操作对来自暂存区域中的基本源和/或临时源的传入数据进行。某些转换操作会导致临时结果,这些结果将保存在临时表中。其中,
会存在一个暂存区域,例如,一个物理容器,其中包含在提取过程中创建的所有临时表或由
应用的转换函数产生的所有临时表。
[0077] 在加载过程中,当数据达到最终的适当格式时,它将被加载到目标DW模式中的相应数据元素。数据可以通过某些转换函数直接加载,也可以从暂存区域中的所需临时表中
捕获。
[0078] 构建血缘关系的装置46是图3所示的构建数据仓库表级别血缘关系的装置,该装置可以是平板电脑、个人计算机、路由器,诸如移动电话和媒体播放器之类的可编程通信设
备,以及其他可编程设备等。构建血缘关系的装置46可以与软件的可执行文件或数据存储
设备的计算机可读介质中编码。当加载到构建血缘关系的装置46的存储器中时,在构建血
缘关系的装置46的处理器中,一个或多个可执行文件使构建血缘关系的装置46执行处理。
[0079] 构建血缘关系的装置46与数据库48之间通过有线或无线的通信网络相连。上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网
络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area 
Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者
虚拟专用网络的任何组合)。在一些实施方式中,使用包括超文本标记语言(Hyper Text 
Mark‑up Language,HTML)、可扩展标记语言(Extensible Markup Language,XML)等的技术
和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure 
Socket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络
(Virtual Private Network,VPN)、网际协议安全(Internet Protocol Security,IPsec)
等常规加密技术来加密所有或者一些链路。在另一些实施方式中,还可以使用定制和/或专
用数据通信技术取代或者补充上述数据通信技术。
[0080] 构建血缘关系的装置46还可以是一台服务器、若干台服务器构成的服务器集群或云计算中心,其可以执行图1和图2所示的方法,此处不再赘述。
[0081] 下面参考图5,其示出了适于用来实现本公开实施方式的计算机设备800的结构示意图。图5示出的计算机设备仅仅是一个示例,不应对本公开实施方式的功能和使用范围带
来任何限制。
[0082] 如图5所示,计算机设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分708加载到随机访问存储器(RAM)803中的程序而
执行各种适当的动作和处理。在RAM803中,还存储有设备800操作所需的各种程序和数据。
CPU801、ROM802以及RAM803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线
804。
[0083] 以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;
以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因
特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如
磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出
的计算机程序根据需要被安装入存储部分808。
[0084] 根据本公开的实施方式,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括承载在计算机可读介质上的
计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施方
式中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811
被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本公开的方法中限定的上
述功能。需要说明的是,本公开的计算机存储介质可以是计算机可读信号介质或者计算机
可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限
于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算
机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携
式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器
(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或
者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序
的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公
开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其
中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于
电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读
存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由
指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程
序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的
任意合适的组合。
[0085] 附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以
代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个
用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所
标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际
上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要
注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用
执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指
令的组合来实现。
[0086] 描述于本公开实施方式中所涉及到的模块或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块或单元也可以设置在处理器中,这些模块或单元
的名称在某种情况下并不构成对该模块或单元本身的限定。
[0087] 作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中描述的装置中所包含的;也可以是单独存在,而未装配入该装置
中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被该装
置执行时按上述方法对数据进行处理。
[0088] 以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应
涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为
准。