首页> 中国专利> 一种关系数据库的数据起源收集方法

一种关系数据库的数据起源收集方法

摘要

本发明公布了一种关系数据库数据起源收集方法,包括:根据SQL数据流起源语义定义数据起源模型;解析SQL语句,生成抽象语法树;遍历抽象语法树,提取出来源表、目标表、逻辑操作算子;根据数据起源模型对所述来源表、目标表、逻辑操作算子进行结构化描述,生成起源信息元数据。本发明可以将SQL脚本中的数据处理逻辑通过数据转换图和属性映射图进行描述,从而为关系数据库系统提供数据起源分析功能和字段影响分析功能,不仅可以实现数据脚本的解析,并且可以根据解析信息实现数据追溯及分析数据之间的影响关系。

著录项

  • 公开/公告号CN105912595A

    专利类型发明专利

  • 公开/公告日2016-08-31

    原文格式PDF

  • 申请/专利权人 华南理工大学;

    申请/专利号CN201610206169.1

  • 发明设计人 汤德佑;周忠;林悦邦;

    申请日2016-04-01

  • 分类号G06F17/30(20060101);

  • 代理机构44245 广州市华学知识产权代理有限公司;

  • 代理人罗观祥

  • 地址 510640 广东省广州市天河区五山路381号

  • 入库时间 2023-06-19 00:22:08

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-03-05

    授权

    授权

  • 2016-09-28

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20160401

    实质审查的生效

  • 2016-08-31

    公开

    公开

说明书

技术领域

本发明涉及数据管理技术领域,尤其涉及一种关系数据库的数据起源收集方法。

背景技术

随着信息化社会的发展,数据的存储能力和规模都在持续增长,越来越多的信息被数据化。在面对海量数据时,识别数据来源和评价数据质量变得十分困难,数据的来源及鉴别方法对数据管理提出了一个巨大的挑战,因此对于数据起源问题的研究应运而生。

数据起源是指数据的来源及其生命周期中的处理历史。传统的关系型数据库管理系统主要提供高效的查询、插入、删除以及更新等方法,没有解决数据起源问题,因而无法得到查询结果的来源。用户在分析数据库中的查询结果时,有时需要对关键数据或有疑问数据进行跟踪,查询产生它的原始来源表以及作用在该来源表的数据处理过程,而现有的数据库系统无法提供这一功能。

关系数据库中的数据起源分析是建立在数据库元数据的基础之上,在数据来源方面,数据起源需要记录目标数据表的来源表集合。在数据处理方面,数据起源需要记录来源表到目标数据表的转换过程,同时还需要记录目标数据表与来源数据表的字段映射关系。

数据起源问题普遍存在于数据管理和数据集成领域中,借助于数据起源技术,可以追踪数据的来源和演化过程,评价数据的质量和可靠性。

发明内容

本发明要解决的技术问题在于,提供一种关系数据库的数据起源收集方法,不仅可以实现数据脚本的解析,并且可以根据解析信息实现数据追溯及分析数据之间的相互影响关系。

为解决上述技术问题,本发明提供如下技术方案:一种关系数据库的数据起源收集方法,包括以下步骤:

S1.根据SQL数据流起源语义定义数据起源模型;

S2.解析接收到的SQL语句,生成抽象语法树;

S3.遍历所述抽象语法树,提取出来源表、目标表、逻辑操作算子;

S4.根据所述数据起源模型对所述来源表、目标表、逻辑操作算子进行结构化描述,生成起源信息元数据。

进一步地,所述SQL数据流起源语义,包括:用于描述目标表的来源与经历的转换过程的表级数据起源语义、用于描述目标字段的来源字段与经历的字段投影过程的字段级数据起源语义;

所述表级数据起源语义,包括:目标表的来源表集合、来源表到目标表的转换关系;

所述字段级数据起源语义,包括:目标字段的来源字段集合、来源字段到目标字段的属性映射关系。

进一步地,所述步骤S2具体为:

接收SQL语句;

对所述SQL语句进行词法分析,生成单词序列;

对所述单词序列进行语法分析,生成抽象语法树。

进一步地,所述步骤S3具体为:

根据所述抽象语法树的根节点描述信息,获得所述SQL语句的句型;

根据所述SQL语句的句型,递归遍历所述抽象语法树根节点的各个子节点,在每个子节点处采集相应的节点数据;

将所述节点数据与数据库元数据进行关联,获得节点元数据,包括所述SQL语句中包含的来源表、目标表以及至少一个逻辑操作算子。

进一步地,所述逻辑操作算子包括:选择操作算子、投影操作算子、连接操作算子、分组操作算子、排序操作算子、交并差集合操作算子、重命名操作算子。

