本申请涉及游戏系统开发运维领域,特别是涉及一种游戏数据库存储表升级方法和系统。
背景技术:
游戏在人们日常娱乐中是重要的一部分,随着游戏的数据量越来越大,在游戏系统的运维过程中,对于游戏数据库的升级是所有游戏开发人员必须面对的问题;
在相关技术中,游戏开发人员一般通过查看数据库sql文件日志,获取需要升级的sql文件;通过开发人员手动执行sql升级脚本文件,实现对游戏数据库的升级;但是,通过人员手动升级数据库的方法,由于没有对sql文件进行优先级限制,可能会出现数据库升级错误;另外,人工维护耗费的工作量较大。
目前针对相关技术中通过人员手动升级游戏数据库容易出现升级错误和工作量较大的问题,尚未提出有效的解决方案。
技术实现要素:
本申请实施例提供了一种游戏数据库自动升级方法、系统、计算机设备和计算机可读存储介质,以至少解决相关技术中通过人员手动升级数据库耗费工作量大以及容易出错的问题。
第一方面,本申请实施例提供了一种游戏数据库自动升级方法,应用在游戏系统中,所述方法包括:获取数据库、数据库版本号和第一升级脚本文件;基于所述数据库版本号,将所述第一升级脚本文件的文件名替换,生成第二升级脚本文件;其中,所述第二升级脚本文件的文件名以所述数据库版本号开始;在所述数据库版本号小于所述第二升级脚本文件的文件名的情况下,将所述数据库添加至执行列表;对于所述执行列表中的所述数据库,按照所述数据库版本号从小到大的顺序进行排序,生成序列化执行列表;使用所述第二升级脚本文件依次执行所述序列化执行列表中的文件,升级所述数据库。
在其中一些实施例中,所述方法还包括:使用所述第二升级脚本文件执行一次所述序列化执行列表后,修改本次被执行的所述数据库版本号后再次执行所述序列化执行列表,在所述序列化执行列表中所有文件执行结束的情况下,所述数据库升级完成。
在其中一些实施例中,所述使用所述第二升级脚本文件依次执行所述序列化执行列表中的文件包括:所述数据库是sql类型文件,所述第二升级脚本文件将其内部的语句当做sql语句执行。
在其中一些实施例中,所述使用所述第二升级脚本文件依次执行所述序列化执行列表中的文件的过程中,在所述第二升级脚本文件执行错误的情况下,游戏系统的执行窗口提示执行错误。
在其中一些实施例中,所述数据库版本号与所述数据库一一对应,升级后的所述数据库版本号大于未升级的所述数据库版本号。
第二方面,本申请实施例提供了一种游戏数据库自动升级系统,所述系统包括:获取存储模块、数据库模块、替换模块和升级模块,其中,所述数据库模块包括至少两个数据库;所述获取存储模块用于获取数据库文件、数据库版本号和第一升级脚本文件并存储;所述替换模块用于将所述第一升级脚本文件的文件名替换并生成第二升级脚本文件,其中,所述第二升级脚本文件的文件名以所述数据库版本号开始;所述升级模块用于在所述数据库版本号小于所述第二升级脚本文件的文件名的情况下,将所述数据库添加至执行列表并按照所述数据库版本号从小到大的顺序进行排序后生成序列化执行列表,所述升级模块使用所述第二升级脚本文件依次执行所述序列化执行列表中的文件,升级所述数据库。
在其中一些实施例中,所述系统还包括:所述升级模块在使用所述第二升级脚本文件执行一次所述序列化执行列表之后,所述升级模块修改本次被执行的所述数据库版本号后再次执行,在所述序列化执行列表中所有文件执行结束的情况下,所述数据库升级完成。
在其中一些实施例中,所述数据模块中的所述数据库为sql类型文件,所述升级模块在升级过程中,将所述第二升级脚本文件内部的语句当做sql语句执行。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现入第一方面所述的一种游戏数据库自动升级方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如第一方面所述的一种游戏数据库自动升级方法。
相比于相关技术,本申请实施例提供的一种游戏数据库自动升级方法,通过将升级脚本文件以数据库版本号作为开始的命名方式命名,再跟据该升级脚本文件的与该数据库的大小关系筛选需要升级的数据库后,获取序列化执行列表,采用升级脚本文件基于该序列化执行列表对游戏数据库进行升级的方法,解决了相关技术中通过人工手动升级游戏数据库容易出现升级错误和工作量较大的问题,提升了游戏数据库的升级效率、降低了升级错误率以及节省了人力成本。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种游戏数据库自动升级方法的应用环境示意图;
图2是根据本申请实施例的一种游戏数据库自动升级方法;
图3是根据本申请实施例的生成序列化执行列表的示意图;
图4是本申请实施例的使用第二升级脚本文件执行序列化执行列表的示意图;
图5是根据本申请实施例的一种游戏数据库自动升级的系统的结构框图;
图6是根据本申请实施例的电子设备的内部结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本申请提供的一种游戏数据库自动升级方法,可以应用于如图1所示的应用环境中,图1是根据本申请实施例的一种游戏数据库自动升级方法的应用环境示意图,如图1所示,用户通过终端10获取数据库信息,其中,终端10可以是pc电脑、智能手机、平板电脑或其他计算机设备,终端与服务器通过网络进行通信实现数据的上传或者下载;用户可以通过终端10的外接设备如电子触摸屏、键盘和鼠标等实现与终端10的交互;进一步的,该服务器11可以是独立的服务器,也可以是多个服务器组成的服务器集群来实现;另外,需要说明的是,本申请提供的一种数据库自动升级方法可以通过终端10独立实现,也可以通过终端10与服务器11配合以实现一种游戏数据库自动升级方法。
数据库是一个按数据结构来存储和管理数据的计算机软件系统,其可以理解为是用于合理保管数据的“仓库”,用户在该“仓库”中存放要管理的事务数据,数据库按照类型可以分为关系型数据库和非关系型数据库,常见的关系型数据库有mysql、sqlserver等;在本申请实施例中,具体以sql关系型数据库为例进行说明。
本申请提供了一种数据库自动升级方法,图2是本申请实施例的升级数据库的流程图,如图2所示,所述流程图包括如下步骤:
步骤s201,启动升级程序自动获取数据库、数据库版本号和第一升级脚本文件;需要说明的是,该数据库版本号与该数据库一一对应,为了需要满足开发的需求,游戏数据库需要不断升级,对应的,升级后的数据库版本号会替换为新的版本号;例如:更新前的数据库版本号是:version:1.0.0.1,更新后的数据库版本号可以是:version:1.0.0.2,可以理解,该数据库在升级完成后的版本号的数值大于未更新前的数据库版本号;另外,获取的第一升级脚本文件是通过游戏开发人员预设,用于升级数据库,在本申请实施例中,该第一升级脚本文件对本申请的方案并无核心影响,由此,对该第一升级脚本文件的具体情况不再赘述;
步骤s202,基于数据库版本号,将第一升级脚本文件的文件名替换,生成第二升级脚本文件;其中,该第二升级脚本文件的文件名以该数据库版本号开始;例如:该第一升级脚本文件的文件名为:“upgrade.sql”,替换生成的该第二升级脚本文件的文件名可以是:“v.1.0.0.1.sql”;需要说明的是,该第一升级脚本文件和第二升级脚本文件的文件名中“.sql”为文件扩展名;进一步的,在一个数据库升级案例中,存在至少一个数据库与该文件名对应,该数据库的数据库版本号是version:1.0.0.1;
步骤s203,在数据库版本号小于第二升级脚本文件的文件名的情况下,将该数据库添加至执行列表;需要说明的是,更新后的数据库版本号的数值大于未更新的数据版本号的数值,可以理解,本步骤的作用在于通过比较数据库版本号与该第二升级脚本文件的大小关系,从而筛选出需要升级的数据库,生成执行列表;对应的,该执行列表中至少存储一个数据库文件;
步骤s204,对于该执行列表中的数据库,按照数据库版本号从小到大的顺序进行排序,生成序列化执行列表;该步骤可以通过图3的方式表示,图3是根据本申请实施例的生成序列化执行列表的示意图,如图3所示,可以看出,在该序列化执行列表中,数据库文件按照从小到达的顺序排列;
步骤s205,使用第二升级脚本文件依次执行该序列化执行列表中的文件,升级数据库;需要说明的是,在一个数据库升级案例中,第二升级脚本文可以只有一个,也可以有多个;在同时存在很多升级脚本文件和数据库的情况下,通过人工进行升级数据库,出错的概率会增加;进一步的,在实际开发过程中,游戏数据库出现升级错误,会对游戏系统的开发和运维造成严重后果;可以理解,依次执行序列化执行列表中的文件的有益效果为:降低升级数据库出现升级错误的概率;图4是本申请实施例的基于执行序列化执行列表的示意图,如图4所示,提供有第二升级脚本文件,该第二升级脚本文件的文件名与数据库版本号对应;
通过步骤s201至s205,相比较与相关技术中通过人工查看数据库sql文件日志,获取需要升级的sql文件后,人员手动执行sql升级脚本文件实现升级游戏数据库的方法,本申请实施例通过将升级脚本文件以数据库版本为开始的命名方式命名,再跟据该升级脚本文件的与该数据库版本号的大小关系筛选需要升级的数据库后,获取序列化执行列表,最后使用升级脚本文件基于该序列化执行列表对游戏数据库进行升级的方法,解决了通过人工手动升级容易出错和耗费人力成本较大的问题。
在其中一些实施例中,图4是本申请实施例的使用第二升级脚本文件执行序列化执行列表的示意图,如图4所示,在使用该第二升级脚本文件执行一次该序列化执行列表结束的情况下,修改本次被执行的数据库版本号后,再次执行该序列化执行列表,在该序列化执行列表中所有文件执行结束的情况下,数据库升级完成;其中,在使用第二升级脚本文件执行一次升级流程结束后,将本次升级的数据库的版本号修该为升级后的数据库版本号,其目的是,使升级后的数据库与正确的数据库版本号相对应,从而实现序列化执行列表的循环执行。
在其中一些实施例中,该数据库是sql类型文件,该第二升级脚本文件将其内部的语句当做sql语句执行,需要说明的是,将该第二升级脚本文件的语句当做sql语句执行能够与游戏数据库的结构相匹配,通过上述方法,能够识别数据库的升级执行错误。
在其中一些实施例中,使用第二升级脚本文件依次执行序列化执行列表中的文件过程中,在第二升级脚本文件执行错误的情况下,游戏系统的执行窗口能够提示执行错误信息,该执行错误信息可以通过显示器提示,本领域技术人员在获取到该信息后,能够做针对性的处理措施,从而避免造成更严重的后果。
在其中一些实施例中,数据库版本号与数据库一一对应,升级后的数据库版本号大于未升级的数据库版本号,例如:未升级的数据库版本号是:“version.1.0.0.1”,对应的,升级后的数据库版本号可以是“version.1.0.0.2”。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种游戏数据库自动升级的系统,该系统用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本申请实施例的一种游戏数据库自动升级的系统的结构框图,如图5所示,该系统包括数据库模块51、获取存储模块52、替换模块53和升级模块54;
数据库模块51由至少一个数据库组成,用于管理和存储游戏数据信息;获取存储模块52,用于获取数据库文件、数据库版本号和第一升级脚本文件并存储;替换模块53,用于将该第一升级脚本文件的文件名替换并生成第二升级脚本文件,其中,该第二升级脚本文件的文件名以该数据库版本号作为开始;升级模块54,用于在该数据库版本号小于该第二升级脚本文件的文件名的情况下,将该数据库添加至执行列表并按照该数据库版本号从小到大的顺序进行排序后生成序列化执行列表并依次执行该序列化执行列表中的文件,升级数据库。
在其中一些实施例中,该升级模块54在使用该第二升级脚本文件执行一次该序列化执行列表结束的情况下,将本次升级的数据库的版本号修该为升级后的数据库版本号后,再继续执行,在该序列化执行列表中所有文件执行结束的情况下,该数据库升级完成。
在其中一些实施例中,该数据库模块51中的数据库为sql类型文件,该升级模块54在升级过程中,将该第二升级脚本文件内部的语句当做sql语句执行。
本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
s1,基将该第一升级脚本文件的文件名替换生成第二升级脚本文件;其中,该第二升级脚本文件的文件名以该数据库版本号开始;
s2,在该数据库版本号小于该第二升级脚本文件的文件名的情况下,将该数据库添加至执行列表;
s3,对于该执行列表中的该数据库,按照该数据库版本号从小到大的顺序进行排序,生成序列化执行列表;
s4,使用该第二升级脚本文件依次执行该序列化执行列表中的文件,升级该数据库。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
另外,结合上述实施例中的游戏数据库自动升级方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种游戏数据库自动升级方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种游戏数据库自动升级的方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,图6是根据本申请实施例的电子设备的内部结构示意图,如图6所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图6所示。该电子设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的数据库用于存储数据。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种游戏数据库自动升级的方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
1.一种游戏数据库自动升级方法,其特征在于,应用在游戏系统中,所述方法包括:
获取数据库、数据库版本号和第一升级脚本文件;
基于所述数据库版本号,将所述第一升级脚本文件的文件名替换,生成第二升级脚本文件;其中,所述第二升级脚本文件的文件名以所述数据库版本号开始;
在所述数据库版本号小于所述第二升级脚本文件的文件名的情况下,将所述数据库添加至执行列表;
对于所述执行列表中的所述数据库,按照所述数据库版本号从小到大的顺序进行排序,生成序列化执行列表;
使用所述第二升级脚本文件依次执行所述序列化执行列表中的文件,升级所述数据库。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
使用所述第二升级脚本文件执行一次所述序列化执行列表后,修改本次被执行的所述数据库版本号后再次执行所述序列化执行列表,在所述序列化执行列表中所有文件执行结束的情况下,所述数据库升级完成。
3.根据权利要求1所述的方法,其特征在于,所述使用所述第二升级脚本文件依次执行所述序列化执行列表中的文件包括:
所述数据库是sql类型文件,所述第二升级脚本文件将其内部的语句当做sql语句执行。
4.根据权利要求3所述的方法,其特征在于,所述使用所述第二升级脚本文件依次执行所述序列化执行列表中的文件的过程中,在所述第二升级脚本文件执行错误的情况下,游戏系统的执行窗口提示执行错误。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述数据库版本号与所述数据库一一对应,升级后的所述数据库版本号大于未升级的所述数据库版本号。
6.一种游戏数据库自动升级系统,其特征在于,所述系统包括:获取存储模块、数据库模块、替换模块和升级模块,其中,所述数据库模块包括至少两个数据库;
所述获取存储模块用于获取数据库文件、数据库版本号和第一升级脚本文件并存储;
所述替换模块用于将所述第一升级脚本文件的文件名替换并生成第二升级脚本文件,其中,所述第二升级脚本文件的文件名以所述数据库版本号作为开始;
所述升级模块用于在所述数据库版本号小于所述第二升级脚本文件的文件名的情况下,将所述数据库添加至执行列表并按照所述数据库版本号从小到大的顺序进行排序后生成序列化执行列表,所述升级模块使用所述第二升级脚本文件依次执行所述序列化执行列表中的文件,升级所述数据库。
7.根据权利要求6所述的系统,其特征在于,
所述升级模块在使用所述第二升级脚本文件执行一次所述序列化执行列表之后,所述升级模块修改本次被执行的所述数据库版本号后再次执行,在所述序列化执行列表中所有文件执行结束的情况下,所述数据库升级完成。
8.根据权利要求6所述的系统,其特征在于,所述数据模块中的所述数据库为sql类型文件,所述升级模块在升级过程中,将所述第二升级脚本文件内部的语句当做sql语句执行。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5中任一项所述的一种游戏数据库自动升级方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至5中任一项所述的一种游戏数据库自动升级方法。
技术总结