CN116226092B - 数据库更新方法及装置 - Google Patents
数据库更新方法及装置 Download PDFInfo
- Publication number
- CN116226092B CN116226092B CN202310445588.0A CN202310445588A CN116226092B CN 116226092 B CN116226092 B CN 116226092B CN 202310445588 A CN202310445588 A CN 202310445588A CN 116226092 B CN116226092 B CN 116226092B
- Authority
- CN
- China
- Prior art keywords
- executed
- database
- script
- execution
- service module
- 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
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/211—Schema design and management
- G06F16/213—Schema design and management with details for schema evolution support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据库更新方法及装置,涉及计算机技术领域,其中,数据库更新方法,包括:根据创建的版本发布单,确定待更新的目标服务模块;基于目标服务模块,获取录入的待执行脚本集,待执行脚本集包含至少一种操作类型的待执行脚本;读取目标服务模块的源数据库设计模式;基于源数据库设计模式对应的更新策略和各操作类型的优先级,依次执行各待执行脚本对目标服务模块下的待更新数据库进行更新,并生成执行记录。本发明能减少因执行顺序引起的执行失败,提升微服务模块化后源数据库设计模式融合化后多租户执行便捷性,减少人工繁琐操作,避免人为事故发生。此外,通过生成执行记录,可以进行执行记录的查询输出,使更新操作可视化。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据库更新方法及装置。
背景技术
随着计算机技术的快速发展,各种各样的软件管理模式层出不穷,软件即服务(Software as a Service,SaaS)模式应运而生。在SaaS模式里需要使用共用的数据中心,以单一系统架构,在保障客户的数据正常使用的同时,为多数客户端提供相同或者可定制化的服务。由此带来了新的挑战——如何对应用数据进行设计,以支持多租户。
为支持多租户,基于多租户的数据库设计方案被提出,通常有如下三种:一是独立数据库,二是共享数据库独立架构(Schema),三是共享数据库共享数据表。而现有的SaaS模式选用多种源数据库设计模式组合的形式来提高资源利用及多租户数据隔离,从而满足多租户数据隔离安全及服务成本控制。
但由于多源数据库设计模式组合,导致后期租户服务数据初始化及服务版本迭代时数据库操作繁琐、操作的耗时较长,无法直观准确地记录源数据库迭代情况,执行异常时无法及时作出对应调整方案,导致出现生产事故。
发明内容
针对现有技术存在的问题,本发明实施例提供一种数据库更新方法及装置。
本发明提供一种数据库更新方法,包括:
根据创建的版本发布单,确定待更新的目标服务模块;
基于所述目标服务模块,获取录入的待执行脚本集,所述待执行脚本集包含至少一种操作类型的待执行脚本;
读取所述目标服务模块的源数据库设计模式;
基于所述源数据库设计模式对应的更新策略和各操作类型的优先级,依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新,并生成执行记录。
根据本发明提供的一种数据库更新方法,所述基于所述源数据库设计模式对应的更新策略和各操作类型的优先级,依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新,包括:
在所述源数据库设计模式为独立数据库模式或共享数据库独立架构模式的情况下,确定所述目标服务模块关联的租户信息;针对所述目标服务模块中每个租户信息对应的待更新数据库,按照各操作类型的优先级,依次执行各待执行脚本对所述待更新数据库进行更新;
在所述源数据库设计模式为共享数据库共享表模式的情况下,获取所述目标服务模块关联的数据库信息;针对所述数据库信息对应的每个待更新数据库,按照各操作类型的优先级,依次执行各待执行脚本对所述待更新数据库进行更新。
根据本发明提供的一种数据库更新方法,所述操作类型包括数据定义语言类型、数据控制语言类型和数据操纵语言类型;所述数据定义语言类型的优先级高于所述数据控制语言类型的优先级,所述数据控制语言类型的优先级高于所述数据操纵语言类型的优先级;
相应地,所述按照各操作类型的优先级,依次执行各待执行脚本对所述待更新数据库进行更新,包括:
依次执行所述数据定义语言类型的待执行脚本、所述数据控制语言类型的待执行脚本和所述数据操纵语言类型的待执行脚本,对所述待更新数据库进行更新。
根据本发明提供的一种数据库更新方法,所述依次执行所述数据定义语言类型的待执行脚本、所述数据控制语言类型的待执行脚本和所述数据操纵语言类型的待执行脚本,对所述待更新数据库进行更新,包括:
针对所述数据操纵语言类型的待执行脚本,获取所述数据控制语言类型的待执行脚本的提交标识;
执行所述数据操纵语言类型的待执行脚本,对所述待更新数据库进行更新,并根据所述提交标识进行执行事务提交。
根据本发明提供的一种数据库更新方法,所述依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新,并生成执行记录,包括:
针对任一待执行脚本,生成执行成功日志文件模板和执行失败日志文件模板;
执行所述待执行脚本对所述目标服务模块下的待更新数据库进行更新,并在执行过程中基于所述执行成功日志文件模板和执行失败日志文件模板,生成执行成功日志文件和执行失败日志;
记录所述执行过程的开始时间、结束时间、目标服务模块、所述待执行脚本的操作类型、结束标识、所述执行成功日志文件的标识和所述执行失败日志文件的标识,得到执行记录。
根据本发明提供的一种数据库更新方法,所述依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新之前,还包括:
根据所述版本发布单生成初始执行报告,所述初始执行报告记录有所述版本发布单的标识和开始执行时间;
相应地,所述生成执行记录之后,还包括:
根据所述执行记录,对所述初始执行报告进行完善,得到目标执行报告,所述目标执行报告至少记录有服务模块数量、待执行脚本数量、执行成功的脚本数量、执行失败的脚本数量;
在接收到针对所述执行记录和/或所述目标执行报告的查看请求的情况下,通过显示器显示所述执行记录和/或所述目标执行报告。
根据本发明提供的一种数据库更新方法,所述读取所述目标服务模块的源数据库设计模式之前,还包括:
根据所述目标服务模块和所述待执行脚本集,生成待办审核单;
相应地,所述读取所述目标服务模块的源数据库设计模式,包括:
在所述待办审核单审核通过的情况下,读取所述目标服务模块的源数据库设计模式。
本发明还提供一种数据库更新装置,包括:
确定模块,被配置为根据创建的版本发布单,确定待更新的目标服务模块;
获取模块,被配置为基于所述目标服务模块,获取录入的待执行脚本集,所述待执行脚本集包含至少一种操作类型的待执行脚本;
读取模块,被配置为读取所述目标服务模块的源数据库设计模式;
更新模块,被配置为基于所述源数据库设计模式对应的更新策略和各操作类型的优先级,依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新,并生成执行记录。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述数据库更新方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述数据库更新方法。
本发明提供的数据库更新方法及装置,通过读取目标服务模块的源数据库设计模式,针对不同的源数据库设计模式,使用不同更新策略和各操作类型的优先级,对依次执行各待执行脚本对待更新数据库进行更新,实现了基于待执行脚本的操作类型,控制待执行脚本的执行优先级,减少待执行脚本因执行顺序引起的执行失败,提升微服务模块化后源数据库设计模式融合化后多租户执行便捷性,减少人工繁琐操作,避免人为事故发生。此外,通过生成执行记录,可以进行执行记录的查询输出,使更新操作可视化。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的传统软件模式与软件即服务模式的对比图;
图2是本发明提供的数据库更新方法的流程示意图之一;
图3是本发明提供的数据库更新方法的流程示意图之二;
图4是本发明提供的数据库更新方法的流程示意图之三;
图5是本发明提供的执行待执行脚本的流程示意图;
图6是本发明提供的数据库更新装置的结构示意图;
图7是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于更加清晰地理解本发明各实施例,首先对一些相关的背景知识进行如下介绍。
参见图1,图1是本发明提供的传统软件模式与软件即服务模式的对比图:传统管理软件的开发模式(传统软件模式),是以软件产品为中心,通过市场推广不断寻找更多的客户购买软件产品来实现业务增长。传统软件一般通过光盘等磁盘介质或者以软件下载方式交互客户,然后由厂商技术人员完成服务器和客户端的安装以及一系列的配置等,即厂商技术人员去客户现场实施传统产品的安装,通常部署在局域网。
随着计算机技术的快速发展,软件即服务(Software as a Service,SaaS)模式应运而生,如图1所示,在SaaS模式中,服务提供商提供的一种软件服务,应用统一部署到服务提供商的服务器上,即产品在云服务器上,租户或用户可以根据自己的实际需求按需付费。用户购买基于全球广域网(WEB)的软件,而不是将软件安装在自己的电脑上,用户也无需对软件进行定期的维护与管理。在SaaS模式里需要使用共用的数据中心,以单一系统架构,在保障客户的数据正常使用的同时,为多数客户端提供相同或者可定制化的服务。由此带来了新的挑战——如何对应用数据进行设计,以支持多租户(Multi-Tenancy)。多租户技术(Multi-Tenancy Technology)又称多重租赁技术:是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用户间数据的隔离性。而这种设计需要在数据的共享、安全隔离和性能间取得平衡。
为解决上述问题,基于多租户的数据库设计方案被提出,通常有如下三种:一是独立数据库,二是共享数据库独立Schema,三是共享数据库共享数据表。
现有的多租户技术在这些源数据库中通常采用以上源数据库设计模式。一是独立数据库模式,即每个租户使用自己单独的数据库;这种模式对于用户数据隔离级别最高,安全性最好;但是这种模式增大了数据库的安装数量,随之带来维护成本和购置成本的增加,造成了严重的资源浪费,给中小型企业增加使用成本,不利于软件推广及中小型企业智能化管理。二是共享数据库独立Schema模式,在这种模式中,多个租户共享同一个数据库,每个租户拥有自己单独的表组,每个租户采用各自的架构(Schema);这种模式能够为安全性要求较高的租户提供了一定程度的逻辑数据隔离;但是这种模式数据初始、更新、恢复比较困难,因为初始、更新、恢复数据库将牵涉其他租户的数据。三是共享数据库共享数据表模式,在这种模式中,多个租户共享同一个数据库中的同一个表组,采用同一个架构;在表组的每一个表中记录“租户标识(Identity Document,ID)”字段,以便将不同的租户的数据记录区分开;这种模式是共享程度最高、隔离级别最低的模式,同时,采用这种模式的数据库维护和购置成本低,允许每个数据库支持的较大数据量的租户;但由于源数据库底层模式和技术的复杂性,在现有系统中对多租户系统中的源数据库进行操作是繁复而耗时的,同时也增加响应功能模块开发的复杂性。
基于现状,更多的SaaS模式选用多种源数据库设计模式组合的形式来提高资源利用及多租户数据隔离,从而满足多租户数据隔离安全及服务成本控制。
但由于多源数据库设计模式组合,导致后期租户服务数据初始化及服务版本迭代时数据库操作繁琐、操作的耗时较长,无法直观准确地记录源数据库迭代情况,执行异常时无法及时作出对应调整方案;通常由专业维护人员按服务模块及该服务模块特定的源数据库设计模式人工执行对应的数据库结构化查询语言(Structured Query Language,SQL)初始脚本或升级脚本。如服务A使用独立数据库设计模式,维护人员需要进入不同的租户服务A的源数据库执行SQL初始脚本或升级脚本。服务B使用共享数据库、共享数据表的设计模式,维护人员又需要进入指定源数据库执行SQL初始化脚本或升级脚本。在微服务架构中存在多个服务模块,每个服务模块使用不同的源数据库设计模式,继而导致维护人员的操作繁琐且耗时,易引发人为失误,导致生产事故。因此,本发明提供了一种数据库更新方法及装置。
下面结合图2至图5描述本发明提供的数据库更新方法进行具体描述。
图2是本发明提供的数据库更新方法的流程示意图之一,参见图2所示,包括步骤201-步骤204,其中:
步骤201:根据创建的版本发布单,确定待更新的目标服务模块。
首先需要说明的是,本发明的执行主体可以是能够数据库更新的任何电子设备,例如可以为智能手机、智能手表、台式电脑、手提电脑等任何一种。
具体地,版本发布单是指进行数据库或者软件初始化、升级所述对应版本的发布单,可以包括迭代名称、状态、进度、类别、负责人、开始时间和结束时间等内容。服务模块是指针对某项服务对应的模块,例如聊天模块、购物模块、分享模块等等,每个服务模块对应至少一个数据库(源数据库)。
实际应用中,在接收到数据库初始化、升级等更新指令或更新请求的情况下,根据版本迭代规划,创建发对应版本发布单:可以根据版本名称(迭代名称)的迭代规则,生成版本发布单,例如,上次版本名称为X1.0,则此次版本名称为X2.0,基于X2.0生成版本发布单;可以根据迭代或更新时间,生成版本发布单,例如,当前时间为2023年03月22日,则以20230322为版本标识生成此次的版本发布单。
在创建了版本发布单的基础上,进一步地,选择迭代涉及的源数据库操作的服务模块,也即确定版本发布单的内容所指向的需要进行服务更新的目标服务模块。
需要说明的是,待更新的目标服务模块可以有一个,也可以有多个,本发明对此不作限定。
步骤202:基于所述目标服务模块,获取录入的待执行脚本集,所述待执行脚本集包含至少一种操作类型的待执行脚本。
具体地,操作类型是指对数据库的基本操作类型,主要包括:数据定义语言(DataDefinition Language,DDL)类型、数据控制语言(Data Control Language,DCL)类型和数据操纵语言(Data Manipulation Language,DML)类型。其中,DDL定义关系模式、删除关系、修改关系模式以及创建数据库中的各种对象,是由结构化查询语言集中负责数据结构定义与数据库对象定义的语言,并且由CREATE、ALTER、DROP和TRUNCATE四个语法组成,主要用于定义或改变表的结构、数据类型、表之间的链接和约束等初始化工作。DCL是用来设置或更改数据库用户或角色权限,包括GRANT、DENY、REVOKE等语句。DML是用来对数据库的数据进行一些操作,包括SELECT、UPDATE、INSERT、DELETE等语句。待执行脚本集包含中数据定义语言、数据控制语言和数据操纵语言中至少一种操作类型的待执行脚本。
实际应用中,针对每个目标服务模块,工作人员录入用于更新该目标服务模块的至少一种操作类型的待执行脚本(待执行脚本集),相应地,执行主体获取到该目标服务模块对应的待执行脚本集。或者,在确定了目标服务模块之后,执行主体基于目标服务模块的标识,从该标识对应的存储区获取该目标服务模块对应的待执行脚本集。
需要说明的是,为保证数据库可以正常进行更新,获取的待执行脚本集中待执行脚本已经经过测试,并且测试通过。
步骤203:读取所述目标服务模块的源数据库设计模式。
具体地,源数据库设计模式是指在多租户场景下,源数据库的架构,主要包括三种:独立数据库模式、共享数据库独立Schema模式和共享数据库共享数据表模式。
实际应用中,可以基于目标服务模块中源数据库的架构,识别目标服务模块的源数据库设计模式,也可以从目标服务模块的属性信息中获取目标服务模块的源数据库设计模式信息,即读取源数据库设计模式。
步骤204:基于所述源数据库设计模式对应的更新策略和各操作类型的优先级,依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新,并生成执行记录。
具体地,更新策略是指对待更新数据库进行更新的方式、方案。优先级(priority)是指优先执行的等级,优先级越高,执行顺序越靠前,优先级越低,执行顺序越靠后。待更新数据库是指进行初始、升级等更新操作的数据库。执行记录是指执行待执行脚本过程的记录,包括执行时间、执行结果等内容。
实际应用中,各源数据库设计模式均有与之对应的更新策略,针对任一目标服务模块,根据该目标服务模块的源数据库设计模式所对应的更新策略,结合待执行脚本集中各待执行脚本的操作类型的优先级,依次执行各待执行脚本,以实现对目标服务模块下的待更新数据库进行更新,并在执行过程中生成执行记录。
本发明提供的数据库更新方法,通过读取目标服务模块的源数据库设计模式,针对不同的源数据库设计模式,使用不同更新策略和各操作类型的优先级,对依次执行各待执行脚本对待更新数据库进行更新,实现了基于待执行脚本的操作类型,控制待执行脚本的执行优先级,减少待执行脚本因执行顺序引起的执行失败,提升微服务模块化后源数据库设计模式融合化后多租户执行便捷性,减少人工繁琐操作,避免人为事故发生。此外,通过生成执行记录,可以进行执行记录的查询输出,使更新操作可视化。
在本发明一个或更多个可选的实施例中,为了提高更新效率和成功率,针对不同的源数据库设计模式,采用不同的更新策略。也即所述基于所述源数据库设计模式对应的更新策略和各操作类型的优先级,依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新,包括:
在所述源数据库设计模式为独立数据库模式或共享数据库独立架构模式的情况下,确定所述目标服务模块关联的租户信息;针对所述目标服务模块中每个租户信息对应的待更新数据库,按照各操作类型的优先级,依次执行各待执行脚本对所述待更新数据库进行更新;
在所述源数据库设计模式为共享数据库共享表模式的情况下,获取所述目标服务模块关联的数据库信息;针对所述数据库信息对应的每个待更新数据库,按照各操作类型的优先级,依次执行各待执行脚本对所述待更新数据库进行更新。
具体地,租户信息是指使用目标服务模块进行服务的用户的信息,如租户标识、名称、租用时间等,租户信息经过租户授权使用或者不涉及租户隐私。数据库信息也即服务模块信息,表征目标服务模块下的各源数据库(数据库)。
实际应用中,在读取了目标服务模块的源数据库设计模式之后,若目标服务模块的源数据库设计模式为独立数据库模式或者共享数据库独立架构模式,则获取待操作的租户信息,即确定目标服务模块关联的租户信息,然后针对目标服务模块中各租户信息对应的待更新数据库,按照各待执行脚本的操作类型的优先级,依次执行各待执行脚本对该待更新数据库进行更新。
如此,在独立数据库模式或共享数据库独立架构模式下,对不同租户对应的待更新数据库分别进行更新,在共享数据库共享数据表模式下,对待更新数据库进行统一更新,可以自动对不同的源数据库设计模式下的数据库进行更新,无需人工维护,避免了人为失误导致的生产事故,将数据库的更新简化,缩减了数据库更新耗时。
可选地,为了提高更新成功率,不同的操作类型的待执行脚本有不同的执行顺序。也即所述操作类型包括数据定义语言类型、数据控制语言类型和数据操纵语言类型;所述数据定义语言类型的优先级高于所述数据控制语言类型的优先级,所述数据控制语言类型的优先级高于所述数据操纵语言类型的优先级;
相应地,所述按照各操作类型的优先级,依次执行各待执行脚本对所述待更新数据库进行更新,包括:
依次执行所述数据定义语言类型的待执行脚本、所述数据控制语言类型的待执行脚本和所述数据操纵语言类型的待执行脚本,对所述待更新数据库进行更新。
实际应用中,待执行脚本均采用结构化查询语言(Structured Query Language,SQL),由于SQL(数据库的标准的计算机语言)的特性,将待执行脚本的操作类型分为DDL类型、DCL类型、DML类型,按照数据定义语言类型优先于数据控制语言类型,数据控制语言类型优先于数据控制语言类型的顺序,依次执行DDL类型待执行脚本、DCL类型待执行脚本和DML类型待执行脚本,对待更新数据库进行更新,减少了不同SQL待执行脚本因执行顺序问题引发执行失败的情况,进而提高了数据库的更新成功率。
需要说明的是,可以将待执行脚本集输入至迭代执行器或者执行器,执行器内部设置有优先级逻辑(DDL类型>DCL类型>DML类型),此时执行器基于优先级逻辑,依次执行各待执行脚本。
在本发明一个或更多个可选的实施例中,由于DML类型的待执行脚本涉及数据库提交事务,因此,在执行DML类型的待执行脚本时需要进行事务提交。也即所述依次执行所述数据定义语言类型的待执行脚本、所述数据控制语言类型的待执行脚本和所述数据操纵语言类型的待执行脚本,对所述待更新数据库进行更新,包括:
针对所述数据操纵语言类型的待执行脚本,获取所述数据控制语言类型的待执行脚本的提交标识;
执行所述数据操纵语言类型的待执行脚本,对所述待更新数据库进行更新,并根据所述提交标识进行执行事务提交。
具体地,提交事务意味着真正执行事务包含的SQL语句,并把对数据库的修改写入到磁盘上的物理数据库中。DML类型的待执行脚本涉及数据库提交事务,在录入DML类型的待执行脚本过程中需要明确是否需要自动提交。可选地,DML类型的待执行脚本自行进行数据库事务提交,则录入DML类型的待执行脚本选择时无需自动提交,此场景执行失败时不具备自动事务回滚能力。可选地,DML类型的待执行脚本不自行进行数据库事务提交,则录入DML类型的待执行脚本时需要选择需自动提交,此场景执行失败时自动回滚至待执行脚本执行前的源数据状态。
实际应用中,在执行DML类型的待执行脚本时,此获取DML类型的待执行脚本的提交标识,确定DML类型的待执行脚本是否自动提交,可选地,DML类型的待执行脚本的提交标识为无需自动提交,则执行DML类型的待执行脚本并交由DML类型的待执行脚本事务提交。可选地,DML类型的待执行脚本的提交标识为自动提交,则执行DML类型的待执行脚本,由执行器执行完成后提交数据库事务。
例如,DML类型的待执行脚本的提交标识为无需自动提交,则设置执行器的自动提交标识为FALSE,不进行自动提交,交由DML类型的待执行脚本执行事务提交。DML类型的待执行脚本的提交标识为需要自动提交,则设置执行器的自动提交标识为TRUE,交由执行器执行完成后自动提交数据库事务。
如此,针对不同提交标识的DML类型的待执行脚本,采用不同的方式进行事务提交,可以提高事务提交效率,保证待执行脚本的顺利执行,进而提高数据库的更新效率。
此外,针对每个待执行脚本,在执行该待执行脚本进行数据库更新的同时,也需要针对该待执行脚本的执行,生成执行记录。也即所述依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新,并生成执行记录,包括:
针对任一待执行脚本,生成执行成功日志文件模板和执行失败日志文件模板;
执行所述待执行脚本对所述目标服务模块下的待更新数据库进行更新,并在执行过程中基于所述执行成功日志文件模板和执行失败日志文件模板,生成执行成功日志文件和执行失败日志;
记录所述执行过程的开始时间、结束时间、目标服务模块、所述待执行脚本的操作类型、结束标识、所述执行成功日志文件的标识和所述执行失败日志文件的标识,得到执行记录。
具体地,执行成功日志文件模板和执行失败日志文件模板分别是指执行待执行脚本成功、执行待执行脚本失败对应的日志文件所对应的模板。执行成功日志文件的标识可以是执行成功日志文件ID,执行失败日志文件的标识可以是执行失败日志文件ID。
实际应用中,在执行任一待执行脚本时,先为该待执行脚本分配执行成功、失败的日志记录文件,即生成执行成功日志文件模板和执行失败日志文件模板,以便于后续在执行过程中在执行成功日志文件模板和执行失败日志文件模板中填写相应的内容。同时,还可以为执行器分配执行失败和执行成功的日志文件流。进一步地,由执行器执行该待执行脚本,在执行过程中通过分析脚本执行日志,标识待执行脚本是否成功。如果成功,则将成功结果填写至执行成功日志文件模板,得到执行成功日志文件,将空的执行失败日志文件模板确定为执行失败日志。如果失败,则将失败结果填写至执行失败日志文件模板,得到执行失败日志文件,将空的执行成功日志文件模板确定为执行成功日志。
进一步地,记录该待执行脚本的执行过程的开始时间、结束时间、对应的目标服务模块、该待执行脚本的操作类型、结束标识、该记录所述执行过程的开始时间、结束时间、目标服务模块、所述待执行脚本对应的执行成功日志文件的标识和所述执行失败日志文件的标识,得到执行记录。即每个待执行脚本对应一个执行记录。
如此,针对多租户多操作类型的待执行脚本,通过分别创建独立的执行成功日志文件、执行失败日志文件,通过执行记录清晰完整地记录整个迭代内的待执行脚本执行情况,实现了直观准确地记录源数据库迭代情况,在执行异常时能够及时作出对应调整方案,进一步避免生产事故。
在本发明一个或更多个可选的实施例中,可以为工作人员提供查看功能,以便于了解执行情况。即所述依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新之前,还包括:
根据所述版本发布单生成初始执行报告,所述初始执行报告记录有所述版本发布单的标识和开始执行时间;
相应地,所述生成执行记录之后,还包括:
根据所述执行记录,对所述初始执行报告进行完善,得到目标执行报告,所述目标执行报告至少记录有服务模块数量、待执行脚本数量、执行成功的脚本数量、执行失败的脚本数量;
在接收到针对所述执行记录和/或所述目标执行报告的查看请求的情况下,通过显示器显示所述执行记录和/或所述目标执行报告。
具体地,初始执行报告,也即版本发布单报告,记录有版本发布单的标识和开始执行时间,如版本发布单ID、版本发布单开始执行时间等。目标执行报告是指更新后的执行报告。
实际应用中,可以在执行待执行脚本之前,记录版本发布单的标识和开始执行时间,生成初始执行报告。在所有待执行脚本执行完成后,根据各待执行脚本的执行记录,更新初始执行报告,也即对初始执行报告进行完善,在初始执行报告中添加进行更新的服务模块的数量(服务模块数量)、待执行脚本数量、执行成功的脚本数量、执行失败的脚本数量,得到目标执行报告。
此外,还可以更新版本发布单的状态,包括成功、部分成功和失败三个状态,其中,成功表征所有待执行脚本的执行结果均为成功,部分成本表征部分待执行脚本的执行结果均为成功、部分待执行脚本的执行结果均为失败,失败表征所有待执行脚本的执行结果均为失败。
进一步地,工作人员可以通过显示器中的可视界面对执行记录和/或目标执行报告进行查看,即在接收到针对执行记录和/或所述目标执行报告的查看请求的情况下,通过显示器的可视界面显示执行记录和/或目标执行报告。此外,工作人员还可以通过显示器中的可视界面查看版本发布单、执行成功日志文件、执行失败日志文件等。
需要说明的是,可以无需生成初始执行报告,直接根据执行记录和版本发布单,生成目标执行报告。
如此,通过提供查询功能,实现了操作可视化、执行日志可查可输出、版本迭代报告生成导出。在执行异常时能够及时作出对应调整方案,进一步避免生产事故。
在本发明一个或更多个可选的实施例中,在执行待执行脚本之前,还需要进行审核,只有审核通过,才能对数据库进行更新。也即所述读取所述目标服务模块的源数据库设计模式之前,还包括:
根据所述目标服务模块和所述待执行脚本集,生成待办审核单;
相应地,所述读取所述目标服务模块的源数据库设计模式,包括:
在所述待办审核单审核通过的情况下,读取所述目标服务模块的源数据库设计模式。
具体地,待办审核单也即待办的自动化办公(Office Automation,OA)工单。
实际应用中,根据版本发布单涉及的源数据库操作的目标服务模块和录入的待执行脚本(待执行脚本集),生成待办的OA工单(待办审核单)推送至数据库管理员(leader及DBA),由leader及DBA审核确认(审核通过)后,由系统维护人员发起版本发布单的执行操作,即发起待执行脚本的执行。若审核未通过,则结束。
如此,通过对待办审核单进行审核,实现对版本发布单和待执行脚本的审核,可以过滤掉部分无法进行数据库更新的版本发布单和待执行脚本,有利于提高数据库更新的成功率。并且可以减少对不合格的版本发布单和待执行脚本的处理,避免资源浪费。
下面结合图3-图5对上述数据库更新方法进行进一步说明。图3是本发明提供的数据库更新方法的流程示意图之二,图4是本发明提供的数据库更新方法的流程示意图之三,图5是本发明提供的执行待执行脚本的流程示意图。本发明提供了一种数据库更新方法,能够可控可视化地初始、升级SaaS多租户多服务源数据库,主要包括版本发布单管理、服务模块管理、待执行脚本管理、待执行租户信息、执行记录管理、版本报告管理和执行日志管理。具体实现如下:
第一步根据版本迭代规划,创建或制定版本发布单,并选择迭代涉及的源数据库操作的服务模块,即根据创建的版本发布单,确定待更新的目标服务模块,如服务模块A、服务模块B和服务模块C。
第二步根据版本发布单涉及的源数据库操作的目标服务模块,分别录入指定操作类型的待执行脚本,即基于目标服务模块,获取录入的待执行脚本集。例如,针对服务模块A录入数据定义语言类型的待执行脚本和数据操纵语言类型的待执行脚本,针对服务模块B录入数据控制语言类型的待执行脚本和数据操纵语言类型的待执行脚本,针对服务模块C录入数据定义语言类型的待执行脚本、数据控制语言类型的待执行脚本和数据操纵语言类型的待执行脚本。
第三步根据版本发布单涉及的源数据库操作的服务模块及录入的待执行脚本,生成待办的OA工单推送至leader及DBA(数据库管理员)进行审批,由leader及DBA审核确认后,由系统维护人员发起版本发布单执行操作,即发起执行。
第四步待执行的版本发布单进入源数据库迭代执行器,即执行器读取发布单信息,然后创建初始版本发布单报告(初始执行报告),记录版本发布单ID、版本发布单开始执行时间等。获取版本发布单对应的目标服务模块(读取服务模块),读取服务模块源数据库设计模式并读取待执行脚本,按照待执行脚本的操作类型的优先级排序待执行脚本,即按照配置优先级排序脚本。判断读取的服务模块源数据库设计模式是否为共享数据库共享数据表模式。
若否,说明服务模块源数据库设计模式为独立数据库模式或共享数据库独立Schema模式,则获取租户信息,针对各租户信息对应的待更新数据库,即获取数据库连接,生成执行成功日志文件模板和执行失败日志文件模板,分配执行器失败、成功的日志文件流,然后执行脚本并生成执行日志(执行记录,执行日志),在执行过程中基于执行成功日志文件模板和执行失败日志文件模板,生成执行成功日志文件和执行失败日志。
若是,生成执行成功日志文件模板和执行失败日志文件模板,分配执行器失败、成功的日志文件流,获取服务模块的源数据库信息,即获取服务模块信息,然后执行脚本,在执行过程中基于执行成功日志文件模板和执行失败日志文件模板,生成执行成功日志文件和执行失败日志。
具体地,执行器内置逻辑优先执行DDL类型的待执行脚本,通过分析执行脚本执行日志,标识脚本是否执行成功,记录当前操作服务模块的DDL类型的待执行脚本执行记录,记录开始时间、操作服务模块、待执行脚本的类型、待执行脚本执行结束时间、待执行脚本执行结果标识、待执行脚本成功日志文件ID、待执行脚本失败的日志文件ID。DDL类型的待执行脚本执行成功后,按执行器内置逻辑再执行DCL类型的待执行脚本,通过分析执行脚本执行日志,标识脚本是否执行成,记录当前操作服务模块的DCL类型的待执行脚本执行记录,记录开始时间、操作服务模块、待执行脚本的类型、待执行脚本执行结束时间、待执行脚本执行结果标识、待执行脚本成功日志文件ID、待执行脚本失败的日志文件ID。DCL类型的待执行脚本执行成功后,按执行器内置逻辑最后执行DML类型的待执行脚本,记录当前操作服务模块的DML类型的待执行脚本执行记录,记录开始时间、操作服务模块、待执行脚本的类型、待执行脚本执行结束时间、待执行脚本执行结果标识、待执行脚本成功日志文件ID、待执行脚本失败的日志文件ID。其中,需要循环服务模块的待执行脚本,每次执行均生成新的日志文件(分租户分服务模块)。
第五步版本迭代单涉及的服务模块内各类型待执行脚本执行完成后,根据生成的执行日志(执行记录)完善初始执行报告,在初始执行报告中记录执行涉及服务模块个数、操作执行的脚本个数、操作执行成功的脚本个数、操作执行失败的脚本个数的,得到目标执行报告,即生成执行报告。更新版本发布单状态(成功、部分成功、失败)。
第六步WEB服务端提供可视界面查看版本发布单、版本发布单报告、版本执行成功脚本日志、版本执行失败脚本日志。
上述实施例,兼容微服务模块化时源数据库设计模式融合化后多租户初始、升级SaaS服务,可视化操作,执行过程完整记录执行情况,输出完整的成功、失败日志,便于定位错误及时更新解决,形成完整的版本报告。减少人工繁琐操作,避免人为事故发生。结合SQL(数据库的标准的计算机语言)的特性,将待执行脚本分类型(DDL、DCL、DML),脚本执行器内置类型优先级逻辑(DDL>DCL>DML),减少不同SQL待执行脚本因执行顺序问题引发执行失败的情况。脚本执行器内部针对多租户多类型待执行脚本分别创建独立的成功、失败的日志文件,清晰完整地记录整个迭代内的脚本执行情况。建立版本发布单留存,适应SaaS软件模式下的快速迭代下源数据库变化的记录留存,对接OA工单审批流,规范SaaS软件模式下快速迭代时源数据库变化审批工作流。提供完整的独立的计算机软件装置,实现操作可视化、执行日志可查可输出、版本迭代报告生成导出。
下面对本发明提供的数据库更新装置进行描述,下文描述的数据库更新装置与上文描述的数据库更新方法可相互对应参照。
图6是本发明提供的数据库更新装置的结构示意图,如图6所示,该数据库更新装置600包括:确定模块601、获取模块602、读取模块603和更新模块604,其中:
确定模块601,被配置为根据创建的版本发布单,确定待更新的目标服务模块;
获取模块602,被配置为基于所述目标服务模块,获取录入的待执行脚本集,所述待执行脚本集包含至少一种操作类型的待执行脚本;
读取模块603,被配置为读取所述目标服务模块的源数据库设计模式;
更新模块604,被配置为基于所述源数据库设计模式对应的更新策略和各操作类型的优先级,依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新,并生成执行记录。
本发明提供的数据库更新装置,通过读取目标服务模块的源数据库设计模式,针对不同的源数据库设计模式,使用不同更新策略和各操作类型的优先级,对依次执行各待执行脚本对待更新数据库进行更新,实现了基于待执行脚本的操作类型,控制待执行脚本的执行优先级,减少待执行脚本因执行顺序引起的执行失败,提升微服务模块化后源数据库设计模式融合化后多租户执行便捷性,减少人工繁琐操作,避免人为事故发生。此外,通过生成执行记录,可以进行执行记录的查询输出,使更新操作可视化。
可选地,所述更新模块604,进一步被配置为:
在所述源数据库设计模式为独立数据库模式或共享数据库独立架构模式的情况下,确定所述目标服务模块关联的租户信息;针对所述目标服务模块中每个租户信息对应的待更新数据库,按照各操作类型的优先级,依次执行各待执行脚本对所述待更新数据库进行更新;
在所述源数据库设计模式为共享数据库共享表模式的情况下,获取所述目标服务模块关联的数据库信息;针对所述数据库信息对应的每个待更新数据库,按照各操作类型的优先级,依次执行各待执行脚本对所述待更新数据库进行更新。
可选地,所述操作类型包括数据定义语言类型、数据控制语言类型和数据操纵语言类型;所述数据定义语言类型的优先级高于所述数据控制语言类型的优先级,所述数据控制语言类型的优先级高于所述数据操纵语言类型的优先级;
相应地,所述更新模块604,进一步被配置为:
依次执行所述数据定义语言类型的待执行脚本、所述数据控制语言类型的待执行脚本和所述数据操纵语言类型的待执行脚本,对所述待更新数据库进行更新。
可选地,所述更新模块604,进一步被配置为:
针对所述数据操纵语言类型的待执行脚本,获取所述数据控制语言类型的待执行脚本的提交标识;
执行所述数据操纵语言类型的待执行脚本,对所述待更新数据库进行更新,并根据所述提交标识进行执行事务提交。
可选地,所述更新模块604,进一步被配置为:
针对任一待执行脚本,生成执行成功日志文件模板和执行失败日志文件模板;
执行所述待执行脚本对所述目标服务模块下的待更新数据库进行更新,并在执行过程中基于所述执行成功日志文件模板和执行失败日志文件模板,生成执行成功日志文件和执行失败日志;
记录所述执行过程的开始时间、结束时间、目标服务模块、所述待执行脚本的操作类型、结束标识、所述执行成功日志文件的标识和所述执行失败日志文件的标识,得到执行记录。
可选地,所述装置还包括第一生成模块,被配置为:
根据所述版本发布单生成初始执行报告,所述初始执行报告记录有所述版本发布单的标识和开始执行时间;
相应地,所述装置还包括显示模块,被配置为:
根据所述执行记录,对所述初始执行报告进行完善,得到目标执行报告,所述目标执行报告至少记录有服务模块数量、待执行脚本数量、执行成功的脚本数量、执行失败的脚本数量;
在接收到针对所述执行记录和/或所述目标执行报告的查看请求的情况下,通过显示器显示所述执行记录和/或所述目标执行报告。
可选地,所述装置还包括第二生成模块,被配置为:
根据所述目标服务模块和所述待执行脚本集,生成待办审核单;
相应地,所述读取模块603,进一步被配置为:
在所述待办审核单审核通过的情况下,读取所述目标服务模块的源数据库设计模式。
图7示例了一种电子设备的实体结构示意图,如图7所示,该电子设备可以包括:处理器(processor)710、通信接口(Communications Interface)720、存储器(memory)730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储器730中的逻辑指令,以执行数据库更新方法,该方法包括:根据创建的版本发布单,确定待更新的目标服务模块;基于所述目标服务模块,获取录入的待执行脚本集,所述待执行脚本集包含至少一种操作类型的待执行脚本;读取所述目标服务模块的源数据库设计模式;基于所述源数据库设计模式对应的更新策略和各操作类型的优先级,依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新,并生成执行记录。
此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的数据库更新方法,该方法包括:根据创建的版本发布单,确定待更新的目标服务模块;基于所述目标服务模块,获取录入的待执行脚本集,所述待执行脚本集包含至少一种操作类型的待执行脚本;读取所述目标服务模块的源数据库设计模式;基于所述源数据库设计模式对应的更新策略和各操作类型的优先级,依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新,并生成执行记录。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种数据库更新方法,其特征在于,包括:
根据创建的版本发布单,从微服务架构中确定待更新的目标服务模块;
基于所述目标服务模块,获取录入的待执行脚本集,所述待执行脚本集包含至少一种操作类型的待执行脚本,所述操作类型是指对数据库的基本操作类型;
读取所述目标服务模块的源数据库设计模式;
基于所述源数据库设计模式对应的更新策略和各操作类型的优先级,依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新,并生成执行记录;
其中,所述基于所述源数据库设计模式对应的更新策略和各操作类型的优先级,依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新,包括:
在所述源数据库设计模式为独立数据库模式或共享数据库独立架构模式的情况下,确定所述目标服务模块关联的租户信息;针对所述目标服务模块中每个租户信息对应的待更新数据库,基于所述源数据库设计模式对应的更新策略,按照各操作类型的优先级,依次执行各待执行脚本对所述待更新数据库进行更新;
在所述源数据库设计模式为共享数据库共享表模式的情况下,获取所述目标服务模块关联的数据库信息;针对所述数据库信息对应的每个待更新数据库,基于所述源数据库设计模式对应的更新策略,按照各操作类型的优先级,依次执行各待执行脚本对所述待更新数据库进行更新;
所述操作类型包括数据定义语言类型、数据控制语言类型和数据操纵语言类型;所述数据定义语言类型的优先级高于所述数据控制语言类型的优先级,所述数据控制语言类型的优先级高于所述数据操纵语言类型的优先级;
相应地,所述按照各操作类型的优先级,依次执行各待执行脚本对所述待更新数据库进行更新,包括:
依次执行所述数据定义语言类型的待执行脚本、所述数据控制语言类型的待执行脚本和所述数据操纵语言类型的待执行脚本,对所述待更新数据库进行更新。
2.根据权利要求1所述的方法,其特征在于,所述依次执行所述数据定义语言类型的待执行脚本、所述数据控制语言类型的待执行脚本和所述数据操纵语言类型的待执行脚本,对所述待更新数据库进行更新,包括:
针对所述数据操纵语言类型的待执行脚本,获取所述数据控制语言类型的待执行脚本的提交标识;
执行所述数据操纵语言类型的待执行脚本,对所述待更新数据库进行更新,并根据所述提交标识进行执行事务提交。
3.根据权利要求1或2所述的数据库更新方法,其特征在于,所述依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新,并生成执行记录,包括:
针对任一待执行脚本,生成执行成功日志文件模板和执行失败日志文件模板;
执行所述待执行脚本对所述目标服务模块下的待更新数据库进行更新,并在执行过程中基于所述执行成功日志文件模板和执行失败日志文件模板,生成执行成功日志文件和执行失败日志;
记录所述执行过程的开始时间、结束时间、目标服务模块、所述待执行脚本的操作类型、结束标识、所述执行成功日志文件的标识和所述执行失败日志文件的标识,得到执行记录。
4.根据权利要求1或2所述的数据库更新方法,其特征在于,所述依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新之前,还包括:
根据所述版本发布单生成初始执行报告,所述初始执行报告记录有所述版本发布单的标识和开始执行时间;
相应地,所述生成执行记录之后,还包括:
根据所述执行记录,对所述初始执行报告进行完善,得到目标执行报告,所述目标执行报告至少记录有服务模块数量、待执行脚本数量、执行成功的脚本数量、执行失败的脚本数量;
在接收到针对所述执行记录和/或所述目标执行报告的查看请求的情况下,通过显示器显示所述执行记录和/或所述目标执行报告。
5.根据权利要求1或2所述的数据库更新方法,其特征在于,所述读取所述目标服务模块的源数据库设计模式之前,还包括:
根据所述目标服务模块和所述待执行脚本集,生成待办审核单;
相应地,所述读取所述目标服务模块的源数据库设计模式,包括:
在所述待办审核单审核通过的情况下,读取所述目标服务模块的源数据库设计模式。
6.一种数据库更新装置,其特征在于,包括:
确定模块,被配置为根据创建的版本发布单,从微服务架构中确定待更新的目标服务模块;
获取模块,被配置为基于所述目标服务模块,获取录入的待执行脚本集,所述待执行脚本集包含至少一种操作类型的待执行脚本,所述操作类型是指对数据库的基本操作类型;
读取模块,被配置为读取所述目标服务模块的源数据库设计模式;
更新模块,被配置为基于所述源数据库设计模式对应的更新策略和各操作类型的优先级,依次执行各待执行脚本对所述目标服务模块下的待更新数据库进行更新,并生成执行记录;
其中,所述更新模块,进一步被配置为:
在所述源数据库设计模式为独立数据库模式或共享数据库独立架构模式的情况下,确定所述目标服务模块关联的租户信息;针对所述目标服务模块中每个租户信息对应的待更新数据库,基于所述源数据库设计模式对应的更新策略,按照各操作类型的优先级,依次执行各待执行脚本对所述待更新数据库进行更新;
在所述源数据库设计模式为共享数据库共享表模式的情况下,获取所述目标服务模块关联的数据库信息;针对所述数据库信息对应的每个待更新数据库,基于所述源数据库设计模式对应的更新策略,按照各操作类型的优先级,依次执行各待执行脚本对所述待更新数据库进行更新;
所述操作类型包括数据定义语言类型、数据控制语言类型和数据操纵语言类型;所述数据定义语言类型的优先级高于所述数据控制语言类型的优先级,所述数据控制语言类型的优先级高于所述数据操纵语言类型的优先级;
相应地,所述更新模块,进一步被配置为:
依次执行所述数据定义语言类型的待执行脚本、所述数据控制语言类型的待执行脚本和所述数据操纵语言类型的待执行脚本,对所述待更新数据库进行更新。
7.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述数据库更新方法。
8.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述数据库更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310445588.0A CN116226092B (zh) | 2023-04-24 | 2023-04-24 | 数据库更新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310445588.0A CN116226092B (zh) | 2023-04-24 | 2023-04-24 | 数据库更新方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116226092A CN116226092A (zh) | 2023-06-06 |
CN116226092B true CN116226092B (zh) | 2023-08-08 |
Family
ID=86569732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310445588.0A Active CN116226092B (zh) | 2023-04-24 | 2023-04-24 | 数据库更新方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116226092B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110377583A (zh) * | 2019-06-17 | 2019-10-25 | 平安普惠企业管理有限公司 | 数据库脚本执行方法、装置、计算机设备和存储介质 |
CN112000349A (zh) * | 2020-07-28 | 2020-11-27 | 山东浪潮易云在线科技有限公司 | 一种基于SaaS的数据升级方法、设备及介质 |
CN113703942A (zh) * | 2021-08-30 | 2021-11-26 | 合众人寿保险股份有限公司 | 脚本执行方法、装置及计算机设备 |
CN113901025A (zh) * | 2021-09-28 | 2022-01-07 | 上海完美时空软件有限公司 | 数据库管理方法、装置、设备和存储介质 |
CN115309831A (zh) * | 2022-10-11 | 2022-11-08 | 苏州青颖飞帆软件科技有限公司 | 一种本地数据库状态同步方法、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180096012A1 (en) * | 2016-09-30 | 2018-04-05 | Salesforce.Com, Inc. | Multi-tenant non-relational platform objects |
-
2023
- 2023-04-24 CN CN202310445588.0A patent/CN116226092B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110377583A (zh) * | 2019-06-17 | 2019-10-25 | 平安普惠企业管理有限公司 | 数据库脚本执行方法、装置、计算机设备和存储介质 |
CN112000349A (zh) * | 2020-07-28 | 2020-11-27 | 山东浪潮易云在线科技有限公司 | 一种基于SaaS的数据升级方法、设备及介质 |
CN113703942A (zh) * | 2021-08-30 | 2021-11-26 | 合众人寿保险股份有限公司 | 脚本执行方法、装置及计算机设备 |
CN113901025A (zh) * | 2021-09-28 | 2022-01-07 | 上海完美时空软件有限公司 | 数据库管理方法、装置、设备和存储介质 |
CN115309831A (zh) * | 2022-10-11 | 2022-11-08 | 苏州青颖飞帆软件科技有限公司 | 一种本地数据库状态同步方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116226092A (zh) | 2023-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190317944A1 (en) | Methods and apparatus for integrated management of structured data from various sources and having various formats | |
US8893106B2 (en) | Change analysis on enterprise systems prior to deployment | |
US7610512B2 (en) | System and method for automated and assisted resolution of it incidents | |
US11573974B2 (en) | System and method for automatic correction/rejection in an analysis applications environment | |
US20160217423A1 (en) | Systems and methods for automatically generating application software | |
EP2610762A1 (en) | Database version management system | |
CN111651431A (zh) | 一种面向数据库服务的管理流程标准化方法 | |
US10311030B1 (en) | Method and system for implementing an automated migration tool | |
US10678775B2 (en) | Determining integrity of database workload transactions | |
EP3702954A1 (en) | Methods and systems for extending row-level security policies | |
US20140310715A1 (en) | Modeling and Consuming Business Policy Rules | |
US8327457B1 (en) | Managing asset access | |
US11741255B2 (en) | System and method of block chain based protection for customized data integration processes | |
CN109271199A (zh) | 一种用于数据库持续集成与脚本文件管理的方法及系统 | |
US8402433B2 (en) | Method and system for performing automated transactions using a server-side script-engine | |
KR102244887B1 (ko) | Sql 쿼리 추천 방법 및 시스템 | |
CN116226092B (zh) | 数据库更新方法及装置 | |
US10942924B2 (en) | LOB query performance via automatic inference of locator-less LOB by value semantics | |
US20230195792A1 (en) | Database management methods and associated apparatus | |
CN114895955A (zh) | 一种低代码平台元数据版本控制的方法、装置及设备 | |
US20100070954A1 (en) | Custom database system and method of building and operating the same | |
CN111597165B (zh) | 一种数据库管理方法、终端及存储介质 | |
US20230306126A1 (en) | Limiting cloud permissions in deployment pipelines | |
US20220342779A1 (en) | Self-healing for data protection systems using automatic macro recording and playback | |
Frye et al. | The SAP BW to HANA Migration Handbook |
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 |