CN107402920B - 确定关系数据库表关联复杂度的方法和装置 - Google Patents

确定关系数据库表关联复杂度的方法和装置 Download PDF

Info

Publication number
CN107402920B
CN107402920B CN201610329065.XA CN201610329065A CN107402920B CN 107402920 B CN107402920 B CN 107402920B CN 201610329065 A CN201610329065 A CN 201610329065A CN 107402920 B CN107402920 B CN 107402920B
Authority
CN
China
Prior art keywords
association
database table
data structure
marking
complexity
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
Application number
CN201610329065.XA
Other languages
English (en)
Other versions
CN107402920A (zh
Inventor
许文靖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201610329065.XA priority Critical patent/CN107402920B/zh
Publication of CN107402920A publication Critical patent/CN107402920A/zh
Application granted granted Critical
Publication of CN107402920B publication Critical patent/CN107402920B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/253Grammatical analysis; Style critique
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/284Lexical analysis, e.g. tokenisation or collocates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种确定关系数据库表关联复杂度的方法和装置,能够根据基于关系数据库应用系统的日志或配置文件得到应用系统的表关联的复杂程度,不仅为应用系统的质量管理提供量化支持;也为应用系统的优化和质量管理提供客观的决策依据。本发明的方法包括:获取基于关系数据库的应用系统的日志文件和/或配置文件,并对获取的文件中的每条记录做分词以得到多个词;根据预先保存的表数据词典对每条记录中的多个词进行筛选以得到每条记录的分词序列;根据每一个所述分词序列生成对应于该分词序列的关联指纹,再根据所得到的关联指纹生成关联图数据结构;计算关联图数据结构的复杂度,以及将该关联图数据结构的复杂度作为关系数据库表的关联复杂度。

Description

确定关系数据库表关联复杂度的方法和装置
技术领域
本发明涉及计算机及其软件技术领域,特别涉及一种确定关系数据库表关联复杂度的方法和装置。
背景技术
基于关系数据库的应用系统开发通常采用三层(数据访问层,业务逻辑层和展示层)或多层(业务逻辑层拆分成多个子层)架构,其中数据访问层主要承担基本的数据访问逻辑(增删改查)。在实际应用中,基于关系数据库的应用系统运行的时间越久,新增功能和漏洞修复的次数越多,SQL数据库关联就越多,数据访问层的复杂度越来越高,系统就越难以维护。
可度量的才是可管理的,只有明确了SQL数据库关联复杂程度,才能够及时识别到数据访问层的可维护性恶化并找到改进方案。圈复杂度是一种代码复杂度的衡量标准。在软件测试的概念里,圈复杂度“用来衡量一个模块判定结构的复杂程度,数量上表现为独立线性路径条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系”。圈复杂度是以图论为基础的,通用的公式是V(G)=e–n+2,e代表在控制流图中的边的数量(对应代码中顺序结构的部分),n代表在控制流图中的节点数量,包括起点和终点。
现有的复杂度计算方法虽然可用于解决程序复杂度度量的问题,但不能直接用于评估表关联复杂度,无法提供数据库表关联复杂程度的量化结果,更无法对系统优化和质量管理提供客观的决策依据。
发明内容
有鉴于此,本发明提供一种确定关系数据库表关联复杂度的方法和装置,能够根据基于关系数据库应用系统的日志或配置文件中提取数据库表的关联指纹,并基于圈复杂度算法度量应用系统的表关联的复杂程度,不仅为应用系统的质量管理提供量化支持,提供数据库表关联复杂程度的量化结果,提供数据库表关联复杂库的定期报告;而且为应用系统的优化和质量管理提供客观的决策依据。
为实现上述目的,根据本发明的一个方面,提供了一种确定关系数据库表关联复杂度的方法。
本发明的确定关系数据库表关联复杂度的方法包括:获取基于关系数据库的应用系统的日志文件和/或配置文件,并对获取的文件中的每条记录做分词以得到多个词;根据预先保存的表数据词典对所述每条记录中的所述多个词进行筛选以得到每条记录的分词序列;所述表数据库词典包括数据库表名和预设的语法关键词;根据每一个所述分词序列生成对应于该分词序列的关联指纹,再根据所得到的关联指纹生成关联图数据结构;计算所述关联图数据结构的复杂度,以及将该关联图数据结构的复杂度作为所述关系数据库表的关联复杂度。
可选地,所述获取系统中的日志文件和/或配置文件的步骤之前,还包括:获取数据库中的数据库表名;将所述数据库表名和预设的语法关键词按照设定的格式进行保存以得到表数据词典。
可选地,根据预先保存的表数据词典对所述每条记录中的词进行筛选以得到每条记录的分词序列的步骤包括:将每条记录中的词与所述表数据词典中的词进行比对,将所有存在于所述表数据词典中的词作为该条记录的分词序列。
可选地,根据每一个分词序列生成对应于该分词序列的关联指纹的步骤包括:查找分词序列中的标示关联开始的语法关键词和标示关联结束的语法关键词;根据分词序列每一对标示关联开始的语法关键词和标示关联结束的语法关键词之间的数据库表名生成该分词序列的关联指纹。
可选地,根据分词序列每一对标示关联开始的语法关键词和标示关联结束的语法关键词之间的数据库表名生成该分词序列的关联指纹的步骤包括:将分词序列的第一对标示关联开始的语法关键词和标示关联结束的语法关键词之间所包括的数据库表名去重,然后按照数据库表名的先后顺序记录去重后数据库表名之间的关联关系以得到该分词序列的子关联指纹;将分词序列的第二对标示关联开始的语法关键词和标示关联结束的语法关键词之间所包括的数据库表名依次和所述子关联指纹中的数据库表名进行比对,并且在该数据库表名与所述子关联指纹中的数据库表名不重合的情况下记录该数据库表名与所述子关联指纹中处于最后的数据库表名之间的关联关系;按照标示关联开始的语法关键词和标示关联结束的语法关键词出现的顺序处理该分词系列中剩余标示关联开始的语法关键词和标示关联结束的语法关键词之间所包括的数据库表名,从而得到该分词序列的关联指纹。
可选地,根据所得到的关联指纹生成关联图数据结构的步骤包括:统计所有分词序列的关联指纹中的数据库表名,将该数据库表名去重,将去重后剩余的数据库表名记为关联图数据结构的顶点;以及将所述剩余的数据库表名之间的关联关系记为关联图数据结构的边,从而得到关联图数据结构。
可选地,计算所述关联图数据结构的复杂度的步骤包括:统计所述关联图数据结构中所包括的顶点和边的个数;根据公式V(G)=e–n+2计算关联图数据结构的复杂度;其中e为关联图数据结构的边的个数;n为关联图数据结构的顶点的个数;V(G)为关联图数据结构的复杂度。
根据本发明的另一个方面,提供了一种确定关系数据库表关联复杂度的装置。
本发明的确定关系数据库表关联复杂度的装置包括:获取模块,用于获取基于关系数据库的应用系统的日志文件和/或配置文件,并对获取的文件中的每条记录做分词以得到多个词;筛选模块,用于根据预先保存的表数据词典对所述每条记录中的所述多个词进行筛选以得到每条记录的分词序列;所述表数据库词典包括数据库表名和预设的语法关键词;生成模块,用于根据每一个所述分词序列生成对应于该分词序列的关联指纹,再根据所得到的关联指纹生成关联图数据结构;计算模块,用于计算所述关联图数据结构的复杂度,以及将该关联图数据结构的复杂度作为所述关系数据库表的关联复杂度。
可选地,还包括数据词典生成模块,用于获取数据库中的数据库表名,然后将所述数据库表名和预设的语法关键词按照设定的格式进行保存以得到表数据词典。
可选地,所述筛选模块还用于:将每条记录中的词与所述表数据词典中的词进行比对,将所有存在于所述表数据词典中的词作为该条记录的分词序列。
可选地,所述生成模块还用于查找分词序列中的标示关联开始的语法关键词和标示关联结束的语法关键词,然后根据分词序列每一对标示关联开始的语法关键词和标示关联结束的语法关键词之间的数据库表名生成该分词序列的关联指纹。
可选地,所述生成模块还用于:将分词序列的第一对标示关联开始的语法关键词和标示关联结束的语法关键词之间所包括的数据库表名去重,然后按照数据库表名的先后顺序记录去重后数据库表名之间的关联关系以得到该分词序列的子关联指纹;将分词序列的第二对标示关联开始的语法关键词和标示关联结束的语法关键词之间所包括的数据库表名依次和所述子关联指纹中的数据库表名进行比对,并且在该数据库表名与所述子关联指纹中的数据库表名不重合的情况下记录该数据库表名与所述子关联指纹中处于最后的数据库表名之间的关联关系;按照标示关联开始的语法关键词和标示关联结束的语法关键词出现的顺序处理该分词系列中剩余标示关联开始的语法关键词和标示关联结束的语法关键词之间所包括的数据库表名,从而得到该分词序列的关联指纹。
可选地,所述生成模块还用于统计所有分词序列的关联指纹中的数据库表名,将该数据库表名去重,将去重后剩余的数据库表名记为关联图数据结构的顶点;以及将所述剩余的数据库表名之间的关联关系记为关联图数据结构的边,从而得到关联图数据结构。
可选地,所述计算模块还用于:统计所述关联图数据结构中所包括的顶点和边的个数;根据公式V(G)=e–n+2计算关联图数据结构的复杂度;其中e为关联图数据结构的边的个数;n为关联图数据结构的顶点的个数;V(G)为关联图数据结构的复杂度。
根据本发明实施例的再一方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明所提供的确定关系数据库表关联复杂度的方法。
根据本发明实施例的再一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明所提供的确定关系数据库表关联复杂度的方法。
根据本发明的技术方案,由于能够根据基于关系数据库应用系统的日志或配置文件中提取数据库表的关联指纹,并基于圈复杂度算法度量应用系统的表关联的复杂程度,不仅能为应用系统的质量管理提供量化支持,提供数据库表关联复杂程度的量化结果,提供数据库表关联复杂库的定期报告;而且为应用系统的优化和质量管理提供客观的决策依据。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种确定关系数据库表关联复杂度的装置的示意图;
图2是根据本发明实施例的一种确定关系数据库表关联复杂度的方法的示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的一种确定关系数据库表关联复杂度的装置的示意图。如图1所示,本发明实施例的确定关系数据库表关联复杂度的装置10主要包括获取模块11、筛选模块12、生成模块13、以及计算模块14;获取模块11用于获取基于关系数据库的应用系统的日志文件和/或配置文件,并对获取的文件中的每条记录做分词以得到多个词;筛选模块12用于根据预先保存的表数据词典对所述每条记录中的所述多个词进行筛选以得到每条记录的分词序列;所述表数据库词典包括数据库表名和预设的语法关键词;生成模块13用于根据每一个所述分词序列生成对应于该分词序列的关联指纹,再根据所得到的关联指纹生成关联图数据结构;计算模块14用于计算所述关联图数据结构的复杂度,以及将该关联图数据结构的复杂度作为所述关系数据库表的关联复杂度;其中,预设的语法关键词可以为SQL语法关键词。
本发明实施例的确定关系数据库表关联复杂度的装置10还可包括数据词典生成模块(图中未示出),用于获取数据库中的数据库表名,然后将所述数据库表名和预设的SQL语法关键词按照设定的格式进行保存以得到表数据词典。
本发明实施例的确定关系数据库表关联复杂度的装置10的筛选模块12还可用于:将每条记录中的词与所述表数据词典中的词进行比对,如果该词存在于所述表数据词典中,则保留该词;否则,删除该词;然后将所述记录中剩余的词作为该条记录的分词序列。
本发明实施例的确定关系数据库表关联复杂度的装置10的生成模块13还可用于查找分词序列中的标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词,然后根据分词序列每一对标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词之间的数据库表名生成该分词序列的关联指纹。
本发明实施例的确定关系数据库表关联复杂度的装置10的生成模块13还可用于:将分词序列的第一对标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词之间所包括的数据库表名去重,然后按照数据库表名的先后顺序记录去重后数据库表名之间的关联关系以得到该分词序列的子关联指纹;将分词序列的第二对标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词之间所包括的数据库表名依次和所述子关联指纹中的数据库表名进行比对,并且在该数据库表名与所述子关联指纹中的数据库表名不重合的情况下记录该数据库表名与所述子关联指纹中处于最后的数据库表名之间的关联关系;按照标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词出现的顺序处理该分词系列中剩余标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词之间所包括的数据库表名,从而得到该分词序列的关联指纹。
本发明实施例的确定关系数据库表关联复杂度的装置10的生成模块13还可用于统计所有分词序列的关联指纹中的数据库表名,将该数据库表名去重,将去重后剩余的数据库表名记为关联图数据结构的顶点;以及将所述剩余的数据库表名之间的关联关系记为关联图数据结构的边,从而得到关联图数据结构。
本发明实施例的确定关系数据库表关联复杂度的装置10的计算模块还可用于:统计所述关联图数据结构中所包括的顶点和边的个数;根据公式V(G)=e–n+2计算关联图数据结构的复杂度;其中e为关联图数据结构的边的个数;n为关联图数据结构的顶点的个数;V(G)为关联图数据结构的复杂度。
图2是根据本发明实施例的一种确定关系数据库表关联复杂度的方法的示意图。如图2所示,本发明实施例的确定关系数据库表关联复杂度的方法的执行主体可以是图1中所提到的确定关系数据库表关联复杂度的装置10,该方法主要包括如下步骤S20至S23。
步骤S20:获取基于关系数据库的应用系统的日志文件和/或配置文件,并对获取的文件中的每条记录做分词以得到多个词。在该步骤中所提到的日志文件包括系统日志、SQL日志文件、以及其他包含标准SQL(ANSI SQL92)语句的文本文件等;所提到的配置文件包括配置有SQL的XML文件和程序源码等;在获取到上述的日志文件和/或配置文件后,确定关系数据库表关联复杂度的装置10对文件中的每条记录做分词,从而得到每条分词记录所包括的多个词。
在步骤S20之前,确定关系数据库表关联复杂度的装置10根据数据库中的数据生成表数据词典;即,确定关系数据库表关联复杂度的装置10首先获取关系数据库中的数据库表名,再将所述数据库表名和预设的SQL语法关键词按照设定的格式进行保存以得到表数据词典;其中,表数据词典包括库表元数据词和SQL语法关键词两部分;库表元数据词可以通过人工录入或JDBC接口从关系数据库中抓取库表元数据,并且至少包含表名和视图名;SQL语法关键词至少包括from,where;其中,可设定语法关键词from用于标示表关联的起始,设定语法关键词where用于标示表关联的结束;此处所提到的关系数据库指的是支持ANSI SQL92 SQL标准的数据库,例如oracle、db2、informix、以及mysql等;如果关系数据库中的数据库表名进行了更新,比如新增了1张表,那么,确定关系数据库表关联复杂度的装置10重新获取关系数据库中的数据库表名以更新表数据词典。
步骤S21:根据预先保存的表数据词典对所述每条记录中的所述多个词进行筛选以得到每条记录的分词序列。在该步骤中,确定关系数据库表关联复杂度的装置10根据预先所保存的表数据词典对步骤S20中得到的每条记录中的词进行筛选,即将每条记录中的词与表数据词典中的词进行比对,如果该词存在于所述表数据词典中,则保留该词;否则,删除该词;然后再将所述记录中剩余的词作为该条记录的分词序列。
步骤S22:根据每一个所述分词序列生成对应于该分词序列的关联指纹,再根据所得到的关联指纹生成关联图数据结构。在该步骤中,确定关系数据库表关联复杂度的装置10查找分词序列中的标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词;比如,设定语法关键词from用于标示表关联的起始,设定语法关键词where用于标示表关联的结束;
下面以具体的两个分词序列来进行说明,假设在系统日志文件中有2条SQL日志:
INFO-2016-02-23 13:44:33.094com.demo.Callback::DelEvent–se lect name,code from T_1,T_2as f where T_1.code=f.code and exists(select 1from T_3,T_1as g where T_3.type=f.code and T_3.flag=g.flag)execute time:257ms;
INFO-2016-02-23 13:45:08.432com.demo.Callback::DelEvent–se lect count(*)from T_2,T_4where T_2.group=T_4.groupcode execute time:549ms。
上述两条日志经过表数据词典筛选后得到的分词序列分别为:
分词序列1:[from,T_1,T_2,where,T_1,from,T_3,T_1,where,T_3,T_3];
分词序列2:[from,T_2,T_4,where,T_2,T_4]。
首先,确定关系数据库表关联复杂度的装置10通过查找分词序列中的SQL语法关键词from和where,从而确定每一对标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词之间的数据库表名;通过查找序列1中包括两对标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词,第一对语法关键词之间的数据库表名包括T_1和T_2;第二对语法关键词之间的数据库表名包括T_3和T_1;序列2中包括一对标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词,语法关键词之间的数据库表名包括T_2和T_4;
其次,确定关系数据库表关联复杂度的装置10根据分词序列每一对标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词之间的数据库表名生成该分词序列的关联指纹
对于分词序列1来说,将分词序列1的第一对标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词之间所包括的数据库表名去重,由于第一对语法关键词之间包括T_1和T_2,没有重复的数据库表名,只需按照数据库表名的先后顺序记录数据库表名之间的关联关系,即记录数据库表名T_1和T_2之间的关联关系,从而得到分词序列1的子关联指纹;然后将分词序列1的第二对标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词之间所包括的数据库表名依次和所述子关联指纹中的数据库表名进行比对,即依次将数据库表名T_3和T_1子关联指纹中的数据库表名进行比对,将数据库表名T_3与子关联指纹中的数据库表名进行比对时,与数据库表名T_1和T_2都不重合,因而记录数据库表名T_3与子关联指纹中处于最后的数据库表名(即数据库表名T_2)之间的关联关系,再将将数据库表名T_1与子关联指纹中的数据库表名进行比对时,由于T_1与子关联指纹中的T_1重合,因而不作处理;由于分词序列1中所包括的数据库表名已处理完成,因而得到了分词序列1的关联指纹;
对于分词序列2,将分词序列2的标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词之间所包括的数据库表名去重,由于第一对语法关键词之间包括T_2和T_4,没有重复的数据库表名,只需按照数据库表名的先后顺序记录数据库表名之间的关联关系,即记录数据库表名T_2和T_4之间的关联关系,从而得到分词序列2的关联指纹;
如果分词序列中包括两对以上标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词,则根据处理第二对标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词之间包括的数据库表名的方法,同时按照标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词出现的顺序处理该分词系列中剩余标示关联开始的SQL语法关键词和标示关联结束的SQL语法关键词之间所包括的数据库表名,从而得到分词序列的关联指纹。
最后,确定关系数据库表关联复杂度的装置10根据所有分词序列的关联指纹得到关联图数据结构。在该实施例中,即统计分词序列1和分词序列2的关联指纹中的数据库表名,并将两个关联指纹中所包括的数据库表名去重;将去重后剩余的数据库表名(即T_1、T_2、T_3和T_4)记为关联图数据结构的顶点;以及将所述剩余的数据库表名之间的关联关系记为关联图数据结构的边(即T_1和T_2之间的关联关系记为关联图数据结构的一条边、T_2和T_3之间的关联关系记为关联图数据结构的一条边、T_2和T_4之间的关联关系记为关联图数据结构的一条边),从而得到关联图数据结构。
步骤S23:计算所述关联图数据结构的复杂度,以及将该关联图数据结构的复杂度作为所述关系数据库表的关联复杂度。在该步骤中,确定关系数据库表关联复杂度的装置10统计步骤S22中关联图数据结构中所包括的顶点和边的个数(对于本实施例来说,关联图数据结构中包括4个顶点和3条边),因而,根据公式V(G)=e–n+2计算得到的本实施例的关联图数据结构的复杂度为1;其中e为关联图数据结构的边的个数;n为关联图数据结构的顶点的个数;V(G)为关联图数据结构的复杂度;因而,本发明实施例技术方案通过采集日志和配置文件得到了可以度量在运行的基于关系数据库的系统的库表关联复杂度。
根据本发明实施例的技术方案,由于能够根据基于关系数据库应用系统的日志或配置文件中提取数据库表的关联指纹,并基于圈复杂度算法度量应用系统的表关联的复杂程度,不仅能为应用系统的质量管理提供量化支持,提供数据库表关联复杂程度的量化结果,提供数据库表关联复杂库的定期报告;而且为应用系统的优化和质量管理提供客观的决策依据。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (14)

1.一种确定关系数据库表关联复杂度的方法,其特征在于,包括:
获取基于关系数据库的应用系统的日志文件和/或配置文件,并对获取的文件中的每条记录做分词以得到多个词;
根据预先保存的表数据词典对所述每条记录中的所述多个词进行筛选以得到每条记录的分词序列;所述表数据库词典包括数据库表名和预设的语法关键词;
根据每一个所述分词序列生成对应于该分词序列的关联指纹,再根据所得到的关联指纹生成关联图数据结构;其中,所述关联指纹是标示关联开始的语法关键词和标示关联结束的语法关键词之间的数据库表名之间的关联关系,将数据库表名记为所述关联图数据结构的顶点,将数据库表名之间的关联关系记为所述关联图数据结构的边;
计算所述关联图数据结构的复杂度,以及将该关联图数据结构的复杂度作为所述关系数据库表的关联复杂度。
2.根据权利要求1所述的方法,其特征在于,所述获取系统中的日志文件和/或配置文件的步骤之前,还包括:
获取数据库中的数据库表名;
将所述数据库表名和预设的语法关键词按照设定的格式进行保存以得到表数据词典。
3.根据权利要求1所述的方法,其特征在于,根据预先保存的表数据词典对所述每条记录中的词进行筛选以得到每条记录的分词序列的步骤包括:
将每条记录中的词与所述表数据词典中的词进行比对,将所有存在于所述表数据词典中的词作为该条记录的分词序列。
4.根据权利要求1所述的方法,其特征在于,根据每一个分词序列生成对应于该分词序列的关联指纹的步骤包括:
查找分词序列中的标示关联开始的语法关键词和标示关联结束的语法关键词;
根据分词序列每一对标示关联开始的语法关键词和标示关联结束的语法关键词之间的数据库表名生成该分词序列的关联指纹。
5.根据权利要求4所述的方法,其特征在于,根据分词序列每一对标示关联开始的语法关键词和标示关联结束的语法关键词之间的数据库表名生成该分词序列的关联指纹的步骤包括:
将分词序列的第一对标示关联开始的语法关键词和标示关联结束的语法关键词之间所包括的数据库表名去重,然后按照数据库表名的先后顺序记录去重后数据库表名之间的关联关系以得到该分词序列的子关联指纹;
将分词序列的第二对标示关联开始的语法关键词和标示关联结束的语法关键词之间所包括的数据库表名依次和所述子关联指纹中的数据库表名进行比对,并且在该数据库表名与所述子关联指纹中的数据库表名不重合的情况下记录该数据库表名与所述子关联指纹中处于最后的数据库表名之间的关联关系;
按照标示关联开始的语法关键词和标示关联结束的语法关键词出现的顺序处理该分词系列中剩余标示关联开始的语法关键词和标示关联结束的语法关键词之间所包括的数据库表名,从而得到该分词序列的关联指纹。
6.根据权利要求1至5中任一项所述的方法,其特征在于,根据所得到的关联指纹生成关联图数据结构的步骤包括:
统计所有分词序列的关联指纹中的数据库表名,将该数据库表名去重,将去重后剩余的数据库表名记为关联图数据结构的顶点;以及将所述剩余的数据库表名之间的关联关系记为关联图数据结构的边,从而得到关联图数据结构。
7.根据权利要求1至5中任一项所述的方法,其特征在于,计算所述关联图数据结构的复杂度的步骤包括:
统计所述关联图数据结构中所包括的顶点和边的个数;
根据公式V(G)=e–n+2计算关联图数据结构的复杂度;其中e为关联图数据结构的边的个数;n为关联图数据结构的顶点的个数;V(G)为关联图数据结构的复杂度。
8.一种确定关系数据库表关联复杂度的装置,其特征在于,包括:
获取模块,用于获取基于关系数据库的应用系统的日志文件和/或配置文件,并对获取的文件中的每条记录做分词以得到多个词;
筛选模块,用于根据预先保存的表数据词典对所述每条记录中的所述多个词进行筛选以得到每条记录的分词序列;所述表数据库词典包括数据库表名和预设的语法关键词;
生成模块,用于根据每一个所述分词序列生成对应于该分词序列的关联指纹,再根据所得到的关联指纹生成关联图数据结构;其中,所述关联指纹是标示关联开始的语法关键词和标示关联结束的语法关键词之间的数据库表名之间的关联关系,将数据库表名记为所述关联图数据结构的顶点,将数据库表名之间的关联关系记为所述关联图数据结构的边;
计算模块,用于计算所述关联图数据结构的复杂度,以及将该关联图数据结构的复杂度作为所述关系数据库表的关联复杂度。
9.根据权利要求8所述的装置,其特征在于,还包括数据词典生成模块,用于获取数据库中的数据库表名,然后将所述数据库表名和预设的语法关键词按照设定的格式进行保存以得到表数据词典。
10.根据权利要求8所述的装置,其特征在于,所述筛选模块还用于:将每条记录中的词与所述表数据词典中的词进行比对,将所有存在于所述表数据词典中的词作为该条记录的分词序列。
11.根据权利要求8所述的装置,其特征在于,所述生成模块还用于查找分词序列中的标示关联开始的语法关键词和标示关联结束的语法关键词,然后根据分词序列每一对标示关联开始的语法关键词和标示关联结束的语法关键词之间的数据库表名生成该分词序列的关联指纹。
12.根据权利要求11所述的装置,其特征在于,所述生成模块还用于:
将分词序列的第一对标示关联开始的语法关键词和标示关联结束的语法关键词之间所包括的数据库表名去重,然后按照数据库表名的先后顺序记录去重后数据库表名之间的关联关系以得到该分词序列的子关联指纹;
将分词序列的第二对标示关联开始的语法关键词和标示关联结束的语法关键词之间所包括的数据库表名依次和所述子关联指纹中的数据库表名进行比对,并且在该数据库表名与所述子关联指纹中的数据库表名不重合的情况下记录该数据库表名与所述子关联指纹中处于最后的数据库表名之间的关联关系;
按照标示关联开始的语法关键词和标示关联结束的语法关键词出现的顺序处理该分词系列中剩余标示关联开始的语法关键词和标示关联结束的语法关键词之间所包括的数据库表名,从而得到该分词序列的关联指纹。
13.根据权利要求8至12中任一项所述的装置,其特征在于,所述生成模块还用于统计所有分词序列的关联指纹中的数据库表名,将该数据库表名去重,将去重后剩余的数据库表名记为关联图数据结构的顶点;以及将所述剩余的数据库表名之间的关联关系记为关联图数据结构的边,从而得到关联图数据结构。
14.根据权利要求8至12中任一项所述的装置,其特征在于,所述计算模块还用于:
统计所述关联图数据结构中所包括的顶点和边的个数;
根据公式V(G)=e–n+2计算关联图数据结构的复杂度;其中e为关联图数据结构的边的个数;n为关联图数据结构的顶点的个数;V(G)为关联图数据结构的复杂度。
CN201610329065.XA 2016-05-18 2016-05-18 确定关系数据库表关联复杂度的方法和装置 Active CN107402920B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610329065.XA CN107402920B (zh) 2016-05-18 2016-05-18 确定关系数据库表关联复杂度的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610329065.XA CN107402920B (zh) 2016-05-18 2016-05-18 确定关系数据库表关联复杂度的方法和装置

Publications (2)

Publication Number Publication Date
CN107402920A CN107402920A (zh) 2017-11-28
CN107402920B true CN107402920B (zh) 2020-02-07

Family

ID=60394012

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610329065.XA Active CN107402920B (zh) 2016-05-18 2016-05-18 确定关系数据库表关联复杂度的方法和装置

Country Status (1)

Country Link
CN (1) CN107402920B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108108441A (zh) * 2017-12-21 2018-06-01 新博卓畅技术(北京)有限公司 一种数据库表结构分析方法和系统
CN109325019B (zh) * 2018-08-17 2022-02-08 国家电网有限公司客户服务中心 数据关联关系网络构建方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101145162A (zh) * 2007-10-31 2008-03-19 金蝶软件(中国)有限公司 一种数据库动态查询的方法和系统
CN102289482A (zh) * 2011-08-02 2011-12-21 北京航空航天大学 一种非结构化数据查询方法
US8166074B2 (en) * 2005-11-14 2012-04-24 Pettovello Primo M Index data structure for a peer-to-peer network
CN103593469A (zh) * 2013-11-30 2014-02-19 合一网络技术(北京)有限公司 一种采用互补信息的关联关键词计算方法及装置
CN104021198A (zh) * 2014-06-16 2014-09-03 北京理工大学 基于本体语义索引的关系数据库信息检索方法及装置
CN104424269A (zh) * 2013-08-30 2015-03-18 中国电信股份有限公司 数据血统分析方法与装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8166074B2 (en) * 2005-11-14 2012-04-24 Pettovello Primo M Index data structure for a peer-to-peer network
CN101145162A (zh) * 2007-10-31 2008-03-19 金蝶软件(中国)有限公司 一种数据库动态查询的方法和系统
CN102289482A (zh) * 2011-08-02 2011-12-21 北京航空航天大学 一种非结构化数据查询方法
CN104424269A (zh) * 2013-08-30 2015-03-18 中国电信股份有限公司 数据血统分析方法与装置
CN103593469A (zh) * 2013-11-30 2014-02-19 合一网络技术(北京)有限公司 一种采用互补信息的关联关键词计算方法及装置
CN104021198A (zh) * 2014-06-16 2014-09-03 北京理工大学 基于本体语义索引的关系数据库信息检索方法及装置

Also Published As

Publication number Publication date
CN107402920A (zh) 2017-11-28

Similar Documents

Publication Publication Date Title
Deng et al. The Data Civilizer System.
US11436213B1 (en) Analysis of database query logs
EP2784665B1 (en) Program and version control method
US11294869B1 (en) Expressing complexity of migration to a database candidate
US10061787B2 (en) Unified data model for integration between relational and non-relational databases
US9836389B2 (en) Test data generation utilizing analytics
US10157211B2 (en) Method and system for scoring data in a database
US9104784B2 (en) Detecting multi-column composite key column sets
KR101696338B1 (ko) 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 시스템 및 방법
US10789295B2 (en) Pattern-based searching of log-based representations of graph databases
US20170255709A1 (en) Atomic updating of graph database index structures
US10878000B2 (en) Extracting graph topology from distributed databases
US20130041900A1 (en) Script Reuse and Duplicate Detection
US11487732B2 (en) Database key identification
KR20150080533A (ko) 데이터 저장 시스템에서 데이터 소스 특성화
US9460142B2 (en) Detecting renaming operations
CN110134694B (zh) 一种双活数据库中表数据的快速比对装置及方法
CN104424360A (zh) 用于访问源数据库中的一组数据表格的方法和系统
CN112307124B (zh) 数据库同步验证方法、装置、设备及存储介质
TWI706260B (zh) 基於行動端NoSQL資料庫的索引建立方法及裝置
CN109325062B (zh) 一种基于分布式计算的数据依赖挖掘方法及系统
US20170270153A1 (en) Real-time incremental data audits
KR20150079467A (ko) 계층적으로 참조되는 데이터에서의 충돌을 해결하기 위한 방법 및 시스템
CN107402920B (zh) 确定关系数据库表关联复杂度的方法和装置
US11023449B2 (en) Method and system to search logs that contain a massive number of entries

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