进一步地,所述步骤S4中的数据起源模型包括:用于描述表级数据转换过程的数据转换图与用于描述字段映射过程的属性映射图;

所述数据转换图描述包括两个类:表节点类和关系代数操作类;其中,所述关系代数操作类包含七个子类:选择操作子类、投影操作子类、连接操作子类、分组操作子类、排序操作子类、交并差集合操作子类、重命名操作子类;

所述属性映射图描述包括两个类:字段节点类与投影节点类。

进一步地,所述数据转换图具体的使用方式为:

(1)使用所述数据转换图中的表节点类对所述来源表和目标表进行结构化描述,分别生成来源表节点对象和目标表节点对象;

(2)使用所述数据转换图中的关系代数操作子类对所述逻辑操作算子进行结构化描述,对每一个逻辑操作算子生成一个关系代数操作对象;

(3)分析所述关系代数操作对象,对其中的投影操作对象、交并差集合操作对象和重命名操作对象细化为至少一个字段节点对象和投影节点对象。

进一步地,所述使用方式(2)包括:

将所述投影操作算子使用数据转换图中的投影操作子类进行结构化描述,生成投影操作对象;

当所述逻辑操作算子中存在所述连接操作算子时,使用所述数据转换图中的连接操作子类进行结构化描述,生成连接操作对象;

当所述逻辑操作算子中存在所述选择操作算子时,使用所述数据转换图中的选择操作子类进行结构化描述,生成选择操作对象;

当所述逻辑操作算子中存在所述分组操作算子时,使用所述数据转换图中的分组操作子类进行结构化描述,生成分组操作对象;

当所述逻辑操作算子中存在所述排序操作算子时,使用所述数据转换图中的排序操作子类进行结构化描述,生成排序操作对象。

进一步地,所述连接操作对象根据连接操作对象属性标记连接操作类型,所述连接操作类型包括:笛卡尔连接、内连接、左外连接、右外连接、全外连接,分别对应地描述所述连接操作算子为笛卡尔连接操作、内连接操作、左外连接操作、右外连接操作、全外连接操作。

进一步地,所述使用方式(3)包括:

将所述投影列表中的每一个投影字段分别生成一个字段节点对象和投影节点对象,投影字段表达式作为投影节点对象中的表达式;当所述投影操作对象的投影操作列表中存在嵌套子查询时,投影表达式所对应字段节点对象的输入为所嵌套的下一层查询子句所对应的所有字段节点对象的输出。

采用上述技术方案后,本发明至少具有如下有益效果:本发明的一种关系数据库的数据起源收集方法,根据SQL数据流起源语义定义数据起源模型,可以将SQL脚本中的数据处理逻辑通过数据转换图和属性映射图进行描述,从而 为关系数据库系统提供数据起源分析功能和字段影响分析功能,不仅可以实现数据脚本的解析,并且可以根据解析信息实现数据追溯及分析数据之间的影响关系,借此可以帮助IT相关人员及时、准确地掌握数据模型的内容及数据关系。

附图说明

图1为本发明所述一种关系数据库的数据起源收集方法的流程图。

图2为图1所述方法中关系数据库数据起源模型各类之间的关联示意图。

图3为图1所述方法中解析SQL语句生成抽象语法树的流程图。

图4为图1所述方法中遍历与提取逻辑操作算子的流程图。

图5为图1所述方法中结构化描述的流程图。

图6为图1所述方法中CREATE_SELECT句型SQL语句生成结构化对象的示意图。

图7为图1所述方法中SELECT_INTO句型SQL语句生成结构化对象的示意图。

图8为图1所述方法中INSERT_SELECT句型SQL语句生成结构化对象的示意图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合,下面结合附图和具体实施例对本申请作进一步详细说明。

图1为根据本发明关系数据库的数据起源收集方法实施例流程图,如图1所示,本实施例包括:

步骤101:根据关系数据库数据起源语义定义数据起源模型。

步骤102:解析接收到的SQL语句,生成抽象语法树。

步骤103:遍历所述抽象语法树,提取出来源表、目标表、逻辑操作算子。

步骤104:根据所述数据起源模型对所述来源表、目标表、逻辑操作算子进行结构化描述,生成起源信息元数据。

在步骤101中,关系数据库数据起源语义用于描述执行SQL命令生成的目标数据的来源以及所经历的转换过程;具体到数据库中就分为两个层次:粗粒度的表级数据起源以及细粒度的字段级数据起源。

表级数据起源用于描述目标表的来源以及经历的转换过程;字段级数据起源用于描述目标字段的来源字段以及字段投影过程。

所述表级数据起源包括两部分:目标表的来源表集合、来源表到目标表的转换关系;所述字段级数据起源包括两部分:目标字段的来源字段集合、来源字段到目标字段的属性映射关系。

