本发明专利技术公开了一种应用程序数据库表有效度的检测方法及系统,该方法包括:获取第一数据集
【技术实现步骤摘要】
应用程序数据库表有效度的检测方法及系统
[0001]本专利技术涉及应用程序有效代码检测
,尤其涉及一种应用程序数据库表有效度的检测方法及系统
。
技术介绍
[0002]随着分布式应用的推广,原有的单应用程序访问单数据库场景,逐渐演变成现在的微服务访问多数据库场景,应用程序数量越来越多,数据库表也越来越多
。
但是在业务迭代的同时,也会出现之前的数据库表废弃不用的情况,如果没有人处理,这些废弃的数据库表会越来越多,最后很难维护
。
[0003]例如,在某一应用程序迭代中,在
1.0
版本存在用户模块
、
小组模块
、
企业模块
、
角色模块这四个模块,对应了
user、group、org、role
这四张表;
2.0
版本中取消了小组模块,只保留了用户模块
、
企业模块和角色模块,对应
user、org、role
三张表,
3.0
迭代中在数据库中删除了
group
表,但是代码中有些调用
group
表的废弃代码没有删除,所以业务代码中会存在4张表,数据库中只有三张表
。
[0004]对此,在应用程序的开发以及维护过程中,需要经常对应用程序进行梳理,以检测并删除应用程序中的废弃代码
。
在现有技术中,已有自动删除应用程序中废弃代码的技术,例如公开号为
CN111597149A
的中国专利技术专利,公开了“一种数据库的数据清理方法及装置”,其通过遍历数据库,找到全部可操作数据分片,并将其写入同一个新建数据文件中,当执行清理指令时,浏览该新建数据文件,可快速定位带删除标记的可操作数据分片,在预设可执行清理指令的时间段将其删除,达到清理数据库的目的
。
该专利方案虽然可自动删除应用程序中废弃数据库
。
但是,对于程序维护人员来说,不清楚何时需要对应用程序进行梳理,因此,目前一般是间隔一段时间通过人工来检测应用程序中数据库表的有效程度,不仅检测效率低,而且准确性不高,尤其是当面对大量数据时,就显得尤为费时费力
。
技术实现思路
[0005]本专利技术的目的是提供一种可自动对应用程序中数据库表的有效程度进行分析检测的应用程序数据库表有效度的检测方法及系统
。
[0006]为了实现上述目的,本专利技术公开了一种应用程序数据库表有效度的检测方法,其包括:
[0007]采用插桩工具插桩待测应用程序,以将跟踪检测逻辑织入所述应用程序中;
[0008]获取第一数据集
、
第二数据集和第三数据集中的任两个或全部;
[0009]所述第一数据集的获取方法为:获取所述应用程序连接数据库时的数据库地址,并基于该数据库地址提取出所有数据库表信息,以获得所述第一数据集;
[0010]所述第二数据集的获取方法为:对所述应用程序中与数据库操作相关的数据文件进行解析,以获得该应用程序的代码中记载的所有数据库表信息,以获得第二数据集;
[0011]所述第三数据集的获取方法为:获取所述应用程序在功能测试中所触发的所有数
据库表信息,以获得第三数据集;
[0012]计算所述第二数据集覆盖所述第一数据集的程度,以获得第一覆盖度;和
/
或计算所述三数据集覆盖所述第二数据集的程度,以获得第二覆盖度;和
/
或计算所述第三数据集覆盖所述第一数据集的程度,以获得第三覆盖度
。
[0013]较佳地,当获得所述第一覆盖度和所述第二覆盖度时,还计算所述第一覆盖度和所述第二覆盖度的乘积,以获得第四覆盖度
。
[0014]较佳地,可从整体数据库的维度
、
某一数据库中所有表的维度以及所有数据库的表的维度中的其中一者或多者计算所述第一覆盖度和所述第三覆盖度;可从某一应用的数据库中表的维度
、
所有应用中的数据库中表的维度中的其中一者或多者计算所述第二覆盖度
。
[0015]较佳地,解析所述应用程序中的包含
SQL
片段的代码文件和
xml
文件,以获得以获得该应用程序的代码中记载的所有数据库表信息
。
[0016]较佳地,解析所述应用程序访问所述数据库时执行的
SQL
语句信息,以提取出数据库表信息
。
[0017]较佳地,所述第一覆盖度的计算方式为:求取所述第二数据集和所述第一数据集的交集,以获得表示所述第二数据集和所述第一数据集中公共对象个数的第一算术数,并计算所述第一算术数与表示所述第一数据集中相应对象个数的第二算术数的比值,以获得所述第一覆盖度;所述第二覆盖度的计算方式为:求取所述第三数据集和所述第二数据集的交集,以获得表示所述第三数据集和所述第二数据集中公共对象个数的第三算术数,并计算所述第三算术数与表示所述第二数据集中相应对象个数的第四算术数的比值,以获得所述第二覆盖度;所述第三覆盖度的计算方式为:求取所述第三数据集和所述第一数据集的交集,以获得表示所述第三数据集和所述第一数据集中功能对象个数的第五算术数,并计算所述第五算术数与表示所述第一数据集中相应对象个数的第六算术数的比值,以获得所述第三覆盖度
。
[0018]本专利技术还公开一种应用程序数据库表覆盖的检测系统,该检测系统基于如上所述的检测方法工作
。
[0019]本专利技术还公开一种应用程序数据库表覆盖的检测系统,其包括:
[0020]一个或多个处理器;
[0021]存储器;
[0022]以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如上所述的应用程序数据库表覆盖的检测方法的指令
。
[0023]本专利技术还公开一种计算机可读存储介质,其特征在于,包括计算机程序,所述计算机程序可被处理器执行以完成如上所述的应用程序数据库表覆盖的检测方法
。
[0024]与现有技术相比,本专利技术上述技术方案公开的检测方法,通过插桩工具插桩待测应用程序,并结合程序解析技术,自动从不同渠道获得数据库表信息,并算出分别代表应用程序在不同状态下数据库表有效度的若干指标,也即第一覆盖度
、
第二覆盖度和第三覆盖度,对于任一指标,都可在某一方面表示应用程序当前对数据库设置或应用的有效程度,从而为用户提供当前是否需要对应用程序进行梳理的指示,而且用户根据获得的指标还可有
目的地对相应的数据库进行整理;由此可知,根据上述检测方法,可自动
、
快速检测出应用程序的有效数据库的程度,以帮助用户实时对应用程序进行梳理,有效提升对应用程序的维护效率,并节约人工成本
。
附图说明
[0025]图1为本本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.
一种应用程序数据库表有效度的检测方法,其特征在于,包括:采用插桩工具插桩待测应用程序,以将跟踪检测逻辑织入所述应用程序中;获取第一数据集
、
第二数据集和第三数据集中的任两个或全部;所述第一数据集的获取方法为:获取所述应用程序连接数据库时的数据库地址,并基于该数据库地址提取出所有数据库表信息,以获得所述第一数据集;所述第二数据集的获取方法为:对所述应用程序中与数据库操作相关的数据文件进行解析,以获得该应用程序的代码中记载的所有数据库表信息,以获得第二数据集;所述第三数据集的获取方法为:获取所述应用程序在功能测试中所触发的所有数据库表信息,以获得第三数据集;计算所述第二数据集覆盖所述第一数据集的程度,以获得第一覆盖度;和
/
或计算所述第三数据集覆盖所述第二数据集的程度,以获得第二覆盖度;和
/
或计算所述第三数据集覆盖所述第一数据集的程度,以获得第三覆盖度
。2.
根据权利要求1所述的应用程序数据库表有效度的检测方法,其特征在于,当获得所述第一覆盖度和所述第二覆盖度时,还计算所述第一覆盖度和所述第二覆盖度的乘积,以获得第四覆盖度
。3.
根据权利要求1所述的应用程序数据库表有效度的检测方法,其特征在于,可从整体数据库的维度
、
某一数据库中所有表的维度以及所有数据库的表的维度中的其中一者或多者计算所述第一覆盖度和所述第三覆盖度;可从某一应用的数据库中表的维度
、
所有应用中的数据库中表的维度中的其中一者或多者计算所述第二覆盖度
。4.
根据权利要求1所述的应用程序数据库表有效度的检测方法,其特征在于,解析所述应用程序中的包含
SQL
片段的代码文件和
xml
文件,以获得以获得该应用程序的代码中...
【专利技术属性】
技术研发人员:刘海涛,万振华,王颉,李华,董燕,
申请(专利权)人:深圳开源互联网安全技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。