一种数据库更新方法及系统
文献发布时间:2023-06-19 11:49:09
技术领域
本申请涉及互联网领域,具体而言,涉及一种数据库更新方法及系统。
背景技术
随着移动互联网技术的飞速发展,移动互联网公司的移动产品应用的更新频次也在日益增加。通常移动产品应用在客户端都存在对应的基础底层功能数据库。移动产品应用的更新迭代,导致对应的基础底层功能数据库也需要更新迭代。
随着技术的进一步发展,出现了仅需要更新基础底层功能数据库的工况。但现有技术中,基础底层功能数据库的结构与移动产品应用的实际业务存在绑定关系,在移动应用每次版本更新时,检测数据库版本是否存在变化,如果存在变化,结合与实际更新的业务数据结构更新数据库版本。数据库的更新依赖移动产品应用的版本的更新,每一次数据库的升级均会带来的移动产品应用(app)版本的发布,同时数据库的每次升级与实际移动应用的更新的业务数据结构产生了一个强绑定关系,使得跨平台更新不具备动态更新,且不具有通用更新的功能。严重影响了更新速度,并且造成了人力成本增加。
发明内容
本申请的目的在于提供一种数据库更新方法及系统,以至少部分改善上述问题。
为了实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供一种数据库更新方法,所述方法包括:
服务器依据预设语义规则生成升级数据包,其中,所述升级数据包包括不同版本的数据库对应目标版本的所需更新的业务数据结构;
所述服务器将所述升级数据包下发至客户端;
客户端依据所述预设语义规则解析所述升级数据包,获取对应的升级指令,其中,所述升级指令为实现目标业务数据结构的指令,所述目标业务数据结构为客户端中当前版本的数据库对应目标版本的所需更新的业务数据结构;
所述客户端执行对应的升级指令,以完成数据库升级。
第二方面,本申请实施例提供一种数据库更新方法,应用于服务器,所述方法包括:
所述服务器依据预设语义规则生成升级数据包,其中,所述升级数据包包括不同版本的数据库对应目标版本的所需更新的业务数据结构;
所述服务器将所述升级数据包下发至客户端。
第三方面,本申请实施例提供一种数据库更新方法,应用于客户端,所述方法包括:
所述客户端依据所述预设语义规则解析所述升级数据包,获取对应的升级指令,其中,所述升级数据包包括不同版本的数据库对应目标版本的所需更新的业务数据结构,所述升级指令为实现目标业务数据结构的指令,所述目标业务数据结构为客户端中当前版本的数据库对应目标版本的所需更新的业务数据结构;
所述客户端执行对应的升级指令,以完成数据库升级。
第四方面,本申请实施例提供一种数据库更新系统,所述系统包括服务器和客户端;
所述服务器用于依据预设语义规则生成升级数据包,其中,所述升级数据包包括不同版本的数据库对应目标版本的所需更新的业务数据结构;
所述服务器还用于将所述升级数据包下发至客户端;
所述客户端用于依据所述预设语义规则解析所述升级数据包,获取对应的升级指令,其中,所述升级指令为实现目标业务数据结构的指令,所述目标业务数据结构为客户端中当前版本的数据库对应目标版本的所需更新的业务数据结构;
所述客户端还用于执行对应的升级指令,以完成数据库升级。
相对于现有技术,本申请实施例所提供的一种数据库更新方法及系统中,服务器依据预设语义规则生成升级数据包;服务器将升级数据包下发至客户端;客户端依据预设语义规则解析升级数据包,获取对应的升级指令,其中,升级指令为实现目标业务数据结构的指令,目标业务数据结构为客户端中当前版本的数据库对应目标版本的所需更新的业务数据结构;客户端执行对应的升级指令,以完成数据库升级。通过数据库对应的升级数据包,自动独立完成数据库升级,不需要对应的应用发布新的版本,从而节省了开发时间和人力成本。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。
图1为本申请实施例提供的数据库更新方法的流程示意图;
图2本申请实施例提供的S203的子步骤示意图;
图3本申请实施例提供的数据库更新方法的流程示意图之一;
图4本申请实施例提供的适配层示意图;
图5本申请实施例提供的跨平台转换示意图;
图6本申请实施例提供的数据库更新方法的流程示意图之一;
图7本申请实施例提供的升级数据包配置示意图;
图8本申请实施例提供的数据库更新方法的流程示意图之一;
图9本申请实施例提供的数据库更新方法的流程示意图之一。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
在本申请的描述中,需要说明的是,术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该申请产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
需要说明的是,本申请实施例中,SQLite为一种软件库,实现自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎,移动应用产品的基础数据库。动态更新为移动应用不用发布更新版本,已有移动应用内部实现版本更新。跨平台为移动应用环境下,一种对一套技术实现能在多端(原生应用,ReacNative,Flutter,Web)运行的称谓。SQL语义通用规则为定义的一套来实现动态更新的通用性的,且用来组装数据库SQL语句的一套自定义规则。JSON数据(JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式。
为了克服现有技术所存在的问题,本申请实施例提供了一种数据库更新方法,如图1所示,数据库更新方法包括:
S101,服务器依据预设语义规则生成升级数据包。
其中,升级数据包包括不同版本的数据库对应目标版本的所需更新的业务数据结构。
可选地,目标版本为V3.0版本,升级数据包包括V1.0、V1.8、V2.0、V2.1、V2.5、V2.8等版本的数据库升级为V3.0版本所需更新的业务数据结构。
S102,服务器将升级数据包下发至客户端。
S203,客户端依据预设语义规则解析升级数据包,获取对应的升级指令。
其中,升级指令为实现目标业务数据结构的指令,目标业务数据结构为客户端中当前版本的数据库对应目标版本的所需更新的业务数据结构。
可选地,客户端依据其自身的当前版本从升级数据包中获取目标业务数据结构,进而获取与目标业务数据结构对应的升级指令。
S204,客户端执行对应的升级指令,以完成数据库升级。
综上所述,本申请实施例提供的数据库更新方法中,服务器依据预设语义规则生成升级数据包;服务器将升级数据包下发至客户端;客户端依据预设语义规则解析升级数据包,获取对应的升级指令,其中,升级指令为实现目标业务数据结构的指令,目标业务数据结构为客户端中当前版本的数据库对应目标版本的所需更新的业务数据结构;客户端执行对应的升级指令,以完成数据库升级。通过数据库对应的升级数据包,自动独立完成数据库升级,不需要对应的应用发布新的版本,从而节省了开发时间和人力成本。
关于前文所述的“升级数据包包括不同版本的数据库对应目标版本的所需更新的业务数据结构”,本申请实施例还提供了一种可能的实现方式,请参考下文。
假设将V1.0版本的数据库升级为V3.0版本的数据库,需要创建一个名为Person的表,表里面列有name和age两个字段,定义创建表的语义数据结构规则如下:
通过上述规则,可以描述任何业务场景下创建表的共性规则,达到创建表的目的。
假设将V2.0版本的数据库升级为V3.0版本的数据库,需要针对如上V1版本的Person表新增一列,叫address地址,新增列的共SQL语义规则定义如下:
通过将升级操作符通过跨平台数据格式JSON描述出来后,创建服务端Server和Client客户端通信时的描述版本审计的数据结构。
在图1的基础上,对于S203中的内容,本申请实施例还提供了一种可能的实现方式,请参考图2,S203包括:
S203-1,客户端依据预设语义规则解析升级数据包,获取对应的目标业务数据结构。
可选地,目标业务数据结构可以为上述的“V1版本的Person表新增一列,叫address地址”或者“创建一个名为Person的表,表里面列有name和age两个字段”。
S203-2,客户端依据目标业务数据结构组装生成升级指令。
客户端在获取到目标业务数据后,依据预先设定的组装规则,对应目标业务数据结构进行组装,生成升级指令。
可选地,本申请实施例中升级数据包的数据格式为JSON格式,是一种轻量级的数据交换格式,可以适用于多端(原生应用,ReacNative,Flutter,Web)的数据格式。从而实现跨平台升级的目的,多端不同平台可以共用一个数据升级包。
可选地,在图1的基础上,关于对象为非原生应用时,如何进行数据转换,本申请实施例还提供了一种可能的实现方式,请参考图3,数据库更新方法还包括:
S202,客户端通过适配层将升级数据包转换为适用于客户端的升级数据包。
可选地,由于除了原生端,其他平台端如ReactNative,web,Flutter等平台,因不同平台的网络访问存在差异,因此需要统一端来对接其他衍生端的访问,从而需要通过适配层将升级数据包转换为适用于客户端的升级数据包。
以平台ReactNative(以下简称RN)为例,因RectNative平台原理性,网络访问最终是通过ReactNative的框架讲请求透传到原生平台,因此需要原生平台开发一套适配层,用于适配来自ReactNative平台发出的更新版本数据的请求,如图4所示,其中,server表示服务器,client表示客户端。客户端通过适配的module层获取到RN平台通过预设语义规则(SQL语义规则)生成的相关SQL操作行为和SQL升级行为对象数据描述,以该数据描述操作实际的SQLite数据更新。
以跨平台适配层数据转换为例进行说明,数据转换的目的是,依据预设语义规则(SQL语义规则)生成版本更新数据配置,转换成能供移动应用底层SQLite能够执行的符合标准的SQL语句,每个获取的版本数据中都包含两大部分数据描述:
Version:当前版本数据的版本号;
Operation:当前版本所有的操作符,用于拼接SQL语句;
OperationData:当前版操作符对应的实际操作数据,用于拼接SQL语句;
通过获取到的版本数据,转换成移动应用原生平台对应能识别的数据,最后根据数据结构组装出SQLite能识别的SQL语句,具体的操作实例如图5所示。
在图1的基础上,关于何时向客户端下发升级数据包,本申请实施例还提供了一种可能的实现方式,请参考图6,数据库更新方法,还包括:
S201,客户端向服务器传输升级请求。
可选地,客户端向服务器传输升级请求,以使服务器在接收到升级请求后,将升级数据包下发至客户端。
可选地,基于SQL语句定义SQL语义规则协议(预设语义规则)。
语义规则的定制主要有三个重要的作用,分别是跨平台、描述业务升级数据结构以及定义SQL语句执行的行为、定义SQL语句的升级行为、协助SQL语句生成等。
跨平台:使用JSON格式定义规则,方便在多平台之间传递。
描述业务升级数据结构:通过定制的语义规则,能动态满足不同业务场景下的对业务数据的升级描述。
定义SQL语句执行行为:SQLite能执行符合规定更新的操作符,如:ADD(增),DELETE(删),UPDATE(改),QUERY(查)等。
定义SQL语句的升级行为:SQLite能执行符合规定的升级操作符,如CREATE_TABLE(创建表),ADD_COLUMN(新增行),DELETE_TABL(删除表)等。
协助SQL语句生成:通过定制的规则,能形象的描述出一次SQLite升级的所需要的执行的SQL语句,如生成:SELECT*FROM TABLE WHERE Name=“SQLite”,类似的可执行语句。
可选地,协议规则说明如下:协议规则主要包含两部分:更新操作协议和升级操作协议。下文分别对两部分协议进行说明。
第一部分,更新操作协议(增删改查)。外层数据结果规则说明:
表1
Condition数据结构描述说明:
表2
Combine数据结构描述规则说明:
表3
itemList数据结构规则说明:
表4
sort排序数据结构规则说明:
表5
第二部分,升级操作协议。外层数据结构规则说明:
表6
operationList操作数据结构规则说明:
表7
fieldList数据规则说明:
表8
可选地,关于服务器(Server)如何可进行升级数据包配置,本申请实施例还提供了一种可能的实现方式。
服务器(server与客户端Client端协商获取预设语义规则(SQL语义规则),按照语义规则协议中升级操作协议配置,生成不同版本升级所需要的升级版本数据,每个升级版本数据都包含具体的操作符和对应的来描述实际业务操作的数据对象体,如图7所示。
本申请实施例提供的数据库更新方法,首先能够有效减少移动应用的发布次数,在移动应用使用诸如跨平台的开发方案(如ReactNative)的情况下,移动应用的几乎不存在版本的发布。其次,有效的降低了移动应用产品的研发成本。然后,多平台和多系统适配,很多实现逻辑一旦实现,移动应用开发数据库时,升级时只关心通过SQL语义规则定义好业务的升级规则。业务操作时,只关心操作符,和实际需要操作的业务数据。
本申请实施例还提供了一种数据库更新方法,应用于上文中的服务器,如图8所示,数据库更新方法包括:
S101,服务器依据预设语义规则生成升级数据包。
其中,升级数据包包括不同版本的数据库对应目标版本的所需更新的业务数据结构。
S102,服务器将升级数据包下发至客户端。
需要说明的是,本申请实施例中的服务器可以执行上述实施例中服务器所执行的步骤,以实现对应的技术效果,为了避免重复,在此不做赘述。
本申请实施例还提供了一种数据库更新方法,应用于上文中的客户端,如图9所示,数据库更新方法包括:
S203,客户端依据预设语义规则解析升级数据包,获取对应的升级指令。
其中,升级数据包包括不同版本的数据库对应目标版本的所需更新的业务数据结构,升级指令为实现目标业务数据结构的指令,目标业务数据结构为客户端中当前版本的数据库对应目标版本的所需更新的业务数据结构。
S204,客户端执行对应的升级指令,以完成数据库升级。
需要说明的是,本申请实施例中的客户端可以执行上述实施例中客户端所执行的步骤,以实现对应的技术效果,为了避免重复,在此不做赘述。
本申请实施例还提供了一种数据库更新系统,包括服务器和客户端;
服务器用于依据预设语义规则生成升级数据包,其中,升级数据包包括不同版本的数据库对应目标版本的所需更新的业务数据结构;
服务器还用于将升级数据包下发至客户端;
客户端用于依据预设语义规则解析升级数据包,获取对应的升级指令,其中,升级指令为实现目标业务数据结构的指令,目标业务数据结构为客户端中当前版本的数据库对应目标版本的所需更新的业务数据结构;
客户端还用于执行对应的升级指令,以完成数据库升级。
可选地,客户端还用于依据预设语义规则解析升级数据包,获取对应的目标业务数据结构;
客户端还用于依据目标业务数据结构组装生成升级指令。
可选地,升级数据包的数据格式为JSON格式。
需要说明的是,本申请实施例中的数据库更新系统可以执行上述数据库更新方法实施例中的步骤,以实现对应的技术效果,为了避免重复,在此不做赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
- 乐曲数据库的更新系统、发送装置、更新方法和发送方法以及具有乐曲数据库的更新功能的终端装置及其乐曲数据库的更新方法
- 数据库系统、数据库更新方法、数据库以及数据库更新程序