CN112100168A - 一种确定数据关联关系的方法和装置 - Google Patents

一种确定数据关联关系的方法和装置 Download PDF

Info

Publication number
CN112100168A
CN112100168A CN201910525768.3A CN201910525768A CN112100168A CN 112100168 A CN112100168 A CN 112100168A CN 201910525768 A CN201910525768 A CN 201910525768A CN 112100168 A CN112100168 A CN 112100168A
Authority
CN
China
Prior art keywords
name
database
source code
library table
library
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.)
Pending
Application number
CN201910525768.3A
Other languages
English (en)
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 CN201910525768.3A priority Critical patent/CN112100168A/zh
Publication of CN112100168A publication Critical patent/CN112100168A/zh
Pending legal-status Critical Current

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
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2465Query processing support for facilitating data mining operations in structured databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种确定数据关联关系的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:从关联分析请求中获取待解析的源代码及数据库列表;获取每个数据库的第一库表名和第一库表字段名,并获取源代码中包括的第二库表名和第二库表字段名;对源代码中包括的每个库表字段,根据该库表字段的第二库表字段名及对应的第二库表名获取对应的数据库标识以确定数据关联关系。该实施方式能够实现通过对上传的源代码的分析建立数据关联关系,从而避免了源代码的安全风险,并且可以实现多种层次的关联关系分析,使得关联关系分析更加明晰明确。

Description

