一种基于SaaS的数据升级方法、设备及介质与流程

文档序号:23101153发布日期:2020-11-27 13:09阅读:296来源:国知局
一种基于SaaS的数据升级方法、设备及介质与流程

本申请涉及saas领域,具体涉及一种基于saas的数据升级方法、设备及介质。



背景技术:

saas是software-as-a-service的缩写名称,意思为软件即服务,即通过网络提供软件服务。在saas模式下,当多租户的数据库分布在多个数据库实例中的多个数据库schema中,需要定期的用程序维护和升级数据库脚本时,通常会面临一些问题,例如:如果升级数据库时,由于开发人员编写sql脚本错误或者因为网络原因等导致升级失败,难以保证不影响其他的数据,并难以保证升级的安全性和一致性,



技术实现要素:

为了解决上述问题,本申请提出了一种基于saas的数据升级方法,包括:客户端访问saas系统并确定当前数据库需要进行数据升级;从所述saas系统中获取升级配置文件,所述升级配置文件中包含有sql脚本,所述sql脚本中包含有事务处理层,所述事务处理层中的数据定义语句ddl和数据操控语句dml存储在不同的集合中;基于目标版本与所述数据库当前版本之间的差值,使用所述sql脚本进行数据升级,其中,在使用所述sql脚本进行数据升级时,先执行所述ddl,再执行所述dml。

在一个示例中,所述升级配置文件为xml格式,所述升级配置文件包括:版本号层baseversion,包含有所述客户端对应的版本号;sql脚本层sqltext,包含有所述sql脚本;自定义方法层method,包含有相应的自定义方法。

在一个示例中,所述sql脚本包括:预校验层,用于对所述sql脚本的格式进行预校验。

在一个示例中,所述sql脚本包括:校验层,用于判断所述sql脚本中各语句所创建的新字段或新表是否已存在,并执行相应操作。

在一个示例中,所述事务处理层中的各语句通过预设符号进行分割;所述校验层,基于所述预设符号,针对所述sql脚本中每条语句,逐句判断所述每条语句创建的新字段或新表是否已存在,并执行相应操作。

在一个示例中,所述sql脚本包括:数据备份层,用于向备份服务器备份所述当前数据库对应的数据。

在一个示例中,所述sql脚本包括:异常处理层,用于在所述数据升级出现异常时,存储异常数据,并通过预设的方式向相关的人员发送通知。

在一个示例中,所述方法还包括:接收租户发送的个性化需求信息;确定针对所述个性化需求信息的升级配置文件;使用所述个性化需求信息的升级配置文件中的sql脚本,对所述租户对应的数据库进行数据升级。

另一方面,本申请还提出了一种基于saas的数据升级设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上述任意一项示例中所述的方法。

另一方面,本申请还提出了一种基于saas的数据升级的非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令设置为:如上述任意一项示例中所述的方法。

通过本申请提出基于saas的数据升级方法能够带来如下有益效果:

在执行sql脚本进行数据升级时,先执行不需要开启事务的ddl,再执行需要开启事务的dml,可以使得整个升级过程中不需要关注事务的一致性,系统会缜密的实现事务的控制逻辑,若ddl中出现了错误,也可以实现不影响其他的数据,有效保证升级的安全性和一致性。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本申请实施例中基于saas的数据升级方法的流程示意图;

图2为本申请实施例中基于saas的数据升级设备的示意图;

图3为本申请实施例中基于saas的数据升级方法的具体流程示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

以下结合附图,详细说明本申请各实施例提供的技术方案。

如图1和图3所示,本申请实施例提供一种基于saas的数据升级方法,包括:

s101、客户端访问saas系统并确定当前数据库需要进行数据升级。

在saas模式中,saas系统(即saas对应的服务器)中存储有多个软件,软件在使用过程中需要时常进行更新。而当用户(也称租户)通过本地的客户端访问saas系统时,如果所需要访问的软件相对于上次访问时进行了更新,则用户本地也需要对数据库进行更新(即数据升级),以保证该软件可以正常使用。

通常情况下,当使用客户端与saas系统进行数据交互时,首先需要请求响应的系统首页,此时客户端可以判断是否需要进行版本更新,如果数据库的当前版本小于目标版本(即saas系统中相对应的数据库的版本),则说明用户需要对本地的数据库进行更新。

s102、从所述saas系统中获取升级配置文件,所述升级配置文件中包含有sql脚本,所述sql脚本中包含有事务处理层,所述事务处理层中的数据定义语句ddl和数据操控语句dml存储在不同的集合中。

s103、基于目标版本与所述数据库当前版本之间的差值,使用所述sql脚本进行数据升级,其中,在使用所述sql脚本进行数据升级时,先执行所述ddl,再执行所述dml。

在客户端确定了本地的数据库需要进行更新后,可以在saas系统中获取相应的升级配置文件,然后使用该升级配置文件对本地的数据库进行相应的数据升级。

在使用升级配置文件进行升级的过程中,可以基于目标版本与数据库当前版本之间的差值进行读取升级内容并且封装成链表的形式进行循环执行升级,例如,数据库当前版本为v1.0.3版本,而目标版本为v1.0.5版本,则只需要获取v1.0.4与v1.0.5版本对应的升级配置文件即可。

