CN116226082A - 数据库模型的生成方法、装置、存储介质及电子设备 - Google Patents

数据库模型的生成方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN116226082A
CN116226082A CN202211716765.6A CN202211716765A CN116226082A CN 116226082 A CN116226082 A CN 116226082A CN 202211716765 A CN202211716765 A CN 202211716765A CN 116226082 A CN116226082 A CN 116226082A
Authority
CN
China
Prior art keywords
statement
service
database
association
business
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
CN202211716765.6A
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.)
Jinzhuan Xinke Co Ltd
Original Assignee
Jinzhuan Xinke 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 Jinzhuan Xinke Co Ltd filed Critical Jinzhuan Xinke Co Ltd
Priority to CN202211716765.6A priority Critical patent/CN116226082A/zh
Publication of CN116226082A publication Critical patent/CN116226082A/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/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • G06F16/212Schema design and management with details for data modelling support
    • 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/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种数据库模型的生成方法、装置、存储介质及电子设备,其中,该方法包括:获取数据库的业务语句集合,其中,所述业务语句集合中包括多条业务语句;根据所述业务语句集合构造所述数据库各数据表的关联数组;根据所述关联数组生成所述数据库的表关联模型。通过本发明,提高了分析数据库模型结构的效率。

Description

数据库模型的生成方法、装置、存储介质及电子设备
技术领域
本发明涉及数据处理领域,具体而言,涉及一种数据库模型的生成方法、装置、存储介质及电子设备。
背景技术
现有数据库迁移,需要调研和分析业务数据库模型结构,相关技术中,一般是通过业务系统的数据库设计文档和业务人员交流确认业务数据库模型,但是有些业务系统上线时间很早,迭代式需求开发,开发人员流动导致历史文档和数据库模型调研和沟通确认效率低。
针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。
发明内容
本发明实施例提供了一种数据库模型的生成方法、装置、存储介质及电子设备,以解决相关技术中分析数据库模型结构效率低的技术问题。
根据本申请实施例的一个方面,提供了一种数据库模型的生成方法,包括:获取数据库的业务语句集合,其中,所述业务语句集合中包括多条业务语句;根据所述业务语句集合构造所述数据库各数据表的关联数组;根据所述关联数组生成所述数据库的表关联模型。
进一步,根据所述业务语句集合构造所述数据库各数据表的关联数组包括:解析所述业务语句集合中每条业务语句包含的数据表的表标识;计算每条业务语句包含的表标识数量;针对其中包含两个表标识的第一业务语句,提取所述第一业务语句中的第一表标识和第二表标识,采用所述第一表标识和所述第二表标识建立关联数组,其中,每个关联数组用于存储存在路径映射关系的两个表标识。
进一步,所述方法还包括:针对其中只包含一个表标识的第二业务语句,提取所述第二业务语句的第三表标识,采用所述第三表标识建立独立数组,其中,每个独立数组用于存储单独查询的一个表标识。
进一步,根据所述关联数组生成所述数据库的表关联模型包括:获取所述业务语句集合中包含的所有数据表的表标识;为每一个表标识生成对应的一个节点;解析所述各数据表之间的关联数组,确定存在关联关系的数据表对,并在所述数据表对的两个节点之间创建连接线;根据所述节点以及所述连接线生成所述数据库的表关联模型。
进一步,提取所述第一业务语句中的第一表标识和第二表标识,采用所述第一表标识和所述第二表标识建立关联数组包括:判断每个第一业务语句中是否包含JOIN语句,其中,JOIN语句用于指示连接两张数据表;针对其中包含JOIN语句的第一业务语句,提取所述第一业务语句中的第一表标识和第二表标识,采用所述第一表标识和所述第二表标识建立关联数组。
进一步,获取数据库的业务语句集合之后,所述方法还包括:解析所述业务语句集合中每条业务语句的语句类型;在所述业务语句集合中删除第一类语句,保留第二类语句,其中,所述第一类语句包括INSERT语句、UPDATE语句、和DELETE语句,所述第二类语句为SELECT语句。
进一步,根据所述业务语句集合构造所述数据库各数据表的关联数组之前,所述方法还包括:计算所述业务语句集合中每条业务语句的计划哈希值;通过所述计划哈希值判断各业务语句之间是否相同,并对其中相同的业务语句执行去重操作。
根据本申请实施例的另一个方面,还提供了一种数据库模型的生成装置,包括:获取模块,用于获取数据库的业务语句集合,其中,所述业务语句集合中包括多条业务语句;构造模块,用于根据所述业务语句集合构造所述数据库各数据表的关联数组;生成模块,用于根据所述关联数组生成所述数据库的表关联模型。
进一步,构造模块包括:解析单元,用于解析所述业务语句集合中每条业务语句包含的数据表的表标识;计算单元,用于计算每条业务语句包含的表标识数量;第一建立单元,用于针对其中包含两个表标识的第一业务语句,提取所述第一业务语句中的第一表标识和第二表标识,采用所述第一表标识和所述第二表标识建立关联数组,其中,每个关联数组用于存储存在路径映射关系的两个表标识。
进一步,构造模块还包括:第二建立单元,用于针对其中只包含一个表标识的第二业务语句,提取所述第二业务语句的第三表标识,采用所述第三表标识建立独立数组,其中,每个独立数组用于存储单独查询的一个表标识。
进一步,生成模块包括:获取单元,用于获取所述业务语句集合中包含的所有数据表的表标识;第一生成单元,用于为每一个表标识生成对应的一个节点;创建单元,用于解析所述各数据表之间的关联数组,确定存在关联关系的数据表对,并在所述数据表对的两个节点之间创建连接线;第二生成单元,用于根据所述节点以及所述连接线生成所述数据库的表关联模型。
进一步,第一建立单元包括:判断单元,用于判断每个第一业务语句中是否包含JOIN语句,其中,JOIN语句用于指示连接两张数据表;第一建立子单元,用于针对其中包含JOIN语句的第一业务语句,提取所述第一业务语句中的第一表标识和第二表标识,采用所述第一表标识和所述第二表标识建立关联数组。
进一步,装置还包括:过滤单元,用于解析所述业务语句集合中每条业务语句的语句类型;在所述业务语句集合中删除第一类语句,保留第二类语句,其中,所述第一类语句包括INSERT语句、UPDATE语句、和DELETE语句,所述第二类语句为SELECT语句。
进一步,装置还包括:去重单元,用于计算所述业务语句集合中每条业务语句的计划哈希值;通过所述计划哈希值判断各业务语句之间是否相同,并对其中相同的业务语句执行去重操作。
根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的步骤。
根据本申请实施例的另一方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;其中:存储器,用于存放计算机程序;处理器,用于通过运行存储器上所存放的程序来执行上述方法中的步骤。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法中的步骤。
通过本发明,获取数据库的业务语句集合,其中,所述业务语句集合中包括多条业务语句;根据业务语句集合构造数据库各数据表的关联数组;之后根据关联数组生成所述数据库的表关联模型,相较于通过数据库设计文档,或者和业务人员沟通交流确认业务数据库中的表关联关系的方式,本实施例直接通过业务语句获取表之间的关联关系并生成数据库的表关联模型,避免了查阅设计文档导致效率低,或者人员流动导致表关系无法确认的情况,有效提升了数据库业务模型调研和分析效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种计算机的硬件结构框图;
图2是根据本发明实施例的一种数据库模型的生成方法的流程图;
图3为本发明实施例一实施场景中数据库模型的生成方法的流程示意图;
图4为本发明实施例一实施场景中生成的数据库模型示意图;
图5是根据本发明实施例的一种数据库模型的生成装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
本申请实施例一所提供的方法实施例可以在服务器、计算机、手机、或者类似的运算装置中执行。以运行在计算机上为例,图1是本发明实施例的一种计算机的硬件结构框图。如图1所示,计算机可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述计算机还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机的结构建成限定。例如,计算机还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的一种数据库模型的生成方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(NetworkInterfaceController,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(RadioFrequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种数据库模型的生成方法,图2是根据本发明实施例的一种数据库模型的生成方法的流程图,如图2所示,该流程包括如下步骤:
S1,获取数据库的业务语句集合,其中,所述业务语句集合中包括多条业务语句;
可以通过业务系统数据库的数据库视图获取原始业务SQL语句。
S2,根据所述业务语句集合构造所述数据库各数据表的关联数组;
业务语句中包括要查询或者操作的目标数据表,通过解析业务语句集合中的每条业务语句,构建数据库中各表的关联数组。如,解析业务语句,若表t1和表t2存在路径映射关系,表t2和表t3存在路径映射关系,则可以建立[t1,t2]和[t2,t3]的关联数组。
S3,根据所述关联数组生成所述数据库的表关联模型。
根据各数据表的关联数组生成数据库的表关联模型,以表征数据库中各数据表之间的关联。
本发明实施例通过获取数据库的业务语句集合,根据业务语句集合构造数据库各数据表的关联数组,之后根据关联数组生成数据库的表关联模型,相较于通过数据库设计文档,或者和业务人员交流确认业务数据库中的表关联关系的方式,本实施例通过业务生产环境的SQL语句,逆向生成数据库表关联关系,即使在数据库管理员或业务开发人员无法详细描述业务模型情况时仍可以生成数据库模型,有效提升了数据库业务模型调研和分析效率。
在本发明实施例的一实施方式中,根据所述业务语句集合构造所述数据库各数据表的关联数组,S2,包括:
S21,解析所述业务语句集合中每条业务语句包含的数据表的表标识;
表标识一般为数据表的名称。
解析每条业务语句包含的数据表的表标识的方式可以通过获取执行计划详情实现。其中,执行计划是SQL在数据库中执行情况的客观反映,也是SQL性能分析和优化的参考,一般获取执行计划有四种途径:执行explain plan语句;查询动态性能视图;查询AWR或Statspack表,或者启动提供执行计划的跟踪功能等。获取业务语句的执行计划,将会返回一个表格形式的输出表,其中包含了id、select_type、table等信息。
解析出执行计划的TABLE和VIEW信息,获取SQL语句中的表标识。
S22,计算每条业务语句包含的表标识数量;
针对每条业务语句,统计该条业务语句中出现的表标识的数量。
S23,针对其中包含两个表标识的第一业务语句,提取所述第一业务语句中的第一表标识和第二表标识,采用所述第一表标识和所述第二表标识建立关联数组,其中,每个关联数组用于存储存在路径映射关系的两个表标识。
针对其中包含两个表标识的业务语句,则建立该两个表标识的关联数组。如,业务语句SQL1:select t1.xx,t2.xfrom t1 left join t2 on t1.id=t2.id中包含两个表名t1和t2,则构建关联数组[t1,t2],表示t1和t2存在路径映射关系,业务语句SQL2:selectt1.xx,t3.xfrom t1 left join t3 on t1.id=t3.id中包含两个表名t1和t3,则构建关联数组[t1,t3],表示t1和t3存在路径映射关系。
本发明实施例实现了根据每条业务语句中包含的表标识构造数据表的关联数组。
在本发明实施例的另一实施方式中,所述方法还包括:
S24,针对其中只包含一个表标识的第二业务语句,提取所述第二业务语句的第三表标识,采用所述第三表标识建立独立数组,其中,每个独立数组用于存储单独查询的一个表标识。
本发明实施例中,若一个业务语句只包含一个表标识,则对该一个表标识进行单独存储,如业务语句2 select t8.xx from t8中,只包含t8一个数据表,则采用t8建立独立数组[t8],表示在该业务语句中,t8用于单独查询,没有与之关联映射的其它数据表。可理解地,虽然在该业务语句中,t8没有与之关联映射的其它数据表,但t8可能在其它业务语句中存在与之关联的其它数据表。
进一步,针对其中包含两个以上表标识的第三业务语句,本实施例中可以提取所述第三业务语句的多个表标识,采用所述多个表标识两两建立关联数组。
在本实施例一实施方式中,根据所述关联数组生成所述数据库的表关联模型,S3,包括:
S31,获取所述业务语句集合中包含的所有数据表的表标识;
S32,为每一个表标识生成对应的一个节点;
S33,解析所述各数据表之间的关联数组,确定存在关联关系的数据表对,并在所述数据表对的两个节点之间创建连接线;
S34,根据所述节点以及所述连接线生成所述数据库的表关联模型。
本发明实施例中的表关联模型为节点以及连接线构成的网状图模型,其中,一个节点代表一张数据表,节点之间用连接线连接,表示连接的两个节点之间存在关联关系。
本发明实施例通过为每一个表标识生成对应的一个节点,为存在关联关系的数据表对的两个节点之间创建连接线,实现了表关联模型的生成。
在一实施方式中,提取所述第一业务语句中的第一表标识和第二表标识,采用所述第一表标识和所述第二表标识建立关联数组,S23,包括:
S231,判断每个第一业务语句中是否包含JOIN语句,其中,JOIN语句用于指示连接两张数据表;
JOIN是两张数据表(结果集)根据指定条件合并成一个记录集,多次叠加使用JOIN可以获得多个数据集的合并结果。
S232,针对其中包含JOIN语句的第一业务语句,提取所述第一业务语句中的第一表标识和第二表标识,采用所述第一表标识和所述第二表标识建立关联数组。
本发明实施例中判断业务语句是否包含JOIN语句,若包含JOIN语句,则解析JOIN语句中涉及的表标识,如业务语句1SQL1为select t1.xx,t2.x from t1 left join t2 ont1.id=t2.id,解析出表名t1和t2,采用t1和t2建立关联数组[t1,t2]。
在一示例中,获取数据库的业务语句集合之后,所述方法还包括:解析所述业务语句集合中每条业务语句的语句类型;在所述业务语句集合中删除第一类语句,保留第二类语句,其中,所述第一类语句包括INSERT语句、UPDATE语句、和DELETE语句,所述第二类语句为SELECT语句。
用于操作数据库的业务语句一般分为两种,一种是查询语句,即SELECT语句,另一种是更新语句,也叫做数据操作语句,即对数据进行修改,包括INSERT、UPDATE以及DELETE语句。
本示例中,若业务语句是INSERT、UPDATE、DELETE语句则进行过滤。通过解析业务语句的语句类型,其中,解析业务语句的语句类型的方式可以采用关键词识别或者通过数据库管理系统的分析服务功能实现,若业务语句是SELECT语句则保留,若是INSERT、UPDATE、DELETE语句则删除。
在一示例中,根据所述业务语句集合构造所述数据库各数据表的关联数组之前,所述方法还包括:计算所述业务语句集合中每条业务语句的计划哈希值;通过所述计划哈希值判断各业务语句之间是否相同,并对其中相同的业务语句执行去重操作。
计划哈希值(Plan hash value)用于表示执行计划的唯一标识。通过在业务语句前加上EXPLAIN关键字获取执行计划即可得到该业务语句的计划哈希值。若两条业务语句的计划哈希值相同,那么则认为该两条业务语句相同,对业务语句集合中具有相同哈希值的业务语句执行去重操作。
本发明实施例在构造各数据表的关联数组之前,获取每条业务语句的计划哈希值来判断业务语句集合中是否存在相同的业务语句,并对其中相同的业务语句执行去重操作,通过去除重复业务语句,精简了数据量,提高了数据库模型的生成效率。
以下,通过一个实施场景为本发明实施例做完整的解释说明。
本实施场景中,现有数据库需要迁移到分布式数据库,因此,需要调研和分析业务数据库模型结构。
参照图3,图3为本发明实施例一实施场景中数据库模型的生成方法的流程示意图。如图3所示,本实施场景中的数据库模型的生成方法涉及到三个模块,分别为采集模块、分析模块以及模型展示模块,其中,
采集模块,用于通过源业务系统数据库的数据库视图获取原始业务SQL语句,将SQL语句生成SQL文件;
分析模块,用于通过JDBC(Java Database Connectivity,Java数据库连接)连接数据库,解析SQL文件获取执行计划。可选的,考虑减少对源库系统影响,本实施场景中可以连接测试中间库获取数据库执行计划;通过执行计划去除重复的SQL语句以减少数据量,并生成去重后的SQL文件,执行去重后SQL文件获取执行计划详情,获取表关联关系,根据表关联关系构造网状图模型;
模型展示模块,用于通过网状图模型构造显示HTML界面,进行数据库表关联关系模型的界面展示。
具体地,该流程包括:
步骤1:采集SQL语句;
采集模块通过源库系统视图查询历史运行SQL语句,生成SQL语句文件。
步骤2:SQL语句去重;
通过JDBC方式执行SQL语句获取数据库执行计划,解析执行计划结果集Plan hashvalue:****,根据Plan hash value判断执行计划是否一致,如果一致,则对相同的SQL语句执行去重操作,生成去重后的SQL语句文件。
步骤3:解析SQL语句执行计划;
重新执行去重后的SQL语句文件,解析执行计划结果集,解析出执行计划的TABLE和VIEW信息,获取SQL语句中的表和视图名称。
步骤4:构造业务SQL网状图模型;
解析SQL语句,先判断SQL语句是否是SELECT语句,若是SELECT语句则保留,若是INSERT、UPDATE、DELETE语句则过滤。
再判断语句中是否包含JOIN语句,若语句中包含JOIN语句,则解析JOIN语句中涉及的表,其中,语句中出现的表都代表网状图模型中的一个节点,根据所有SQL语句中涉及的表构造出模型node节点数组,当两张表出现在同一个SQL语句中,表示该两张表存在关联关系,存在关联关系的两张表之间可以构造一条连接线,根据关联关系建立该两表之间的edge边数组。
以如下业务SQL示例举例:
SQL语句1:select t1.xx,t2.x from t1 left join t2 on t1.id=t2.id;
SQL语句2:select t1.xx,t3.x from t1 left join t3 on t1.id=t3.id;
SQL语句3:select t2.xx,t4.x from t2 left join t4 on t2.id=t4.id;
SQL语句4:select t1.xx,t5.x from t1 left join t5 on t1.id=t5.id;
SQL语句5:select t2.xx,t5.x from t2 left join t5 on t2.id=t5.id;
SQL语句6:select t6.xx,t7.x from t6 left join t7 on t6.id=t7.id;
SQL语句7:select t8.xx from t8;
语句1显示t1和t2关联,语句2显示t1和t3关联,语句3显示t2和t4关联,语句4显示t1和t5关联,语句5显示t2和t5关联,语句6显示t6和t7关联,语句7显示t8表单独查询。
SQL1解析出表名t1和t2,构造出两个节点t1和t2,t1和t2在同一个语句中JOIN,构造出t1和t2的edge,其他语句使用同样的方式解析,构造出对应的节点和边,得到nodes数组和edges数组,其中,
"nodes":["t1","t2","t3","t4","t5","t6","t7","t8"];
"edges":[
["t1","t2"],
["t1","t5"],
["t1","t3"],
["t2","t4"],
["t2","t5"],
["t6","t7"]
]
根据nodes数组生成节点,根据edges数组生成节点和节点之间的连接线,构造出业务SQL网状图模型。
步骤5:生成HTML文件进行展示;
将SQL网状图模型在显示界面进行展示。参照图4,图4为本发明实施例一实施场景中生成的数据库模型示意图。根据该数据模型的网状图显示,数据表t1、t2、t3、t4、t5之间存在关联关系,t6和t7存在关联关系,t8无关联关系。
本发明实施场景中通过获取数据库SQL语句,在数据库中获取SQL语句的执行计划,通过执行计划去重减少SQL语句数量,再获取去重后的SQL语句的执行计划,通过执行计划中的表信息构造出NODE节点和EDGE边的表业务模型结构,其中,NODE节点表示数据库中的各数据表,EDGE边表示各数据表之间的关联关系,实现了以网状图形式展示业务系统的数据库表关联模型,通过业务生产环境的SQL语句,逆向生成数据库表业务模型关联关系并图形展示,有效提升了集中式数据库迁移到分布式数据库业务模型调研和分析效率,在当源系统数据库关联员和业务开发人员无法详细描述业务模型情况时,逆向分析快速补充了未知业务场景的数据库模型关系。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
在本实施例中还提供了一种数据库模型的生成装置,用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本发明实施例的一种数据库模型的生成装置的结构框图,如图5所示,该装置包括:获取模块100,构造模块200,生成模块300,其中,
获取模块100,用于获取数据库的业务语句集合,其中,所述业务语句集合中包括多条业务语句;
构造模块200,用于根据所述业务语句集合构造所述数据库各数据表的关联数组;
生成模块300,用于根据所述关联数组生成所述数据库的表关联模型。
可选的,构造模块包括:解析单元,用于解析所述业务语句集合中每条业务语句包含的数据表的表标识;计算单元,用于计算每条业务语句包含的表标识数量;第一建立单元,用于针对其中包含两个表标识的第一业务语句,提取所述第一业务语句中的第一表标识和第二表标识,采用所述第一表标识和所述第二表标识建立关联数组,其中,每个关联数组用于存储存在路径映射关系的两个表标识。
可选的,构造模块还包括:第二建立单元,用于针对其中只包含一个表标识的第二业务语句,提取所述第二业务语句的第三表标识,采用所述第三表标识建立独立数组,其中,每个独立数组用于存储单独查询的一个表标识。
可选的,生成模块包括:获取单元,用于获取所述业务语句集合中包含的所有数据表的表标识;第一生成单元,用于为每一个表标识生成对应的一个节点;创建单元,用于解析所述各数据表之间的关联数组,确定存在关联关系的数据表对,并在所述数据表对的两个节点之间创建连接线;第二生成单元,用于根据所述节点以及所述连接线生成所述数据库的表关联模型。
可选的,第一建立单元包括:判断单元,用于判断每个第一业务语句中是否包含JOIN语句,其中,JOIN语句用于指示连接两张数据表;第一建立子单元,用于针对其中包含JOIN语句的第一业务语句,提取所述第一业务语句中的第一表标识和第二表标识,采用所述第一表标识和所述第二表标识建立关联数组。
可选的,装置还包括:过滤单元,用于解析所述业务语句集合中每条业务语句的语句类型;在所述业务语句集合中删除第一类语句,保留第二类语句,其中,所述第一类语句包括INSERT语句、UPDATE语句、和DELETE语句,所述第二类语句为SELECT语句。
可选的,装置还包括:去重单元,用于计算所述业务语句集合中每条业务语句的计划哈希值;通过所述计划哈希值判断各业务语句之间是否相同,并对其中相同的业务语句执行去重操作。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
实施例3
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取数据库的业务语句集合,其中,所述业务语句集合中包括多条业务语句;
S2,根据所述业务语句集合构造所述数据库各数据表的关联数组;
S3,根据所述关联数组生成所述数据库的表关联模型。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取数据库的业务语句集合,其中,所述业务语句集合中包括多条业务语句;
S2,根据所述业务语句集合构造所述数据库各数据表的关联数组;
S3,根据所述关联数组生成所述数据库的表关联模型。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种数据库模型的生成方法,其特征在于,所述方法包括:
获取数据库的业务语句集合,其中,所述业务语句集合中包括多条业务语句;
根据所述业务语句集合构造所述数据库各数据表的关联数组;
根据所述关联数组生成所述数据库的表关联模型。
2.如权利要求1所述的方法,其特征在于,根据所述业务语句集合构造所述数据库各数据表的关联数组包括:
解析所述业务语句集合中每条业务语句包含的数据表的表标识;
计算每条业务语句包含的表标识数量;
针对其中包含两个表标识的第一业务语句,提取所述第一业务语句中的第一表标识和第二表标识,采用所述第一表标识和所述第二表标识建立关联数组,其中,每个关联数组用于存储存在路径映射关系的两个表标识。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
针对其中只包含一个表标识的第二业务语句,提取所述第二业务语句的第三表标识,采用所述第三表标识建立独立数组,其中,每个独立数组用于存储单独查询的一个表标识。
4.如权利要求1所述的方法,其特征在于,根据所述关联数组生成所述数据库的表关联模型包括:
获取所述业务语句集合中包含的所有数据表的表标识;
为每一个表标识生成对应的一个节点;
解析所述各数据表之间的关联数组,确定存在关联关系的数据表对,并在所述数据表对的两个节点之间创建连接线;
根据所述节点以及所述连接线生成所述数据库的表关联模型。
5.如权利要求2所述的方法,其特征在于,提取所述第一业务语句中的第一表标识和第二表标识,采用所述第一表标识和所述第二表标识建立关联数组包括:
判断每个第一业务语句中是否包含JOIN语句,其中,JOIN语句用于指示连接两张数据表;
针对其中包含JOIN语句的第一业务语句,提取所述第一业务语句中的第一表标识和第二表标识,采用所述第一表标识和所述第二表标识建立关联数组。
6.如权利要求1所述的方法,其特征在于,获取数据库的业务语句集合之后,所述方法还包括:
解析所述业务语句集合中每条业务语句的语句类型;
在所述业务语句集合中删除第一类语句,保留第二类语句,其中,所述第一类语句包括INSERT语句、UPDATE语句、和DELETE语句,所述第二类语句为SELECT语句。
7.如权利要求1所述的方法,其特征在于,根据所述业务语句集合构造所述数据库各数据表的关联数组之前,所述方法还包括:
计算所述业务语句集合中每条业务语句的计划哈希值;
通过所述计划哈希值判断各业务语句之间是否相同,并对其中相同的业务语句执行去重操作。
8.一种数据库模型的生成装置,其特征在于,所述装置包括:
获取模块,用于获取数据库的业务语句集合,其中,所述业务语句集合中包括多条业务语句;
构造模块,用于根据所述业务语句集合构造所述数据库各数据表的关联数组;
生成模块,用于根据所述关联数组生成所述数据库的表关联模型。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至7中任一项所述的方法的步骤。
10.一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;其中:
存储器,用于存放计算机程序;
处理器,用于通过运行存储器上所存放的程序来执行权利要求1至7中任一项所述的方法的步骤。
CN202211716765.6A 2022-12-29 2022-12-29 数据库模型的生成方法、装置、存储介质及电子设备 Pending CN116226082A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211716765.6A CN116226082A (zh) 2022-12-29 2022-12-29 数据库模型的生成方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211716765.6A CN116226082A (zh) 2022-12-29 2022-12-29 数据库模型的生成方法、装置、存储介质及电子设备

Publications (1)

Publication Number Publication Date
CN116226082A true CN116226082A (zh) 2023-06-06

Family

ID=86579617

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211716765.6A Pending CN116226082A (zh) 2022-12-29 2022-12-29 数据库模型的生成方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN116226082A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115328883A (zh) * 2022-06-29 2022-11-11 江苏昆山农村商业银行股份有限公司 一种数据仓库建模方法和系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115328883A (zh) * 2022-06-29 2022-11-11 江苏昆山农村商业银行股份有限公司 一种数据仓库建模方法和系统

Similar Documents

Publication Publication Date Title
CN111506569B (zh) 数据存储方法、装置、电子装置
CN107958028A (zh) 数据采集的方法、装置、存储介质及终端
CN102810094A (zh) 报表生成方法及装置
CN109857803B (zh) 数据同步方法、装置、设备、系统及计算机可读存储介质
US8880463B2 (en) Standardized framework for reporting archived legacy system data
CN108846020A (zh) 基于多源异构数据进行知识图谱自动化构建方法、系统
CN106681903B (zh) 生成测试用例的方法及装置
CN111400393B (zh) 基于多应用平台的数据处理方法和装置、存储介质
CN110399387A (zh) 基于表关联关系动态生成查询sql的方法及装置
CN107944036B (zh) 一种图谱变化差异的获取方法
CN103606037A (zh) 一种业务数据的查询配置方法及装置
CN116226082A (zh) 数据库模型的生成方法、装置、存储介质及电子设备
CN111159577B (zh) 一种社群划分方法、装置、存储介质及电子装置
CN109408601B (zh) 基于图数据的数据模型转换方法及图数据结构转换器
CN116827774A (zh) 一种业务分析方法、装置、设备及存储介质
CN114328566A (zh) 关系图谱的更新方法、装置、介质、设备及生成方法
CN112231317B (zh) 数据的查询方法、装置、电子装置和存储介质
CN114218265A (zh) 离线模型的处理方法、装置、存储介质和处理器
CN110309206B (zh) 订单信息采集方法及系统
CN111008220A (zh) 数据源的动态识别方法及装置、存储介质和电子装置
CN114466387B (zh) 基站的配置文件的更新方法、装置、存储介质和电子装置
CN110062112A (zh) 数据处理方法、装置、设备及计算机可读存储介质
CN115718879A (zh) 数据治理方法、装置以及存储介质
CN112162731B (zh) 数据扩展方法、装置、存储介质及电子装置
CN111538863B (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