CN106682107B - 数据库表关联关系确定方法及装置 - Google Patents
数据库表关联关系确定方法及装置 Download PDFInfo
- Publication number
- CN106682107B CN106682107B CN201611104662.9A CN201611104662A CN106682107B CN 106682107 B CN106682107 B CN 106682107B CN 201611104662 A CN201611104662 A CN 201611104662A CN 106682107 B CN106682107 B CN 106682107B
- Authority
- CN
- China
- Prior art keywords
- source code
- function
- code file
- determining
- tables
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
Abstract
本申请提供了一种数据库表关联关系确定方法及装置,其中,方法包括:剔除数据库各源码文件中的注释信息;对剔除注释信息后的各源码文件进行函数切分,根据函数切分结果及各源码文件分析得到函数与函数之间的关联关系;对剔除注释信息后的各源码文件进行语句切分,根据语句切分结果、函数切分结果及各源码文件分析得到函数、表及DML操作方式的关联关系;根据函数与函数之间的关联关系,函数、表及DML操作方式的关联关系,分析得到表与表之间关联关系及其密切程度。本申请能够减少数据库表关联关系分析的人力投入,降低分析过程复杂度,准确界定数据库表之间的关联关系,为后续系统架构调整及优化提供基础。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种数据库表关联关系确定方法及装置。
背景技术
随着互联网应用的广泛普及,海量数据的存储和访问已经成为系统设计的瓶颈问题。传统的垂直扩展(提升硬件设备处理能力)的解决方案存在投入昂贵、无法弹性扩展的局限,已不能满足业务快速发展需要。目前业界通用措施是采用数据库分拆(分库、分表)的策略,将数据从单节点数据库分为多个数据库节点。
数据库分拆(分库、分表)一般就是按照某种特定条件,将放在同一数据库的数据分散到多个数据库。目前业界主要有两种方式:一是垂直分拆:按照业务功能,将不同的表分散到不同的数据库,即分库;二是水平分拆:将同一表的数据按照某种规则分散到不同的数据库,即分表。
但在实施分库、分表时,都面临如下问题及挑战:
1、应用端如何方便的从数据库中获取数据,不能因为数据拆分导致应用端存取数据错误或者异常复杂;
2、应用实施分库、分表,如何对应用端程序影响最小;
3、数据库节点扩容时,如何避免或者减少对应用端的影响;
对于数据库分拆(分库、分表)面临的问题,良好的设计才是解决问题的关键。在实施数据库分拆(分库、分表)前,必须充分了解系统业务逻辑和数据库SCHEMA,绘制数据库ER图,结合业务逻辑和表间关系,将业务、表间关联关系密切的表划分到一起。当所有表划分完毕后才能最终确定数据库分库分表方案。
随着系统规模逐渐增大、系统维护使用年限逐渐增长,文档设计与编码实现之间不可避免地会存在脱节、遗漏或描述不一致的情况。由于缺乏完整清晰的文档,维护人员难以直接理解数据库设计,无法准确的分析或界定数据库表之间的关联关系,系统业务逻辑和表间关系的分析梳理工作也将变得异常复杂,且效率低下。
发明内容
本申请提供一种数据库关联关系确定方法及装置,用于解决现有技术中,业务逻辑和表间关联关系分析过程复杂且效率低,数据库表之间关联关系界定精度不高等问题。
为了解决上述技术问题,本申请的一技术方案为提供一种数据库表关联关系确定方法,包括:
剔除数据库各源码文件中的注释信息;
对剔除注释信息后的各源码文件进行函数切分,根据函数切分结果及各源码文件分析得到函数与函数之间的关联关系;
对剔除注释信息后的各源码文件进行语句切分,根据语句切分结果、函数切分结果及各源码文件分析得到函数、表及DML操作方式的关联关系;
根据函数与函数之间的关联关系,函数、表及DML操作方式的关联关系,分析得到表与表之间关联关系及其密切程度。
本申请另一技术方案为提供一种数据库表关联关系确定装置,包括:注释过滤模块,用于剔除数据库各源码文件中的注释信息;
函数切分模块,用于对剔除注释信息后的各源码文件进行函数切分;
函数分析模块,用于根据函数切分结果及各源码文件分析得到函数与函数之间的关联关系;
语句切分模块,用于对剔除注释信息后的各源码文件进行语句切分;
语句分析模块,用于根据语句切分结果、函数切分结果及各源码文件分析得到函数、表及DML操作方式的关联关系;
表与表关联关系分析模块,用于根据函数与函数之间的关联关系,函数、表及DML操作方式的关联关系,分析得到表与表之间关联关系及其密切程度。
本申请通过对源码按照函数、语句级别的粒度进行切分,加以合理的数据库表关联关系分析机制,并引入了注释剔除模式,能够减少数据库表关联关系分析的人力投入,降低分析过程复杂度,准确界定数据库表之间的关联关系,为后续系统架构调整及优化提供基础。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的数据库表关联关系确定方法的流程图;
图2为本申请实施例的剔除数据库各源码文件中的注释信息的流程图;
图3为本申请实施例的对剔除注释信息后的各源码文件进行函数切分的流程图;
图4为本申请实施例的函数与函数之间关联关系分析过程流程图;
图5为本申请实施例的对剔除注释信息后的各源码文件进行语句切分的流程图;
图6为本申请实施例的函数、表及操作方式的关联关系分析过程流程图;
图7为本申请实施例的表与表之间关联关系分析过程流程图;
图8为本申请实施例的数据库表关联关系确定装置结构示意图;
图9为本申请实施例的注释过滤模块结构示意图;
图10为本申请实施例的函数切分模块结构示意图;
图11为本申请实施例的函数分析模块结构示意图;
图12为本申请实施例的语句切分模块结构示意图;
图13为本申请实施例的语句分析模块结构示意图。
具体实施方式
为了使本申请的技术特点及效果更加明显,下面结合附图对本申请的技术方案做进一步说明,本申请也可有其他不同的具体实例来加以说明或实施,任何本领域技术人员在权利要求范围内做的等同变换均属于本申请的保护范畴。
在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“例如”、“示例”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本申请的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
如图1所示,图1为本申请实施例的数据库表关联关系确定方法流程图。本实施例能够通过对各源码文件剔除注释信息后进行函数切分及语句切分,根据切分结果能够精确地分析界定出表之间的关联关系,具有分析成本低、效率高的特点。
具体的,数据库表关联关系确定方法包括:
步骤101:剔除数据库各源码文件中的注释信息。数据库中包括多个源码文件,分别用于实现不用的业务功能。
步骤102:对剔除注释信息后的各源码文件进行函数切分,根据函数切分结果及各源码文件分析得到函数与函数之间的关联关系。
本申请中,通过对各源码文件进行函数切分,能够对函数进行定位(确定函数代码的开始行数及结束行数等)。函数与函数之间的关联关系指的是:源码文件中定义的函数(如函数A)中调用了其他函数(如函数B),则认为函数A与函数B相关联。一具体实施例得到的函数与函数之间的调用关系如表三,具体实施时,可以数据列表的形式进行存储。
步骤103:对剔除注释信息后的各源码文件进行语句切分,根据语句切分结果、函数切分结果及各源码文件分析得到函数、表及DML(Data manipulation language,数据操作语言)操作方式的关联关系。
本申请中,通过对各源码文件进行语句切分,能够对语句进行定位(确定每个语句代码的开始行数、结束行数及语句内容等)。函数、表及操作方式之间的关联关系指的是:函数中对表存在DML操作(插入、删除、更新),则认为函数与表通过DML相关联。一具体实施例得到的函数、表与操作方式之间的关系如表四,具体实施时,可以数据列表的形式进行存储。
步骤104:根据函数与函数之间的关联关系,函数、表及操作方式的关联关系,分析得到表与表之间的关联关系及其密切程度。
表与表之间的关联关系存在两种:第一种指的是对同一函数中涉及的表存在DML操作,则该函数中的各表之间相关联;第二种指的是存在两个相互调用关系的函数中,若两个函数中分别对表存在DML操作,则两个函数中的各表之间相关联。
本实施例在具体实施时,各种关联关系可以以表格的形式进行显示,以便能够在分析过程中第一时间发现数据库设计问题,并进行有针对性的数据库方案调整优化。
本申请一具体实施例中,如图2所示,上述步骤101中剔除数据库各源码文件中的注释信息的过程包括:
步骤201:确定源码的注释格式,根据注释格式提取注释在各源码文件中的开始行数及结束行数。
本领域技术人员可根据编码标准确定注释格式,例如注释格式为/*注释内容*/,实施时,根据注释格式分别确定注释信息起始字符(如“/*”)的行数及结束字符(如“*/”)的行数。
步骤202:将同一注释的开始行数及结束行数之间的信息剔除。实施时,根据注释的开始行数匹配相邻的结束行数,注释的开始行数及匹配到的结束行数之间的内容为注释信息。
需要说明的是,同一文件中可能会存在零到多段注释,需将所有匹配到的注释信息进行剔除。
本申请一具体实施例中,如图3所示,上述步骤102中对剔除注释信息后的各源码文件进行函数切分的过程包括:
步骤301:根据关键字提取各源码文件中的函数名称,关键字如为FUNCTION,可根据函数定义规则确定。
步骤302:根据函数名称提取函数在源码文件中的开始行数及结束行数,根据函数在源码中的开始行数及结束行数对剔除注释信息后的源码文件进行切分得到函数切分结果。
具体实施时,可根据函数格式确定函数的开始行数及结束行数,此外,还可先确定函数的开始行数,接着对函数的开始行数进行升序排列,将下一函数的开始行数做减一处理得到上一函数的结束行数。
以一源码文件为例,经过步骤302的切分后得到的切分结果如表一。
表一:
本申请一具体实施例中,如图4所示,上述步骤102中根据函数切分结果及各源码文件分析得到函数与函数之间的关联关系的过程包括:
步骤401:根据源码文件的文件名在各源码文件中进行遍历,确定源码文件之间的调用关系。通过该步骤能够防止因源码文件中的函数名相同而导致确定的函数之间关系不准确的问题。
步骤402:在调用源码文件中,遍历被调用源码文件中的函数名,确定代码行数。
例如,源码文件1调用了源码文件2,源码文件1切分得到了函数A、函数B及函数C,源码文件2切分得到了函数D、函数E及函数F,则源码文件1为调用源码文件,源码文件2为被调用源码文件,在源码文件1中分别遍历源码文件2中的函数D、函数E及函数F的函数名,确定函数名出现的代码行数。
步骤403:根据代码行数在调用源码文件的函数切分结果中进行检索,确定代码行数属于哪个函数,从而确定函数与函数的调用关系。
继续步骤402中的示例,如函数D在源码文件1中出现的代码行数为60,该代码行数属于函数B(函数B在源码文件1中的行数为40~100),则函数B与函数D之间存在调用关系,由函数B调用函数D。
本申请一具体实施例中,如图5所示,上述步骤103中对剔除注释信息后的各源码文件进行语句切分的过程包括:
步骤501:确定语句结束符格式,根据语句结束符格式在各源码文件中提取包含语句结束符格式的行数得到语句的结束行数;
通常语句结束符为“;”,具体可根据编程规则确定。
步骤502:对于每一源码文件,将语句的结束行数进行升序排列,对上一语句结束行数作加一处理得到下一语句的开始行数。
步骤503:根据语句的开始行数及结束行数对剔除注释信息后的源码文件进行切分得到语句切分结果。
以一源码文件为例,经过步骤503的切分后得到的语句切分结果如表二。
表二:
本申请一具体实施例中,如图6所示,上述步骤103中根据语句切分结果、函数切分结果及各源码文件分析得到函数、表及DML操作方式的关联关系进一步包括:
步骤601:根据表清单在各源码文件中进行遍历,确定文件与表之间的调用关系。
具体实施时,根据表的名称进行遍历。如源码文件1中出现了表一、表二及表三的名称,则源码文件1调用了表一、表二及表三。
步骤602:根据文件与表之间的调用关系确定表所在源码文件的代码行数。
步骤603:从语句切分结果中查找表所在源码文件的代码行数对应的语句,根据DML操作方式关键字确定查找到的语句的DML操作方式。具体的,DML操作方式包括:增加、删除及更改,对应的关键字为INSERT、DELECT及UPDATE。
步骤604:根据函数切分结果确定表所在源码文件的代码行数属于哪个函数。
步骤605:将步骤602至步骤604确定的函数、表及操作方式关联到一起。
本申请一具体实施例中,如图7所示,上述步骤104根据函数与函数之间的关联关系,函数、表及DML操作方式的关联关系,分析得到表与表之间关联关系及其密切程度进一步包括:
步骤701:利用如下规则,根据函数与函数之间的关联关系,函数、表及DML操作方式之间的关联关系确定表与表之间的关联关系:
若同一函数同时对多个表存在DML操作方式,则同一函数中存在DML操作方式的各表之间存在关联关系,若函数与函数之间存在调用关系,则两个函数中存在DML操作方式的表之间存在关联关系。
步骤702:表与表之间每确定一次关联关系,则做加一计算,根据计算结果确定表与表之间的密切程度。计算结果值越大,说明表与表之间的密切程度越高。
为了更清楚说明本申请技术方案,下面以一具体实施例进行说明:
假设数据库中存在表A、B、C及D,包括两个源码文件,源码文件1定义了函数P1及P3,源码文件2定义了P2及P4,源码文件1与源码文件2相互调用。
其中,函数P1对表A进行插入操作(DML操作方式之一),对表B进行查询操作,调用了函数P2;
函数P2对表A进行更新操作(DML操作方式之一),对表C进行了删除操作(DML操作方式之一),调用了函数P3;
函数P3对表B进行更新操作(DML操作方式之一),对表D进行查询操作;
函数P4对表D进行更新操作(DML操作方式之一)。
通过之前实施例可以得到函数与函数之间的调用关系如表三,函数、表及DML操作方式之间的关系如表四:
表三:
调用函数 | 被调函数 |
P1 | P2 |
P2 | P3 |
P3 | 无 |
P4 | 无 |
P5 | 无 |
表四:
函数 | 表 | 操作方式 |
P1 | A | 插入 |
P2 | A | 更新 |
P2 | C | 删除 |
P3 | B | 更新 |
P4 | D | 更新 |
通过步骤701可以得到表与表之间的关联关系如表五:
表五:
表 | 表 |
A | B |
A | C |
B | C |
通过步骤702可以得到表与表之间的密切程度如表六:
表六:
表 | 表 | 权值 |
A | B | 1 |
A | C | 2 |
B | C | 1 |
权值越大,表之间的密切程度越大,即关联关系越强;权值越小,表之间的密切程度越小,即关联关系越弱。
本申请通过对源码按照函数、语句级别的粒度进行切分,加以合理的数据库表关联关系分析机制,并引入了注释剔除模式,能够减少数据库表关联关系分析的人力投入,降低分析过程复杂度,准确界定数据库表之间的关联关系,为后续系统架构调整及优化提供基础。
基于同一发明构思,本申请实施例中还提供了一种数据库表关联关系确定装置,如下面的实施例所述。由于该装置解决问题的原理与方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图8所示,图8为本申请实施例的数据库表关联关系确定装置结构图,该装置可以通过逻辑电路实现运行于计算机或智能终端,例如手机、平板电脑等设备中,或者以功能模块的方式由软件实现各部件的功能,运行于计算机或智能终端上。
具体的,包括:注释过滤模块801,用于剔除数据库各源码文件中的注释信息。
函数切分模块802,用于对剔除注释信息后的各源码文件进行函数切分。
函数分析模块803,用于根据函数切分结果及各源码文件分析得到函数与函数之间的关联关系。
语句切分模块804,用于对剔除注释信息后的各源码文件进行语句切分。
语句分析模块805,用于根据语句切分结果、函数切分结果及各源码文件分析得到函数、表及DML操作方式的关联关系。
表与表关联关系分析模块806,用于根据函数与函数之间的关联关系,函数、表及DML操作方式的关联关系,分析得到表与表之间关联关系及其密切程度。
本申请一具体实施例中,如图9所示,所述注释过滤模块801包括:
注释信息提取单元901,用于确定源码的注释格式,根据注释格式提取注释在各源码文件中的开始行数及结束行数。
注释剔除单元902,用于将同一注释的开始行数及结束行数之间的信息剔除。
本申请一具体实施例中,如图10所示,函数切分模块802包括:
函数名称提取单元1001,用于根据关键字提取各源码文件中的函数名称。
函数切分单元1002,用于根据函数名称提取函数在源码文件中的开始行数及结束行数,根据函数在源码中的开始行数及结束行数对剔除注释信息后的源码文件进行切分得到函数的切分结果。
本申请一具体实施例中,如图11所示,函数分析模块803包括:
文件调用关系提取单元1101,用于根据源码文件的文件名在各源码文件中进行遍历,确定源码文件之间的调用关系;
函数调用关系提取单元1102,在调用源码文件中,遍历被调用源码文件中的函数名,确定代码行数,根据调用源码文件的函数切分结果确定代码行数属于哪个函数,从而确定函数与函数的调用关系。
本申请一具体实施例中,如图12所示,语句切分模块804包括:
语句分割符提取单元1201,用于确定语句的结束符格式。
语句切分单元1202,用于根据语句结束符格式在各源码文件中提取包含语句结束符格式的行数得到语句的结束行数;对于每一源码文件,将语句的结束行数进行升序排列,对上一语句的结束行数作加一处理得到下一语句的开始行数;根据语句的开始行数及结束行数对剔除注释信息后的源码文件进行切分得到语句切分结果。
本申请一具体实施例中,如图13所示,语句分析模块805包括:
文件与表调用关系确定单元1301,用于根据表清单在各源码文件中进行遍历,确定文件与表之间的调用关系;
行数提取单元1302,用于根据文件与表之间的调用关系确定表所在源码文件的代码行数;
语句操作方式确定单元1303,用于从语句切分结果中查找表所在源码文件的代码行数对应的语句,根据DML操作方式关键字确定语句的操作方式;
表所属函数确定单元1304,用于根据函数切分结果确定表所在源码文件中的代码行数属于哪个函数;
关联单元1305,用于将确定的函数、表及操作方式关联到一起。
本申请一具体实施例中,所述表与表关联关系分析模块806具体用于利用如下规则,根据函数与函数之间的关联关系,函数、表及DML操作方式的关联关系确定表与表之间的关联关系:
若同一函数同时对多个表存在DML操作方式,则同一函数中存在DML操作方式的各表之间存在关联关系,若函数与函数之间存在调用关系,则两个函数中存在DML操作方式的表之间存在关联关系。
表与表之间每确定一次关联关系,则做加一计算,根据计算结果确定表与表之间的密切程度。
本申请提供的数据库表关联关系确定方法及装置能够准确的确定表间关系,以便帮助分析业务逻辑,减少数据库表关联关系分析的人力投入,降低分析过程复杂度,为数据库分拆(分库、分表)的策略分析提供了决策依据,以便进行有针对性的数据库分库方案调整。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅用于说明本申请的技术方案,任何本领域普通技术人员均可在不违背本申请的精神及范畴下,对上述实施例进行修饰与改变。因此,本申请的权利保护范围应视权利要求范围为准。
Claims (14)
1.一种数据库表关联关系确定方法,其特征在于,包括:
剔除数据库各源码文件中的注释信息;
对剔除注释信息后的各源码文件进行函数切分,根据函数切分结果及各源码文件分析得到函数与函数之间的关联关系;
对剔除注释信息后的各源码文件进行语句切分,根据语句切分结果、函数切分结果及各源码文件分析得到函数、表及DML操作方式的关联关系;
根据函数与函数之间的关联关系,函数、表及DML操作方式的关联关系,分析得到表与表之间关联关系及其密切程度。
2.如权利要求1所述的数据库表关联关系确定方法,其特征在于,剔除数据库各源码文件中的注释信息的过程进一步包括:
确定源码的注释格式,根据注释格式提取注释在各源码文件中的开始行数及结束行数;
将同一注释的开始行数及结束行数之间的信息剔除。
3.如权利要求1所述的数据库表关联关系确定方法,其特征在于,对剔除注释信息后的各源码文件进行函数切分的过程包括:
根据关键字提取各源码文件中的函数名称;
根据函数名称提取函数在源码文件中的开始行数及结束行数,根据函数在源码中的开始行数及结束行数对剔除注释信息后的源码文件进行切分得到函数切分结果。
4.如权利要求1所述的数据库表关联关系确定方法,其特征在于,根据函数切分结果及各源码文件分析得到函数与函数之间的关联关系的过程包括:
根据源码文件的文件名在各源码文件中进行遍历,确定源码文件之间的调用关系;
在调用源码文件中,遍历被调用源码文件中的函数名,确定代码行数,根据调用源码文件的函数切分结果确定代码行数属于哪个函数,从而确定函数与函数的调用关系。
5.如权利要求1所述的数据库表关联关系确定方法,其特征在于,对剔除注释信息后的各源码文件进行语句切分的过程包括:
确定语句结束符格式,根据语句结束符格式在各源码文件中提取包含语句结束符格式的行数得到语句的结束行数;
对于每一源码文件,将语句的结束行数进行升序排列,对上一语句的结束行数作加一处理得到下一语句的开始行数;
根据语句的开始行数及结束行数对剔除注释信息后的源码文件进行切分得到语句切分结果。
6.如权利要求1所述的数据库表关联关系确定方法,其特征在于,根据语句切分结果、函数切分结果及各源码文件分析得到函数、表及DML操作方式的关联关系的过程包括:
根据表清单在各源码文件中进行遍历,确定文件与表之间的调用关系;
根据文件与表之间的调用关系确定表所在源码文件的代码行数;
从语句切分结果中查找表所在源码文件的代码行数对应的语句,根据DML操作方式关键字确定查找到的语句的操作方式;
根据函数切分结果确定表所在源码文件的代码行数属于哪个函数;
将确定的函数、表及操作方式关联到一起。
7.如权利要求1至6任一项所述的数据库表关联关系确定方法,其特征在于,根据函数与函数之间的关联关系,函数、表及DML操作方式的关联关系,分析得到表与表之间关联关系及其密切程度进一步包括:
利用如下规则,根据函数与函数之间的关联关系,函数、表及DML操作方式的关联关系,分析得到表与表之间的关联关系:
若同一函数同时对多个表存在DML操作方式,则同一函数中存在DML操作方式的各表之间存在关联关系,若函数与函数之间存在调用关系,则两个函数中存在DML操作方式的表之间存在关联关系;
表与表之间每确定一次关联关系,则做加一计算,根据计算结果确定表与表之间的密切程度。
8.一种数据库表关联关系确定装置,其特征在于,包括:注释过滤模块,用于剔除数据库各源码文件中的注释信息;
函数切分模块,用于对剔除注释信息后的各源码文件进行函数切分;
函数分析模块,用于根据函数切分结果及各源码文件分析得到函数与函数之间的关联关系;
语句切分模块,用于对剔除注释信息后的各源码文件进行语句切分;
语句分析模块,用于根据语句切分结果、函数切分结果及各源码文件分析得到函数、表及DML操作方式的关联关系;
表与表关联关系分析模块,用于根据函数与函数之间的关联关系,函数、表及DML操作方式的关联关系,分析得到表与表之间关联关系及其密切程度。
9.如权利要求8所述的数据库表关联关系确定装置,其特征在于,所述注释过滤模块包括:
注释信息提取单元,用于确定源码的注释格式,根据注释格式提取注释在各源码文件中的开始行数及结束行数;
注释剔除单元,用于将同一注释的开始行数及结束行数之间的信息剔除。
10.如权利要求8所述的数据库表关联关系确定装置,其特征在于,函数切分模块包括:
函数名称提取单元,用于根据关键字提取各源码文件中的函数名称;
函数切分单元,用于根据函数名称提取函数在源码文件中的开始行数及结束行数,根据函数在源码中的开始行数及结束行数对剔除注释信息后的源码文件进行切分得到函数的切分结果。
11.如权利要求8所述的数据库表关联关系确定装置,其特征在于,函数分析模块包括:
文件调用关系提取单元,用于根据源码文件的文件名在各源码文件中进行遍历,确定源码文件之间的调用关系;
函数调用关系提取单元,在调用源码文件中,遍历被调用源码文件中的函数名,确定代码行数,根据调用源码文件的函数切分结果确定代码行数属于哪个函数,从而确定函数与函数的调用关系。
12.如权利要求8所述的数据库表关联关系确定装置,其特征在于,语句切分模块包括:
语句分割符提取单元,用于确定语句的结束符格式;
语句切分单元,用于根据语句结束符格式在各源码文件中提取包含语句结束符格式的行数得到语句的结束行数;对于每一源码文件,将语句的结束行数进行升序排列,对上一语句的结束行数作加一处理得到下一语句的开始行数;根据语句的开始行数及结束行数对剔除注释信息后的源码文件进行切分得到语句切分结果。
13.如权利要求8所述的数据库表关联关系确定装置,其特征在于,语句分析模块包括:
文件与表调用关系确定单元,用于根据表清单在各源码文件中进行遍历,确定文件与表之间的调用关系;
行数提取单元,用于根据文件与表之间的调用关系确定表所在源码文件的代码行数;
语句操作方式确定单元,用于从语句切分结果中查找表所在源码文件的代码行数对应的语句,根据DML操作方式关键字确定语句的操作方式;
表所属函数确定单元,用于根据函数切分结果确定表所在源码文件的代码行数属于哪个函数;
关联单元,用于将确定的函数、表及操作方式关联到一起。
14.如权利要求8所述的数据库表关联关系确定装置,其特征在于,所述表与表关联关系分析模块具体用于:利用如下规则,根据函数与函数之间的关联关系,函数、表及DML操作方式的关联关系确定表与表之间的关联关系:
若同一函数同时对多个表存在DML操作方式,则同一函数中存在DML操作方式的各表之间存在关联关系,若函数与函数之间存在调用关系,则两个函数中存在DML操作方式的表之间存在关联关系;
表与表之间每确定一次关联关系,则做加一计算,根据计算结果确定表与表之间的密切程度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611104662.9A CN106682107B (zh) | 2016-12-05 | 2016-12-05 | 数据库表关联关系确定方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611104662.9A CN106682107B (zh) | 2016-12-05 | 2016-12-05 | 数据库表关联关系确定方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106682107A CN106682107A (zh) | 2017-05-17 |
CN106682107B true CN106682107B (zh) | 2020-02-21 |
Family
ID=58866402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611104662.9A Active CN106682107B (zh) | 2016-12-05 | 2016-12-05 | 数据库表关联关系确定方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106682107B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108108441A (zh) * | 2017-12-21 | 2018-06-01 | 新博卓畅技术(北京)有限公司 | 一种数据库表结构分析方法和系统 |
CN110727703B (zh) * | 2019-09-23 | 2022-10-11 | 苏宁云计算有限公司 | 一种自动识别json代码中注释的方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615542A (zh) * | 2015-02-11 | 2015-05-13 | 中国科学院软件研究所 | 一种基于函数调用的脆弱性关联分析辅助漏洞挖掘的方法 |
CN105677761A (zh) * | 2015-12-30 | 2016-06-15 | 国网信息通信产业集团有限公司 | 一种数据切分的方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140214890A1 (en) * | 2013-01-31 | 2014-07-31 | Unicorn Media, Inc. | Database shard arbiter |
-
2016
- 2016-12-05 CN CN201611104662.9A patent/CN106682107B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615542A (zh) * | 2015-02-11 | 2015-05-13 | 中国科学院软件研究所 | 一种基于函数调用的脆弱性关联分析辅助漏洞挖掘的方法 |
CN105677761A (zh) * | 2015-12-30 | 2016-06-15 | 国网信息通信产业集团有限公司 | 一种数据切分的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106682107A (zh) | 2017-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102662952B (zh) | 一种基于层次的中文文本并行数据挖掘方法 | |
CN106294762B (zh) | 一种基于学习的实体识别方法 | |
CN106844640B (zh) | 一种网页数据分析处理方法 | |
CN111506621A (zh) | 一种数据统计方法及装置 | |
CN109522396B (zh) | 一种面向国防科技领域的知识处理方法及系统 | |
CN114461644A (zh) | 一种数据采集方法、装置、电子设备及存储介质 | |
CN105095436A (zh) | 数据源数据自动建模方法 | |
CN106682107B (zh) | 数据库表关联关系确定方法及装置 | |
CN114817243A (zh) | 数据库联合索引的建立方法、装置、设备及存储介质 | |
CN110874366A (zh) | 数据处理、查询方法和装置 | |
CN105512270A (zh) | 一种确定相关对象的方法和装置 | |
CN113468866B (zh) | 非标准json串的解析方法及装置 | |
CN114969036A (zh) | 数据检索方法及装置 | |
CN109785099B (zh) | 一种自动对业务数据信息进行处理的方法及系统 | |
CN113779200A (zh) | 目标行业词库的生成方法、处理器及装置 | |
CN107729518A (zh) | 一种关系型数据库的全文检索方法及装置 | |
CN113032368A (zh) | 一种数据迁移方法、装置、存储介质及平台 | |
CN112115237A (zh) | 烟草科技文献数据推荐模型的构建方法及装置 | |
CN112214494B (zh) | 检索方法及装置 | |
CN110781309A (zh) | 一种基于模式匹配的实体并列关系相似度计算方法 | |
CN112579769A (zh) | 关键词的聚类方法、装置、存储介质和电子设备 | |
CN113609296B (zh) | 用于舆情数据识别的数据处理方法和装置 | |
CN114943004B (zh) | 属性图查询方法、属性图查询装置以及存储介质 | |
CN108304430B (zh) | 一种修改数据库的方法 | |
CN116149950A (zh) | 一种任务异常处理方法和装置 |
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 |