而在使用升级配置文件进行升级时,通常是使用升级配置文件中的sql脚本进行升级的,其中,sql是structuredquerylanguage的简称,其中文名称为全称为结构化查询语句(或结构化查询语言),是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。而sql脚本则是指使用sql语言编译而成的脚本。

在sql脚本中包含有事务处理层,事务处理层中通常包含有多种语句,例如,可以包含数据定义语句(datadefinitionlanguage,ddl)、数据操控语句(datamanipulationlanguage,dml)、数据控制语句(datacontrollanguage、dcl)等,其中,ddl主要用于操作对象和对象的属性,这种对象包括数据库本身以及数据库对象,例如表、视图等,其可以是create创建数据表、alter更改表的字段、drop删除表等。而dml主要用于操作数据库对象中所包含的数据,也就是说操作的单位是记录,其可以是insert插入记录、update修改记录的内容、delete删除表中的记录等。

由于ddl语句是自动提交事务且不能回滚的,所以开发人员在进行开发时可以将ddl语句和dml语句放在不同的集合中,ddl集合执行时不需要开启事务,dml集合在升级时则需要开启事务,在执行sql脚本进行数据升级时,先执行不需要开启事务的ddl,再执行需要开启事务的dml,可以使得整个升级过程中不需要关注事务的一致性,系统会缜密的实现事务的控制逻辑,若ddl中出现了错误,也可以实现不影响其他的数据,有效保证升级的安全性和一致性。

在一个实施例中,升级配置文件为xml格式,升级配置文件可以包含:版本号层baseversion、sql脚本层sqltext、自定义方法层method,版本号层包含有客户端对应的版本号;sql脚本层包含sql脚本;自定义方法层包含有相应的自定义方法,用来处理逻辑复杂的数据升级操作,例如有关历史数据处理、查表等。而上述的进行循环执行升级指的就是循环basevesion进行升级。而在升级时,将ddl与dml分别存在两个容器中,并将methodname取到放入相应容器中,准备反射调用。升级配置文件具体包含的内容可以如下表所示:

在一个实施例中,sql脚本除了包含事务处理层外,还可以包含预校验层,预校验层主要用于对sql脚本的格式进行预校验,具体可以用到druid中的实现了访问者模式的各类visitor对sql进行读取与解析技术,在sql执行之前提前检验数据脚本的格式是否正确,使得操作更加安全和稳定。

sql脚本还可以包含校验层,校验成主要用于判断sql脚本中创建的新字段或新表是否已存在。鉴于数据库的特性,如果升级内容中有创建表或者创建新字段的sql脚本,需要判断该表或者该字段是否已经存在,如果在则不需要执行,否则会报出系统异常。而本申请实施例中将sqltext中的sql语句进行收集,并通过预设符号进行分割,例如通过符号“;”进行分割,此时校验层可以进行逐句判断,例如:create语句创建的表如果存在了就不需要创建,aterladd语句如果该表已经含有目标创建字段就不需要执行等;通过校验层自动判断并执行相应操作,可以节省开发人员的工作量,并且提高了安全性,开发者不需要再去考虑很多繁琐的判断逻辑,只需要关心sql语句即可。

sql脚本中还可以包括数据备份层,数据备份层主要用于向备份服务器备份当前数据库对应的数据。数据库在升级时会向备份服务器备份当前租户所在的数据库schema,如果备份服务器中已存在,则直接进行覆盖,使每一个租户都会拥有一套上一版本的数据结构,避免数据升级后有差错或者争议。

sql脚本中还可以包括异常处理层,异常处理层主要用于在数据升级出现异常时,存储异常数据,并通过预设的方式向相关的人员发送通知。具体当因开发人员编写sql错误或者因为网络故障等原因导致升级失败或出现异常时,可以通过服务器异步消息通知处理方式,记录用户在数据服务升级中的原因。不影响主线的产品及租户办公过程中的正常使用,然后使用预设的方式,例如通过短信或邮件等方式,快速通知服务器运维人员,进行快速突发性问题的定位与解决。

在一个实施例中,当前租户需求逐渐向个性化发展,对同规格产品间的差异性逐渐有初步认知,顾客对产品需求逐渐向少量多样发展,通过定制化产品来表现个人风格与满足个人需求。因此,当有租户想要在使用软件的过程中进行一些个性化定制时,可以发送相应的个性化需求。saas系统在接收到该个性化需求时,可以通过开发人员进行相应的软件开发,并开发相应的升级配置文件,租户即可通过客户端获取改升级配置文件,然后对本地的数据库进行相应的数据升级,稳定了线上其他部分租户的需求,也满足了租户定制化需求,实现企业级应用的公有节点和私有节点部署。

如图2所示,本申请实施例还提供了一种基于saas的数据升级设备,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上述任意一项实施例所述的方法。

本申请实施例还提供了一种基于saas的数据升级的非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:如上述任意一项实施例所述的方法。

本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本申请实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1