为了具体对关系数据库中数据起源进行结构化描述,本发明定义了数据起源模型,该模型包括:用于描述表级数据转换过程的数据转换图模型与用于描述字段映射过程的属性映射图模型。

所述数据起源图模型描述包括两个类:表节点类RelationNode和关系代数操作类RelationOperator;其中,所述关系代数操作类进一步包含七个子类:连接操作子类JoinOperator、交并差集合操作子类SetOperator、选择操作子类SelectOperator、投影操作子类ProjectOperator、分组操作子类GroupByOperator、排序操作子类OrderByOperator以及重命名操作子类RenameOperator。

所述属性映射图模型描述包括两个类:字段节点类ColumnNode与投影节点类MappingNode。

图2展示了关系数据库数据起源模型中各类之间的关系。

表节点类用来描述参与数据转换过程的来源表和目标表,表节点类的属性有表模式名、表名、表的字段个数、各字段名。

关系代数操作类用来描述数据转换过程中的关系代数操作,具体分为七个子类,分别表示关系代数中的连接操作、交并差集合操作、选择操作、投影操作、分组操作、排序操作以及重命名操作;类中的属性有参与关系操作的输入表节点、输出表节点以及其它用来描述关系操作的信息。

连接操作子类JoinOperator中描述关系操作的信息为:表示连接类型的枚举字段。该枚举字段包括:INNER_JOIN(内连接)、CROSS_JOIN(笛卡尔连接)、FULL_OUTER_JOIN(全外连接)、LEFT_OUTER_JOIN(左外连接)、

交并差集合操作子类SetOperator中描述关系操作的信息为:表示集合操作类型的枚举字段。该枚举字段包括:UNION(去重并集合操作)、UNION_ALL(不去重并集合操作)、MINUS(差集合操作)、INTERSECT(交集合操作)。

选择操作子类SelectOperator中描述关系操作的信息为:表示过滤条件 的表达式;在本实施例中使用文本字符串的形式存放SQL过滤条件的表达式,即SQL语句中“WHERE”子句对应的部分。例如,针对如下的SQL语句:

SELECT name,age FROM Student WHERE age>13AND score>80;

生成SelectOperator对象中的过滤条件字段内容为“age>13AND score>80”。

投影操作子类ProjectOperator中描述关系操作的信息为:表示目标字段的投影节点对象列表,每个投影节点对象属于投影节点类,包含投影表达式,目标字段以及来源字段,即SQL语句中“SELECT”子句对应的部分。

分组操作子类GroupByOperator中描述关系操作的信息为:表示分组字段的字段名列表,即SQL语句中“Group By”子句对应的部分。

排序操作子类OrderByOperator中描述关系操作的信息为:表示排序字段的字段名列表,即SQL语句中“Order By”子句对应的部分。

每条SQL语句中包含有一至多个关系代数操作,在数据转换图模型中,每个关系代数操作对应于一个关系代数操作对象,通过对关系代数操作对象进行实例化得到。

本领域的技术人员应了解,“类”和“对象”是两个专业术语。在数据转换图模型中定义的是“类”,而在生成元数据时,则是根据这些类实例化成对象。

在步骤102中,需要对接收到的SQL语句进行解析。图3展示了解析SQL语句生成抽象语法树的过程,包括:

步骤1021:接收SQL语句。

步骤1022:对所述SQL语句进行词法分析,生成单词序列。

步骤1023:对所述单词序列进行语法分析,生成抽象语法树。

在解析SQL语句时,首先需要定义相关的SQL词法和语法规则,并使用flex和yacc识别词法和语法规则,生成相应的词法扫描器和语法分析器,从而对SQL语句进行解析,生成抽象语法树。

在步骤103中,遍历所述抽象语法树,提取出来源表、目标表、逻辑操作算子。图4展示了遍历与提取逻辑操作算子过程,包括以下步骤:

步骤1031:根据所述抽象语法树的根节点描述信息,获得所述SQL语句的句型。

步骤1032:根据所述SQL语句的句型,递归遍历所述抽象语法树根节点的各个子节点,在每个子节点处采集相应的节点数据。

步骤1033:将所述节点数据与数据库元数据进行关联,获得节点元数据,包括所述SQL语句中包含的来源表、目标表以及一至多个逻辑操作算子。

在步骤1031中,根据抽象语法树根节点描述信息识别所对应的SQL语句的句型,本发明分析涉及数据起源语义的SQL句型包括如下:

句型1:CREATE_SELECT句型,包括如下语法:

CREATE TABLE…AS SELECT…FROM…WHERE…;

CREATE VIEW…AS SELECT…FROM…WHERE…;

句型2:SELECT_INTO句型,包括如下语法:

SELECT…INTO…FROM…WHERE…;

句型3:INSERT_SELECT句型,包括如下语法:

INSERT INTO…SELECT…FROM…WHERE…;

以及其它句型,如ALTER命令、重命名操作、存储过程等。

在步骤1032中,节点数据包括:当前节点关键字、表名、字段名、过滤条件、函数、表达式信息。

在步骤1033中,逻辑操作算子包括:选择操作算子、投影操作算子、连接操作算子、分组操作算子、排序操作算子、交并差集合操作算子、重命名操作算子。

逻辑操作算子表示SQL中的关系代数操作,获得这些信息后就可以使用已建立的数据起源模型中的类对这些来源表、目标表以及逻辑操作算子进行结构化描述。

在CREATE_SELECT句型的SQL语句中,数据处理的目标表是CREATE子句所创建的数据库表或者视图,数据转换处理的逻辑在SELECT语句中,包含相应的逻辑操作算子。

在SELECT_INTO和INSERT_SELECT句型的SQL语句中,数据处理的目标是INTO子句所插入的数据库表,数据转换处理的逻辑在SELECT语句中,包含相

以下面的SQL语句为例说明步骤103中的具体过程:

CREATE TABLE tc(c1,c2,c3)AS

SELECT a1,a2+b1,a3*b2FROM ta,tb WHERE ta.a1>10and ta.a1 =tb.b2;

该语句为CREATE_SELECT类型,生成的抽象语法树根节点表示了目标表信息,目标表表名为tc,各字段分别为c1、c2、c3;之后是抽象语法树的各个子节点,其中SELECT子句对应的子节点包含投影操作算子,各投影字段分别为a1、a2+b1、a3*b2;FROM子句对应的子节点包含连接操作算子,为ta表与tb表的笛卡尔积连接;WHERE子句对应的子节点包含选择操作算子,过滤条件表达式为“ta.a1>10and ta.a1=tb.b2”。

在步骤104中,根据所述数据起源模型对所述来源表、目标表、逻辑操作算子进行结构化描述,生成起源信息元数据。图5展示了具体的结构化描述过程,包括以下步骤:

步骤1041:使用所述数据转换图中的表节点类对所述来源表和目标表进行结构化描述,分别生成来源表节点对象和目标表节点对象。

步骤1042:使用所述数据转换图中的关系代数操作子类对逻辑操作算子进行结构化描述,对每一个逻辑操作算子生成一个关系代数操作对象。

步骤1043:分析所述关系代数操作对象,对其中的投影操作对象、交并差集合操作对象和重命名操作对象细化为一至多个字段节点对象和投影节点对象。

在步骤1042中,使用数据转换图中的关系代数操作子类对逻辑操作算子进行结构化描述,每一个逻辑操作算子生成一个对应的关系代数操作对象包括:

当所述逻辑操作算子中存在连接操作算子时,使用数据转换图中的连接操作子类进行结构化描述,生成连接操作对象。

当所述逻辑操作算子中存在选择操作算子时,使用数据转换图中的选择操作子类进行结构化描述,生成选择操作对象。

当所述逻辑操作算子中存在分组操作算子时,使用数据转换图中的分组操作子类进行结构化描述,生成分组操作对象。

当所述逻辑操作算子中存在排序操作算子时,使用数据转换图中的排序操作子类进行结构化描述,生成排序操作对象。

对于SQL语句中的关系操作,其执行顺序会因数据库底层不同的优化策略而不同,因此按照连接、选择、分组、投影、集合和排序操作算子这样的顺序排列关系操作。

图6到图8分别展示了CREATE_SELECT句型、SELECT_INTO句型和INSERT_SELECT句型中逻辑操作算子生成的关系操作对象的关联结构。

在步骤1043中,分析所述关系代数操作对象,对其中的投影操作对象、交并差集合操作对象和重命名操作对象细化为一至多个字段节点对象和投影节点对象包括:

将所述投影列表中的每一个投影字段分别生成一个字段节点对象和投影节点对象,投影字段表达式作为投影节点对象中的表达式。

当所述投影操作对象的投影操作列表中存在嵌套子查询时,投影表达式所对应字段节点对象的输入为所嵌套的下一层查询子句所对应的所有字段节点对象的输出。

由上述可见,本发明的关系数据库的数据起源收集方法,根据SQL数据流起源语义定义数据起源模型,可以将SQL脚本中的数据处理逻辑通过数据转换图和属性映射图进行描述,从而为关系数据库系统提供数据起源分析功能和字段影响分析功能,不仅可以实现数据脚本的解析,并且可以提供根据解析信息实现数据追溯及分析数据之间影响关系,借此可以帮助IT相关人员及时、准确地掌握数据模型的内容及数据关系。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解的是,在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种等效的变化、修改、替换和变型,本发明的范围由所附权利要求及其等同范围限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号