通过数据库运行记录建立物理模型的方法及系统与流程

文档序号:11276570阅读:289来源:国知局
本发明涉及物理模型建立领域,尤其是通过数据库运行记录建立物理模型的方法及系统。
背景技术
::目前,数据库设计有较为规范的设计流程,即需求分析、概念结构设计、逻辑结构设计和物理结构设计。元建模技术应用于数据库设计后,改变了这种传统设计流程,新设计流程分为元建模、领域建模、生成器设计和物理数据库生成。数据库元建模和生成器设计由精通计算机的专业人员来完成,领域建模和物理数据库生成主要由领域专家负责。由于领域专家精通领域业务并熟知需求,所以,新设计流程可以省去传统设计流程中的需求分析环节。领域建模相当于传统设计流程中的概念结构设计,由于有了生成器,逻辑结构设计和物理结构设计可以自动完成。在血缘分析中需要明确数据处理结果并能追溯来源,这些依赖于可靠的数据库物理模型,目前的大多数的解析物理模型需要在数据库系统中存在强关联的外键关系才能进行解析,而在真正的生产环境中,大多数的表关系都是逻辑关联,无法只通过元数据建立物理模型。技术实现要素:本发明的目的在于克服现有技术的不足,提供通过数据库运行记录建立物理模型的方法及系统实现了,对查询语句的解析并获得关联关系,通过元数据建立模型。本发明的目的是通过以下技术方案来实现的:通过数据库运行记录建立物理模型的方法,其特征在于,具体包括如下步骤:s001获取查询语句:从数据库访问记录,以及从数据库日志获取查询语句;s002提取查询主体:依据sql解析的步骤策略,避开干扰,从复杂的sql语句中提取中查询的主体语句;s003获取源表:找到from后面的源表以及子查询中的涉及的表;s004获取关联信息,并分别输出关联关系的map数组;s005得到单次解析的最终关联信息。进一步限定,所述的提取查询主体,具体包括如下子步骤:s201去除不能直接反映表与表之间的弱关联关系;s202去掉不能反映表与表之间的关系的无关从句;s203去掉查询语句中的in或notin部分;s204将查询语句中的union或unionall拆散为多个语句;s205将查询语句中where子句中的常值去掉。进一步限定,所述的提取查询主体,可以同时对至少一个sql语句进行查询主体的提取。进一步限定,所述的获取源表,通过selectfrom配对,解析每个selectfrom所在的层次,分层次进行解析并分别得到不同层次的表。进一步限定,所述的获取源表,还包括将不同层次的表的集用数据结构进行再处理。进一步限定,所述的获取关联信息,包括:获取每个表的表字段关系,输出关联关系的第一map数组。获取元数据信息里的强关联信息和主外键关系,输出关联关系的第二map数组。进一步限定,所述的获取每个表的表字段关系是根据实际数据库来进行寻找。进一步限定,所述的得到单次解析的最终关联信息具体包括:s501将第一map数组、第二map数组进行踢重整合得到单次关联关系的map数组;s502将通过多线程同步解析sql语句得到的map数组添加到上述map数组中得到最终的map数组;s503解析该map数组,得到表的关联关系;s504结合元数据,补全字段,得到最终的物理模型。进一步限定,数据库运行需要的元数据信息与数据库访问记录;所述的数据库访问记录具体包括增、删、改和查这四种逻辑;解析这四种逻辑的步骤方法一致。通过数据库运行记录建立物理模型的系统,其特征在于,它包括:查询语句获取模块、查询主体提取模块、源表获取模块、关联信息获取模块和数组整合模块;所述的查询语句获取模块从数据库访问记录,以及从数据库日志获取查询语句;所述的查询主体提取模块依据sql解析的步骤策略,避开干扰,从复杂的sql语句中提取中查询的主体语句;所述的源表获取模块找到from后面的源表以及子查询中的涉及的表;所述的关联信息获取模块获取关联信息,并分别输出关联关系的map数组;所述的数组整合模块将第一map数组、第二map数组进行踢重整合得到单次关联关系的map数组,将通过多线程同步解析sql语句得到的map数组添加到上述map数组中得到最终的map数组本发明的有益效果是:本发明通过对查询语句的解析提取查询主体,获得关联关系,利用元数据建立了可靠的物理模型,能够在血缘分析中明确数据处理结果并能追溯来源。附图说明图1为通过数据库运行记录建立物理模型的方法流程图;图2为通过数据库运行记录建立物理模型的系统框架图。具体实施方式下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。在物理模型中最主要的参数是表,字段,以及表字段的关联关系。数据库运行记录主要包括两方面的记录:(1)数据库运行需要的元数据信息,具体包括:元数据信息包含了表信息,字段信息,主外键关系信息。(2)数据库访问记录,具体包括:增(insert)、删(delete)、改(update)和查(select)这些记录反映了业务逻辑关系。解析增(insert)删(delete)改(update)查(select)的逻辑基本一致,主要以解析访问的表和条件关系为主。实施例1:对查(select)语句进行解析;如图1所示,具体的过数据库运行记录建立物理模型的方法包括:s001获取查询语句:从数据库访问记录,以及从数据库日志获取查询语句。s002提取查询主体:依据sql解析的步骤策略,从复杂的sql语句中提取中查询的主体语句,避开干扰,该步骤为该方法的核心,基于的是对sql引擎解析原理的理解;查询主体是类似如下结构:selectcolumn1,column2…fromtable1,table2,…tablenwheretable1.column1=table2.column2andtable2.column2=table3.column3…优选的,column可以是具体的字段,也可以是一个半连接;优选的,table可以是某个具体的表,也可以是一段子查询结果;s201去掉弱关联关系:>、>=、<、<=、betweenand,这些关系并不能直接反映表与表之间的关系,对提炼关系无直接用处,为了简明解析流程,直接去掉。s202去掉与关系无关的从句:orderby、limit、groupby、having等,这些关系同样不能反映表与表之间的关系,更多的是逻辑处理,直接去掉。s203去掉in/notin对查询主体的影响:这部分可能有价值,但是为了达到最好的解析,去掉此部分。s204拆解union/unionall为多个语句,union/unionall实际上是多个查询结果的组合,每个组合对象有自己独立的业务逻辑。s205去掉where子句中的常值:=某个具体的值,这种关系在解析关联关系时没有任何意义,并会对解析造成干扰,直接去掉。s003获取源表:找到from后面的源表以及子查询中的涉及的表。通过selectfrom配对,解析每个selectfrom所在的层次,分层次解析:s301得到的层次一的表这其中并不包含子查询,具体为:customer、customer_address、customer_demographics、(selecthd_demo_skfromhouseholddemographics)、income_band、store_returns;s302得到层次二的表,具体为:household_demographics;将上述的表的集通过如表1所示的数据结构处理,其中level代表层次,table_id唯一标识符,parent_id代表继承的子查,table_name表名,table_type表类型(源表1or子查询2);表1s004获取每个表的表字段关系,具体为:s401由于每种数据库存储元数据的表都不同,此步骤是根据实际数据库来寻找。如表2所示,column_name列名,以mysql为例,表名来自information_schema.`tables`,字段名来自表information_schema.`columns`表2如表3所示,以等号为例找到where后面的所有关联条件以及子查询的所有关联条件。为避免重复解析,关联关系直接解析where后面的关联关系,顺序则是从左向右依次解析,并输出关联关系的第一map数组。表3s402获取元数据信息里的强关联信息,主外键关系,具体为:如表4所示,column_name代表字段名称,refre_table_name代表:关联表名称,ref_column_name代表关联表字段名称;由于每种数据库存储元数据的表都不同,根据实际数据库来寻找。以mysql为例,为innodb_sys_foreign_cols,假设我们找到customer的c_current_cdemo_sk和customer_demographics的cd_demo_sk存在强关联关系,输出关联关系的第二map数组。table_namecolumn_namerefre_table_nameref_column_namecustomerc_current_cdemo_skcustomer_demographicscd_demo_sk表4s005集合上述的输出关联信息,进行踢重整合,得到单次解析的最终关联信息,通过多线程同步解析查询语句后,将解析得到的map关系添加到到上述map关系中,具体如表5所示。update,delete,insert与insert基本一致,旨在解析where条件以及from的表。当所有的语句解析后,将得到一个最终的map数组,解析该map数组,可以得到相关表的关联关系。结合元数据,补全字段,可以得到最终的物理模型。表5如图2所示,通过数据库运行记录建立物理模型的系统,它包括:查询语句获取模块、查询主体提取模块、源表获取模块、关联信息获取模块和数组整合模块;所述的查询语句获取模块从数据库访问记录,以及从数据库日志获取查询语句;所述的查询主体提取模块依据sql解析的步骤策略,避开干扰,从复杂的sql语句中提取中查询的主体语句;所述的源表获取模块找到from后面的源表以及子查询中的涉及的表;所述的关联信息获取模块获取关联信息,并分别输出关联关系的map数组;所述的数组整合模块将第一map数组、第二map数组进行踢重整合得到单次关联关系的map数组,将通过多线程同步解析sql语句得到的map数组添加到上述map数组中得到最终的map数组。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的方法、系统和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本发明所揭露的方法、系统和模块,可以通过其它的方式实现。例如,以上所描述的实施例仅是示意性的,例如,所述模块的划分,可以仅仅是一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以说通过一些接口,系统或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。所述分立部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例的方案目的。另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、制度存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1