一种确定数据关联关系的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种确定数据关联关系的方法和装置。
背景技术
在互联网业务中,时常会发生的是一个数据字段的变更会影响到多个业务,一个业务对某个数据字段的修改,会影响到多个数据库,进而影响到多个业务。通常,这种连锁反应关系我们称为血缘关系。
为了在进行数据字段修改时,避免对其他相互关联的数据库或业务造成困扰,需要进行血缘关系分析。目前,常见的分析方法一般有:
1)使用Hive(在Hadoop上的数据仓库基础构架)本身自带的工具类LineageInfo,来分析一条HQL(HiveQL的缩写)中的源表和目标表之间的血缘关系;
2)对业务脚本进行代码分析,以生成文件目录、来源表、目标表之间的血缘关系;
3)录入Git(Git是一种开放源码的版本控制软件,可以下载代码)地址和账号密码,构造源码分析服务,下载Git代码并进行源码分析,以生成表字段到其他表,到各个库,到各个业务的血缘关系。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
1)使用hive的工具类LineageInfo进行分析,只能得到表与其他表的血缘关系,无法得到更确切的其他层次间的关系,例如:业务与库表的关系等;
2)纯脚本分析的方法有局限性,如果主业务是编译后的代码,则无法获得主业务代码的业务关系
3)录入主业务源码Git地址和账号密码来分析源码以得到血缘关系的方法,由于需要录入账号密码,因此具有较大的安全风险。
发明内容
有鉴于此,本发明实施例提供一种确定数据关联关系的方法和装置,能够实现通过对上传的源代码的分析建立数据关联关系,从而避免了源代码的安全风险,并且可以实现多种层次的关联关系分析,使得关联关系分析更加明晰明确。
为实现上述目的,根据本发明实施例的一个方面,提供了一种确定数据关联关系的方法。
一种确定数据关联关系的方法,包括:从关联分析请求中获取待解析的源代码及数据库列表;获取每个数据库的第一库表名和第一库表字段名,并获取所述源代码中包括的第二库表名和第二库表字段名;对所述源代码中包括的每个库表字段,根据所述库表字段的第二库表字段名及对应的第二库表名获取对应的数据库标识以确定数据关联关系。
可选地,获取所述源代码中包括的第二库表名和第二库表字段名包括:遍历所述源代码中的源码文件,以获取每个源码文件中包括的函数名;从函数中获取第二库表名和第二库表字段名。
可选地,从函数中获取第二库表名和第二库表字段名包括:判断所述函数中是否包含有库表名和库表字段名;若包含,则使用正则表达式过滤出第二库表名和第二库表字段名。
可选地,根据所述库表字段的第二库表字段名及对应的第二库表名获取对应的数据库标识之后,还包括:若获取到的数据库标识有多个,则后续由人工进行进一步地分析以确定数据关联关系。
可选地,所述方法还包括:确定数据关联关系完成之后,删除所述源代码。
可选地,所述关联分析请求还包括业务标识,并且,所述数据关联关系包括业务、数据库、库表和库表字段四个层次的关联关系。
根据本发明实施例的另一方面,提供了一种确定数据关联关系的装置。
一种确定数据关联关系的装置,包括:信息获取模块,用于从关联分析请求中获取待解析的源代码及数据库列表;信息解析模块,用于获取每个数据库的第一库表名和第一库表字段名,并获取所述源代码中包括的第二库表名和第二库表字段名;关系确定模块,用于对所述源代码中包括的每个库表字段,根据所述库表字段的第二库表字段名及对应的第二库表名获取对应的数据库标识以确定数据关联关系。
可选地,所述信息解析模块还用于:遍历所述源代码中的源码文件,以获取每个源码文件中包括的函数名;从函数中获取第二库表名和第二库表字段名。
可选地,所述信息解析模块还用于:判断所述函数中是否包含有库表名和库表字段名;若包含,则使用正则表达式过滤出第二库表名和第二库表字段名。
可选地,还包括人工处理模块,用于:根据所述库表字段的第二库表字段名及对应的第二库表名获取对应的数据库标识之后,若获取到的数据库标识有多个,则后续由人工进行进一步地分析以确定数据关联关系。
可选地,所述装置还包括代码删除模块,用于:确定数据关联关系完成之后,删除所述源代码。
可选地,所述关联分析请求还包括业务标识,并且,所述数据关联关系包括业务、数据库、库表和库表字段四个层次的关联关系。
根据本发明实施例的又一方面,提供了一种确定数据关联关系的电子设备。
一种确定数据关联关系的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例所提供的确定数据关联关系的方法。
根据本发明实施例的再一方面,提供了一种计算机可读介质。
一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例所提供的确定数据关联关系的方法。
上述发明中的一个实施例具有如下优点或有益效果:通过从关联分析请求中获取待解析的源代码及数据库列表,然后获取数据库的第一库表名及第一库表字段名和源代码中包括的第二库表名和第二库表字段名,再根据源代码中包括的每个库表字段的第二库表字段名及对应的第二库表名获取对应的数据库标识即可实现通过对上传的源代码的分析建立数据关联关系,从而避免了源代码的安全风险,并且可以实现多种层次的关联关系分析,使得关联关系分析更加明晰明确。另外,本发明在对源代码进行关联关系分析完毕后还可以自动删除源代码,从而进一步提高了源代码的安全性。根据本发明的实施例,通过在关联分析请求中增加数据库标识以及业务标识,并保存数据库与库表名和库表字段名之间的关联关系,实现了可以建立业务、数据库、库表以及库表字段四个层次的关联关系,关联关系覆盖范围更广,并且,本发明还通过增加人工处理,以准确地确定疑难的关联关系和其他脚本代码的关联关系,从而尽量覆盖所有的关联关系,使得当需要进行数据变更或代码变更时,对业务系统以及数据库的影响降到最小。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的确定数据关联关系的方法的主要步骤示意图;
图2是本发明一个实施例的血缘分析请求页面形式示意图;
图3是本发明一个实施例的血缘分析过程的实现流程示意图;
图4是根据本发明实施例的确定数据关联关系的装置的主要模块示意图;
图5是本发明实施例可以应用于其中的示例性系统架构图;
图6是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
为了解决现有技术中存在的问题,本发明提供了一种确定数据关联关系的方法和装置,基于源码上传的方式对源码进行分析以得到业务与数据库、库表和库表字段之间的关联关系,使得关联关系的分析更加明晰明确且覆盖范围广;并且,当出现异常情况时,还可由人工参与进行进一步处理以更准确地确定数据关联关系,从而使得建立的数据关联关系更为准确、明晰,为数据变更或代码变更提供了参考依据,避免了出现由于数据变更或代码变更带来的对其他业务等的影响。
通常情况下,由于一个完整的系统在开发时可能会涉及到多个业务,而每个业务又会关联多个数据库,每个数据库又包含了多个数据库表,每个数据库表包含了多个库表字段,从而构成了一个庞大的数据集群。而当需要使用或者修改某个数据时,可能会牵涉到对应的数据库表、数据库以及业务等,因此,一般在代码开发完成后,会将一段代码中涉及到的数据的关联关系或血缘关系进行分析,从而不仅可以避免由于数据变更或代码变更而带来的影响,同时也为其他代码的开发者提供了数据查找的依据。其中,数据的血缘关系是数据的关联关系中的一种,指的是根据数据产生的链路而生成的数据之间的关系。
图1是根据本发明实施例的确定数据关联关系的方法的主要步骤示意图。如图1所示,本发明实施例的确定数据关联关系的方法主要包括如下的步骤S101至步骤S103。
步骤S101:从关联分析请求中获取待解析的源代码及数据库列表;
步骤S102:获取每个数据库的第一库表名和第一库表字段名,并获取源代码中包括的第二库表名和第二库表字段名;
步骤S103:对源代码中包括的每个库表字段,根据库表字段的第二库表字段名及对应的第二库表名获取对应的数据库标识以确定数据关联关系。
当代码的开发者完成代码开发后,会提交关联分析请求。该关联分析请求中包括了待解析的源代码以及涉及到的数据库列表。通过由开发者等提交关联分析请求的一方来提供待解析的源代码,即无需从Git代码库中下载源代码,从而也就无需将账号密码提交给Git代码库,增加了源代码的安全性。之后,即可基于上传的源代码进行数据关联关系的分析和建立。另外,进一步地,为了使得源代码的安全性更高,还可以在对源代码分析完毕,建立数据关联关系完成之后,删除源代码,以更好地避免源代码的安全风险。
另外,根据实际应用的需求,若还需要分析不同业务之间的关联关系,则关联分析请求中还可以包括业务标识,如此,即可分析业务、数据库、库表和库表字段四个层次之间的关联关系。
根据本发明的一个实施例,定义了本发明所涉及到的关联关系的种类。在本发明实施例的介绍中,“库”均指的是“数据库”,且所涉及的数据库均以MySQL为例,数据的关联关系均以数据血缘关系为例。首先,定义数据血缘关系的血缘源包括源业务、源库、源库表和源库表字段4个层次;血缘关系的血缘目标包括血缘业务、血缘库、血缘库表和血缘库表字段4个层次。然后,可得到需要确定的血缘关系的种类如下表1。
表1
Figure BDA0002098161290000071
Figure BDA0002098161290000081
关联分析请求中包括的数据库列表中可能仅有一个数据库,也可能有多个数据库,根据源代码涉及到的数据库的情况而定。关联分析请求中给出的一般是数据库的链接地址或者数据库的标识,以便于获取到该数据库的数据结构信息,例如:该数据库包括的库表名,以及每个库表包括的库表字段名等等。
图2是本发明一个实施例的血缘分析请求页面形式示意图。如图2所示,在本发明的一个实施例中,当新增一次血缘分析时,需要根据用户选定的业务线、代码名称、关联的数据库等信息,以及上传的源代码(一般是以zip压缩包的形式存在的)来生成血缘分析请求。
在接收到血缘分析请求之后,将执行步骤S102,先获取数据库的库表名和库表字段名(为了进行区分,数据库的库表名定义为第一库表名,数据库的库表字段名定义为第一库表字段名;源代码中包括的库表名定义为第二库表名,源代码中包括的库表字段名定义为第二库表字段名)。为了更好地进行数据管理,可以预先设置一个远程数据库配置管理表,来管理远程数据库连接,并可方便地获得远程数据库的库表结构明细。设置的远程数据库配置管理表例如为如下的表2。
表2
字段名称 字段类型 说明
id int(11)unsigned 数据库ID编号自增
Server Varchar(100) 待检测的数据库的ip地址
Port Int(11) 待检测的数据库的port端口号
Username Varchar(100) 待检测的数据库的账号
Password Varchar(100) 待检测的数据库的密码
Dbname Varchar(100) 待检测的数据库的数据库名
在获取到数据库的第一库表名和第一库表字段名等结构数据之后,还可以将这些结构数据根据需要进行解析,并整理成“第一库表名(table).第一库表字段名(field)=数据库ID序列”的格式进行备用,当数据库ID序列中包括多个数据库时,各个数据库ID之间可使用逗号分隔。例如:假设在数据库A中有库表table1和库表字段field1,在数据库B中有库表table2和库表字段field2,则备用数据的格式为:table1.field1=数据库A的ID;table2.field2=数据库B的ID。又如,假设数据库B中也有库表table1和库表字段field1,则备用数据会有一条记录为:table1.field1=数据库A的ID,数据库B的ID。通过将数据库的结构数据进行整理成上述的格式以得到备用数据,可以方便后续根据库表名以及库表字段名来查找对应的数据库。
另外,根据本发明的技术方案,还需要一个业务线记录表来记录业务信息,以便记录远程数据库到各个业务的血缘关系。构建的业务线记录表例如如下的表3。同样地,还需要一个血缘关系源码分析表,来记录上传的源代码隶属哪个业务线,并进行源代码的分析。构建的血缘关系源码分析表例如是如下的表4。
表3
字段名称 字段类型 说明
id int(11)unsigned 业务线ID自增
P_name Varchar(200) 业务线名字
P_desc Varchar(255) 业务线具体描述
Creator Varchar(200) 创建者(添加该条记录的系统管理员)
Created_at Datetime 创建时间(添加该条记录的时间)
表4
Figure BDA0002098161290000101
通过以上的表来记录相关的业务、源代码、以及数据库等之间的关系,可以便于进行数据分析、查找及记录。
另外,在获取数据库的库表名和库表字段名的同时,还需要获取源代码中包括的库表名和库表字段名。在获取到用户上传的源代码压缩包后,需要先进行解压缩以得到源代码。具体地,根据本发明的一个实施例,以Java源代码为例,在获取源代码中包括的第二库表名和第二库表字段名时,具体可以按照以下步骤执行:
遍历源代码中的源码文件,以获取每个源码文件中包括的函数名;
从函数中获取第二库表名和第二库表字段名。
本领域技术人员应当知道,当源代码为使用其他语言编制而成时,并不一定是要获取函数名,并从函数中获取第二库表名和第二库表字段名,而可能是会需要获取方法名,并从方法中获取第二库表名和第二库表字段名,具体情况应结合源代码编制语言来定。并且,在获取每个源码文件中包括的函数名时,首先需要将源码文件按照分号进行切割以得到代码行,然后依次遍历这些代码行,对每个代码行进行处理以提取函数名,具体地,可以根据代码行是否包含以下两种结构来判断代码行是否可以提取函数名:
private返回类型函数名(任意字符串);
public返回类型函数名(任意字符串)。
如果代码行包含上述两种结构中的一种,则该代码行即包含有函数名,故可以提取出函数名。其中,在对代码行进行遍历以获取函数名的过程中,在没有取得新的函数名之前,均认为是在前面取得的函数名的函数代码中进行处理。
根据本发明的实施例,当从函数中获取第二库表名和第二库表字段名时,首先需要判断函数中是否包含有库表名和库表字段名;若包含,则使用正则表达式过滤出第二库表名和第二库表字段名。
其中,在判断函数中是否包含有库表名和库表字段名时,具体是:若函数符合以下四种结构之一,则判定函数中包含有库表名和库表字段名:
代码行包含insert单词和into单词;
代码行包含Select单词和from单词;
代码行包含update单词和set单词;
代码行包含delete单词和from单词。
若代码行中包含以上的四种结构之后,则意味着函数中包含有库表名和库表字段名,此时可以按照数据库(例如:MySQL)的规则,使用正则表达式来过滤出第二库表名和第二库表字段名,即:使用正则方法逐步切除代码语句中非库表名和库表字段名的部分。具体地,对上述四种结构进行正则处理的代码例如是:
Figure BDA0002098161290000121
Figure BDA0002098161290000131
此处,应当注意的是,在获取库表字段时,可能会获取到“*”字段,其表示所有库表字段,例如:select count(*)之类,其过滤出来的库表字段为“*”,意味着得到一个或者多个库表字段名。
在得到第二库表名和第二库表字段名之后,即可获取对应关联的数据库。在具体实现时,可遍历所有的库表字段,对每个库表字段,根据该库表字段的第二库表字段名及对应的第二库表名来获取对应的数据库标识。具体地,对每个库表字段,构造key=第二库表名.第二库表字段名,然后根据key从前面的备用数据中查找对应的数据库ID。例如:假设获取到的第二库表名为table2,第二库表字段名为field2,则构造key=table2.field2,结合前述的实施例,根据key即可从备用数据中获取到对应的数据库ID为B数据库的ID。
然而,若获取到的第二库表名为table1,第二库表字段名为field1,则构造key=table1.field1,而根据该key从备用数据中获取到的数据库ID可能为多个,例如为A数据库的ID和B数据库的ID,那么,此时,将无法准确判断该第二库表字段名和第二库表名对应的数据库标识,此时,则需要后续由人工进行进一步地分析以确定数据血缘关系。对于可以直接确定的血缘关系,可通过构建血缘关系存储表来进行存储。构建的构建血缘关系存储表例如是如下的表5。
表5
Figure BDA0002098161290000141
对于无法直接确定对应的数据库的情况,例如源代码连接了两个数据库的情况,需要后续进行人工处理,可将此类情况作为疑难血缘关系来进行处理,保存到构建的疑难血缘关系表(如表6)中。
表6
Figure BDA0002098161290000151
后续将由人工来处理疑难血缘关系,并确定正确的数据库ID,由疑难血缘关系表生产出一条正确的血缘关系,存储到血缘关系存储表(表5)中,并把处理过的疑难记录的Slove_flag=1即可。
另外,对于源代码压缩包中包含的其他非主程序的脚本代码,也可由人工进行处理。本发明的血缘关系表,支持手动录入血缘关系,这样,如果某些第三方的程序使用到相关数据库中的数据,还可以手动录入血缘关系,以尽量减少数据修改或代码修改带来的影响。
通过上述的介绍即可通过对源代码进行分析,以得到业务、数据库、数据库表及库表字段之间对应的数据血缘关系并将数据血缘关系保存在表中。当需要对这16种血缘关系进行查询时,可以按照如下的表7中所列的方法来进行查询。
表7
Figure BDA0002098161290000161
Figure BDA0002098161290000171
图3是本发明一个实施例的血缘分析过程的实现流程示意图。如图3所示,该实施例示出了根据上传的源代码分析数据库、数据库表以及库表字段之间的血缘关系的过程。具体地,其实现过程为:当用户提交血缘分析请求后,获取源代码压缩包及数据库列表,然后提取数据库的库表结构数据备用,并解压得到源代码文件。之后,遍历所有的源代码文件进行进一步处理,直至对所有的源代码文件处理完毕后删除源代码压缩包及解压的源代码文件,结束此次血缘关系分析。其中,对于每个源代码文件,首先判断其是否是需要处理的文件,若是,则切割代码行,并遍历每个代码行以进行进一步处理,具体地,首先提取代码行中包括的函数名,若可以提取到函数名,则从该函数中提取数据库表名;若可以提取到数据库表名,则从该函数中提取库表字段名。然后,遍历提取到的库表字段,对于每个库表字段,根据库表字段名和库表名查找对应的数据库标识,并判断查找到的数据库标识是否唯一,若唯一,则存储到血缘关系表中,否则,存储到疑难血缘关系表中以便后续人工进行处理。
图4是根据本发明实施例的确定数据关联关系的装置的主要模块示意图。如图4所示,本发明实施例的确定数据关联关系的装置400主要包括信息获取模块401、信息解析模块402和关系确定模块403。
信息获取模块401,用于从关联分析请求中获取待解析的源代码及数据库列表;
信息解析模块402,用于获取每个数据库的第一库表名和第一库表字段名,并获取源代码中包括的第二库表名和第二库表字段名;
关系确定模块403,用于对源代码中包括的每个库表字段,根据该库表字段的第二库表字段名及对应的第二库表名获取对应的数据库标识以建立数据关联关系。
根据本发明的一个实施例,信息解析模块402还可以用于:
遍历源代码中的源码文件,以获取每个源码文件中包括的函数名;
从函数中获取第二库表名和第二库表字段名。
根据本发明的另一个实施例,信息解析模块402还可以用于:
判断函数中是否包含有库表名和库表字段名;
若包含,则使用正则表达式过滤出第二库表名和第二库表字段名。
根据本发明的又一个实施例,信息解析模块402还可以用于:
若函数符合以下四种结构之一,则函数中包含有库表名和库表字段名:
代码行包含insert单词和into单词;
代码行包含Select单词和from单词;
代码行包含update单词和set单词;
代码行包含delete单词和from单词。
根据本发明的再一个实施例,确定数据关联关系的装置400还可以包括人工处理模块(图中未示出),用于:
根据库表字段的第二库表字段名及对应的第二库表名获取对应的数据库标识之后,若获取到的数据库标识有多个,则后续由人工进行进一步地分析以确定数据关联关系。
根据本发明的再一个实施例,确定数据关联关系的装置400还可以包括代码删除模块(图中未示出),用于:
确定数据关联关系完成之后,删除源代码。
根据本发明的实施例,关联分析请求还可以包括业务标识,并且,数据关联关系具体可以包括业务、数据库、库表和库表字段四个层次的关联关系。
根据本发明实施例的技术方案,通过从关联分析请求中获取待解析的源代码及数据库列表,然后获取数据库的第一库表名及第一库表字段名和源代码中包括的第二库表名和第二库表字段名,再根据源代码中包括的每个库表字段的第二库表字段名及对应的第二库表名获取对应的数据库标识即可实现通过对上传的源代码的分析建立数据关联关系,从而避免了源代码的安全风险,并且可以实现多种层次的关联关系分析,使得关联关系分析更加明晰明确。另外,本发明在对源代码进行关联关系分析完毕后还可以自动删除源代码,从而进一步提高了源代码的安全性。根据本发明的实施例,通过在关联分析请求中增加数据库标识以及业务标识,并保存数据库与库表名和库表字段名之间的关联关系,实现了可以建立业务、数据库、库表以及库表字段四个层次的关联关系,关联关系覆盖范围更广,并且,本发明还通过增加人工处理,以准确地确定疑难的关联关系和其他脚本代码的关联关系,从而尽量覆盖所有的关联关系,使得当需要进行数据变更或代码变更时,对业务系统以及数据库的影响降到最小。
图5示出了可以应用本发明实施例的确定数据关联关系的方法或确定数据关联关系的装置的示例性系统架构500。
如图5所示,系统架构500可以包括终端设备501、502、503,网络504和服务器505。网络504用以在终端设备501、502、503和服务器505之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备501、502、503通过网络504与服务器505交互,以接收或发送消息等。终端设备501、502、503上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备501、502、503可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器505可以是提供各种服务的服务器,例如对用户利用终端设备501、502、503所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的确定数据关联关系的方法一般由服务器505执行,相应地,确定数据关联关系的装置一般设置于服务器505中。
应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图6,其示出了适于用来实现本发明实施例的终端设备或服务器的计算机系统600的结构示意图。图6示出的终端设备或服务器仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括信息获取模块、信息解析模块和关系确定模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,信息获取模块还可以被描述为“用于从血缘分析请求中获取待解析的源代码及数据库列表的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:从血缘分析请求中获取待解析的源代码及数据库列表;获取每个数据库的库表名和库表字段名,并获取所述源代码中包括的库表名和库表字段名;对所述源代码中包括的每个库表字段,根据库表字段名及对应的库表名获取对应的数据库标识以建立数据血缘关系。
根据本发明实施例的技术方案,通过从关联分析请求中获取待解析的源代码及数据库列表,然后获取数据库的第一库表名及第一库表字段名和源代码中包括的第二库表名和第二库表字段名,再根据源代码中包括的每个库表字段的第二库表字段名及对应的第二库表名获取对应的数据库标识即可实现通过对上传的源代码的分析建立数据关联关系,从而避免了源代码的安全风险,并且可以实现多种层次的关联关系分析,使得关联关系分析更加明晰明确。另外,本发明在对源代码进行关联关系分析完毕后还可以自动删除源代码,从而进一步提高了源代码的安全性。根据本发明的实施例,通过在关联分析请求中增加数据库标识以及业务标识,并保存数据库与库表名和库表字段名之间的关联关系,实现了可以建立业务、数据库、库表以及库表字段四个层次的关联关系,关联关系覆盖范围更广,并且,本发明还通过增加人工处理,以准确地确定疑难的关联关系和其他脚本代码的关联关系,从而尽量覆盖所有的关联关系,使得当需要进行数据变更或代码变更时,对业务系统以及数据库的影响降到最小。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (10)

