一种基于数据库脚本的数据追溯和影响关系的分析方法

文档序号:6371816阅读:225来源:国知局
专利名称:一种基于数据库脚本的数据追溯和影响关系的分析方法
技术领域
本发明涉及数据库领域,特别是涉及一种基于数据库脚本解析的数据追溯和数据影响关系的分析方法。
背景技术
当前,IT系统大而集中,且业务不断发展,需要管理和运维的数据越来越多、数据模型越来越复杂。目前,数据管理和运维工作中,由于文档和系统实现无法及时同步,导致不论是管理人员,还是运维人员,甚至是开发人员,都很难清楚掌握数据库中数据的真实应用情况哪些数据被频繁访问?哪些数据是垃圾数据?数据之间的流向和处理过程如何?数据之间是如何影响?因此,需要研究一种智能化方法,帮助相关人员及时、准确、快捷地掌握数据模型的内容及数据关系。
在现有数据脚本解析方法或者解析系统中,较为常见的有两种方式解析,一是设定脚本的编写规范或者给要解析的脚本增加特殊标记,只有符合规范的数据脚本才能被解析,这种方式脱离SQL标准,脚本的编写有比较高的要求,需要对一些数据脚本进行改造;二是以SQL标准为基础,以主流数据库实现的SQL为主,建立SQL解析的方法或者系统,此方式可以支持大部分的SQL类型,且无须对已有的数据库脚本进行改造,但由于不同的解析器及采用的词法和语法分析器不同,其解析的效率、易用性等也不尽相同。上述两种方式虽然提供了对数据脚本的解析,但没有提供数据的影响分析,并且解析的方法及采用的语法生成器也各不相同。因此,有必要提出一种新的解决方法,该方法区别与上述两种已经实现的方法或实现,采用的语法生成器也不同,在了解数据来源及流向的基础上,分析出数据之间的影响关系。

发明内容
本发明的目的在于提供一种基于数据库脚本解析的数据追溯和数据影响的分析方法,可以实现数据脚本解析,并且可以根据解析信息实现数据追溯及数据之间影响关系。为解决以上技术问题,本发明提供一种基于数据库脚本解析的数据追溯和数据影响关系的分析方法,包括步骤I、根据SQL标准建立基于JavaCC的数据库脚本的词法和语法文件;步骤2、根据建立的词法和语法文件,生成数据库脚本解析器,并创建相关Java类;步骤3、数据库脚本解析器解析接收到的数据库脚本,获得脚本中的相关数据以生成SQL树;步骤4、根据生成的SQL树,查找获得源数据和目标数据的影响关系。进一步地,所述步骤I具体包括根据SQL/99标准定义的数据库脚本语句,建立基于JavaCC的数据库脚本的词法和语法文件。
进一步地,所述步骤2具体包括根据建立的词法和语法文件,生成数据库脚本解析器;基于数据库脚本的结构和类型构造相关Java类。进一步地,所述基于数据库脚本的结构和类型构造相关Java类,用于保存数据库脚本解析器在解析SQL脚本过程中生成的相关信息。进一步地,所述步骤3具体包括数据库脚本解析器根据SQL脚本语法解析接收到的数据库脚本,获得脚本中的相关数据;
根据获取的相关数据生成SQL树;将解析出来的SQL相关元素赋值给Java类。进一步地,所述步骤4具体包括查找生成的SQL树,从中找到与目标字段对应的源字段、转换关系及影响关系的字段并输出结果。与现有的技术相比,本发明提供的一种基于数据库脚本解析的数据追溯和数据影响关系的分析方法,以SQL/99的标准为基础,对GreenPlum数据库实现的SQL进行扩展,可以支持GreenPlum数据库实现的SQL,不仅可以实现数据脚本的解析,并且可以提供根据解析信息实现数据追溯及数据之间影响关系。借此可以帮助IT相关人员及时、准确、快捷地掌握数据模型的内容及数据关系。