1.一种确定数据关联关系的方法,其特征在于,包括:
从关联分析请求中获取待解析的源代码及数据库列表;
获取每个数据库的第一库表名和第一库表字段名,并获取所述源代码中包括的第二库表名和第二库表字段名;
对所述源代码中包括的每个库表字段,根据所述库表字段的第二库表字段名及对应的第二库表名获取对应的数据库标识以确定数据关联关系。
2.根据权利要求1所述的方法,其特征在于,获取所述源代码中包括的第二库表名和第二库表字段名包括:
遍历所述源代码中的源码文件,以获取每个源码文件中包括的函数名;
从函数中获取第二库表名和第二库表字段名。
3.根据权利要求2所述的方法,其特征在于,从函数中获取第二库表名和第二库表字段名包括:
判断所述函数中是否包含有库表名和库表字段名;
若包含,则使用正则表达式过滤出第二库表名和第二库表字段名。
4.根据权利要求1所述的方法,其特征在于,根据所述库表字段的第二库表字段名及对应的第二库表名获取对应的数据库标识之后,还包括:
若获取到的数据库标识有多个,则后续由人工进行进一步地分析以确定数据关联关系。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定数据关联关系完成之后,删除所述源代码。
6.根据权利要求1所述的方法,其特征在于,所述关联分析请求还包括业务标识,并且,所述数据关联关系包括业务、数据库、库表和库表字段四个层次的关联关系。
7.一种确定数据关联关系的装置,其特征在于,包括:
信息获取模块,用于从关联分析请求中获取待解析的源代码及数据库列表;
信息解析模块,用于获取每个数据库的第一库表名和第一库表字段名,并获取所述源代码中包括的第二库表名和第二库表字段名;
关系确定模块,用于对所述源代码中包括的每个库表字段,根据所述库表字段的第二库表字段名及对应的第二库表名获取对应的数据库标识以确定数据关联关系。
8.根据权利要求7所述的装置,其特征在于,所述关联分析请求还包括业务标识,并且,所述数据关联关系包括业务、数据库、库表和库表字段四个层次的关联关系。
9.一种确定数据关联关系的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6中任一所述的方法。
CN201910525768.3A 2019-06-18 2019-06-18 一种确定数据关联关系的方法和装置 Pending CN112100168A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910525768.3A CN112100168A (zh) 2019-06-18 2019-06-18 一种确定数据关联关系的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910525768.3A CN112100168A (zh) 2019-06-18 2019-06-18 一种确定数据关联关系的方法和装置

Publications (1)

Publication Number Publication Date
CN112100168A true CN112100168A (zh) 2020-12-18

Family

ID=73749051

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910525768.3A Pending CN112100168A (zh) 2019-06-18 2019-06-18 一种确定数据关联关系的方法和装置

Country Status (1)

Country Link
CN (1) CN112100168A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860811A (zh) * 2021-02-05 2021-05-28 北京百度网讯科技有限公司 数据血缘关系的确定方法、装置、电子设备和存储介质
CN112860265A (zh) * 2021-03-31 2021-05-28 中国工商银行股份有限公司 一种源代码数据库操作异常检测方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860811A (zh) * 2021-02-05 2021-05-28 北京百度网讯科技有限公司 数据血缘关系的确定方法、装置、电子设备和存储介质
CN112860811B (zh) * 2021-02-05 2023-07-18 北京百度网讯科技有限公司 数据血缘关系的确定方法、装置、电子设备和存储介质
CN112860265A (zh) * 2021-03-31 2021-05-28 中国工商银行股份有限公司 一种源代码数据库操作异常检测方法及装置
CN112860265B (zh) * 2021-03-31 2024-02-09 中国工商银行股份有限公司 一种源代码数据库操作异常检测方法及装置

Similar Documents

Publication Publication Date Title
CN110019263B (zh) 信息存储方法和装置
CN113760948A (zh) 一种数据查询的方法及装置
CN107844488B (zh) 数据查询方法和装置
CN111400304A (zh) 一种获取截面日期全量数据的方法、装置、电子设备及存储介质
CN112835904A (zh) 一种数据处理方法和数据处理装置
CN112100168A (zh) 一种确定数据关联关系的方法和装置
CN108959294B (zh) 一种访问搜索引擎的方法和装置
CN111241189A (zh) 一种同步数据的方法和装置
CN113312355A (zh) 一种数据管理的方法和装置
CN111723063A (zh) 一种离线日志数据处理的方法和装置
CN117009430A (zh) 数据管理方法、装置和存储介质及电子设备
CN113704222A (zh) 一种处理业务请求的方法和装置
CN113704242A (zh) 一种数据处理方法和装置
CN112131287A (zh) 一种读取数据的方法和装置
CN113495891A (zh) 一种数据处理方法和装置
CN112988857A (zh) 一种业务数据的处理方法和装置
CN112214500A (zh) 数据对比的方法、装置、电子设备和存储介质
CN110928850A (zh) 一种流量统计的方法和装置
CN110750410B (zh) 一种监听数据库日志的方法和装置
CN109656519B (zh) 一种业务数据自动化接入方法和装置
CN110727739B (zh) 一种数据存储的方法和装置
CN108322380B (zh) 调用数据的方法和装置以及推送信息的方法和装置
CN116932558A (zh) 一种表单数据的处理方法和装置
CN118170677A (zh) 一种数据分析方法、装置、电子设备及计算机可读介质
CN118227485A (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