此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图I是本发明提供的一种基于数据库脚本解析的数据追溯和数据影响关系的分析方法的流程图。图2是本发明实施例根据数据库脚本解析器解析数据库脚本获得的相关数据以生成SQL树的示意图。
具体实施例方式为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。本发明提供的基于数据库脚本解析的数据追溯和数据影响关系的分析方法,主要技术方案涉及以下几个部分根据SQL标准建立JavaCC的词法和语法文件,基于数据库脚本的结构和类型构造相关Java类,数据库脚本解析并生成SQL树,SQL树的查找及结果输出。其中,JavaCC是一种用Java开发的语法分析生成器,具有可以跨平台,稳定性高,且词法和语法在同一个文件里,易读,易于维护等优点。如图I所示,本发明提供一种基于数据库脚本解析的数据追溯和数据影响关系的分析方法,包括I、根据SQL标准建立基于JavaCC的数据库脚本的词法和语法文件。具体包括根据SQL/99标准定义的数据库脚本语句,建立JavaCC数据库脚本的词法和语法文件,其中,词法包括SQL标准中的一些关键字、运算符、支持的字符字及对标识符的规定,语法文件则是根据SQL语法建立。2、根据建立的词法和语法文件,生成数据库脚本解析器,并创建相关Java类。具体包括根据建立的词法和语法文件,并对GreenPlum数据库常用的实现SQL进行扩展,生成数据库脚本解析器;基于数据库脚本的结构和类型构造相关Java类,以保存数据库脚本解析器在解析过程中生成的相关信息。由于在SQL脚本的解析过程中,数据库脚本解析器会根据SQL脚本语法进行解析并创建Java相关类,同时将SQL中的元素赋值给Java类,实现保存数据库脚本解析器在解析过程中生成的相关信息。 3、数据库脚本解析器解析接收到的数据库脚本,获得脚本中的相关数据以生成SQL树。具体包括数据库脚本解析器根据SQL脚本语法解析接收到的数据库脚本,获得脚本中的相关数据;根据获取的相关数据生成SQL树;将解析出来的SQL相关元素赋值给Java类,实现将数据库脚本数据转换成Java对象。4、根据生成的SQL树,查找获得源数据和目标数据的影响关系。具体包括查找生成的SQL树,从中找到与目标字段对应的源字段、转换关系及影响关系的字段;输出找到的字段,实现结果输出。下面将结合实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。本发明提供一种基于数据库脚本解析的数据追溯和数据影响关系的分析方法,包括第一步根据SQL/99标准建立数据库脚本的词法和语法文件。以Cast函数为例,其语法文件为Expression CastExpi e^si011():
{
CaslExpression castExpression = new CastExpression(); Expression retval = null;
String castType = null;
}
{
-K_CAST>(
retval = SimpleExpression()
<K—AS〉
castType = RelObjectName()
{
castExpression.setLeftExpression(retval); castExpression.setCastType(castType); return castExpression;
}
}第二步根据建立的词法和语法文件,生成数据库脚本解析器,并创建相关Java类。由于在SQL脚本的解析过程中,数据库脚本解析器会根据SQL脚本语法进行解析并创建Java相关类,同时将SQL中的元素赋值给Java类。以Cast函数例例,当SQL中存在Cast函数时,会创建CastExpression类,之后会得解析的部分通过set方法赋值给CastExpression的对象,所以要构造Java类,CastExpression类结构如下public class CastExpression implements Expression {
/料
* IeftExpression 是指 cast(expression as castType)中的
expression
private Expression IeftExpression;
/料
*所要转换的类型 承
private String castType;public void accept( Expressi on Vi si tor expression Visitor) {expressi on V i si tor ‘ vi sit(thi s);
}
public Expression getLeftExpression() { return IeftExptession;
}
public void setLeftExpression(Expression I eft Expressi on) { this .IeftExpressi on = IeftExpressi on;
I·public String getCastType() { return castType;
}
public void setCastType(String castType) { this.castType = castT > pe
}
@Override
public String toString() {
return "cast( " + this.getLeftExpression() + " as " +
this.getCastType() +
}
}第三步数据库脚本解析器解析接收到的数据库脚本,获得脚本中的相关数据以生成SQL树。以下面的SQL为例INSERT INTO targetTable(ent_id,ent—nbr,ent—name,stat_cycle, city_id, cust_grp_type, cust_grp—type—name, disc—id, disc—code, disc—name, eff—date, exp—date, contacter,conphone, cust_address, stat_date, state, create_date, mod—staff—id, mod—date, remark)SELECT a. cust_id,b. cust—nbr,b. cust—name,a. stat_cycle, a. city_id,
b.strat—grp—dl,(CASE WHEN b. strat_grp_dl = ’01,THEN ’ 政企’ ELSE ’公众 ’ END) group_cust_type—name,a. disc_id,d. disc_code,d. disc—name,a. open_date,a. limit_date,c. linkman, c. phone, c. detail, now (), ’ S0A’,now (),
c.modi_staff_id, c. modi_date, ’ ss’ FROM
n (SELECT stat—cycle,city—id,cust—id,disc—id,MIN(open—date) open—date, MIN(limit_date) limit_date FROM aa GROUP BY stat_cycle,city_id,cust_id,disc—id) a,(SELECT DISTINCT cu s t _ i d,c i t y_ i d, cust_nbr, cust_name,strat—grp—dl, address_id FROM bb where bmemememe = I) b,
cc c,(SELECT city—id,disc—id,MIN(disc—code) disc—code,MIN(disc—name)disc_name FROM (select ddd. city_id, ddd. disc_id,sum(ddd. disc_code_code +meTable. code) disc_code,max(disc—name) disc—name from ddd, meTable where ddd.num >10) ddGROUP BY city—id,disc—id) dWHERE a. city—id=b. city—id and a. cust—id = b. cust—idAND b. city—id=c. city—id and b. address—id = c. address—id
AND a. city—id=d. city—id and a. disc—id = d. disc—codeAND A. stat—cycle = $ {DAY} and A. city—id = $ {CITY};生成的SQL树如图2所示。第四步根据生成的SQL树,查找获得源数据和目标数据的影响关系并输出结果。以上述SQL 语句中的 disc—code 为例,其目标为 targetTable. disc—code,来源于 ddd. disc—code 和 meTable. disc—code,转换规则为 min(sum(ddd. disc—code—code+meTable. disc—code)),其影响关系是 ddd. num 只会会影响 targetTable. disc—code中的数据,而 aa. city—id,bb. city—id,bb. address—id,cc. address—id,ddd. dies—id,aa. disc—code会对整个targetTable的整个数据产生影响,影响关系的分析不止上述部分,仅提供事例说明问题。本发明提供的一种基于数据库脚本解析的数据追溯和数据影响关系的分析方法,以SQL/99的标准为基础,对GreenPlum数据库实现的SQL进行扩展,可以支持GreenPlum数据库实现的SQL,不仅可以实现数据脚本的解析,并且可以提供根据解析信息实现数据追溯及数据之间影响关系。借此可以帮助IT相关人员及时、准确、快捷地掌握数据模型的内容及数据关系。上述说明示出并描述了本发明的一个优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
权利要求
1.一种基于数据库脚本解析的数据追溯和数据影响关系的分析方法,其特征在于,包括 步骤I、根据SQL标准建立基于JavaCC的数据库脚本的词法和语法文件; 步骤2、根据建立的词法和语法文件,生成数据库脚本解析器,并创建相关Java类;步骤3、数据库脚本解析器解析接收到的数据库脚本,获得脚本中的相关数据以生成SQL 树; 步骤4、根据生成的SQL树,查找获得源数据和目标数据的影响关系。
2.如权利要求I所述的方法,其特征在于,所述步骤I具体包括根据SQL/99标准定义的数据库脚本语句,建立基于JavaCC的数据库脚本的词法和语法文件。
3.如权利要求I所述的方法,其特征在于,所述步骤2具体包括 根据建立的词法和语法文件,生成数据库脚本解析器; 基于数据库脚本的结构和类型构造相关Java类。
4.如权利要求3所述的方法,其特征在于,所述基于数据库脚本的结构和类型构造相关Java类,用于保存数据库脚本解析器在解析SQL脚本过程中生成的相关信息。
5.如权利要求I所述的方法,其特征在于,所述步骤3具体包括 数据库脚本解析器根据SQL脚本语法解析接收到的数据库脚本,获得脚本中的相关数据; 根据获取的相关数据生成SQL树; 将解析出来的SQL相关元素赋值给Java类。
6.如权利要求I所述的方法,其特征在于,所述步骤4具体包括查找生成的SQL树,从中找到与目标字段对应的源字段、转换关系及影响关系的字段并输出结果。
全文摘要
本发明提供一种基于数据库脚本解析的数据追溯和数据影响关系的分析方法,包括步骤1、根据SQL标准建立基于JavaCC的数据库脚本的词法和语法文件;步骤2、根据建立的词法和语法文件,生成数据库脚本解析器,并创建相关Java类;步骤3、数据库脚本解析器解析接收到的数据库脚本,获得脚本中的相关数据以生成SQL树;步骤4、根据生成的SQL树,查找获得源数据及其和目标数据的影响关系。通过本发明提供的一种基于数据库脚本解析的数据追溯和数据影响的分析方法,可以实现数据脚本解析,并且可以根据解析信息实现数据追溯及数据之间影响关系。
文档编号G06F17/30GK102750374SQ20121020526
公开日2012年10月24日 申请日期2012年6月20日 优先权日2012年6月20日
发明者王东松 申请人:深圳市远行科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1