CN112068881A - 一种基于数据链式的数据库升级方法 - Google Patents
一种基于数据链式的数据库升级方法 Download PDFInfo
- Publication number
- CN112068881A CN112068881A CN202010992473.XA CN202010992473A CN112068881A CN 112068881 A CN112068881 A CN 112068881A CN 202010992473 A CN202010992473 A CN 202010992473A CN 112068881 A CN112068881 A CN 112068881A
- Authority
- CN
- China
- Prior art keywords
- upgrading
- database
- version
- version information
- code
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000013515 script Methods 0.000 claims abstract description 18
- 230000009471 action Effects 0.000 claims abstract description 5
- 230000008569 process Effects 0.000 abstract description 19
- 238000012423 maintenance Methods 0.000 abstract description 7
- 238000011161 development Methods 0.000 abstract description 3
- 230000008859 change Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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/219—Managing data history or versioning
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于数据链式的数据库升级方法,具体涉及数据库升级技术领域,包括以下步骤:S1:在进行升级操作,首先获取到升级前数据库版本信息;S2:在升级成功文件系统替换之后,系统重启时,获取新的数据库版本信息,此处新的版本信息为保存在初始化SQL脚本中的数据库版本信息;S3:在S2的基础上,获取版本信息之后,与现有版本升级链进行对比,获取当前版本是否支持升级的信息;S4:若当前版本支持升级,则返回需要调用执行的代码块,若不支持升级,则返回空值;S5:在升级动作中加入代码保护和异常捕捉,确保代码能够稳定执行。本发明有效解决数据库维护过程需要考虑多版本兼容问题,极大地提高了数据库维护过程的开发效率。
Description
技术领域
本发明涉及数据库升级技术领域,更具体地说,本发明涉及一种基于数据链式的数据库升级方法。
背景技术
在一个大型的软件项目中,不可避免的要使用数据库来存储数据,而数据库的结构在第一版的时候定下来,之后发布功能更新,或增加业务逻辑,原来的数据库结构可能就不适用了,而如果数据库的结构与之前版本的结构不同,新版本的应用读取旧数据库肯定会出问题,解决办法只有以下两种:1.让用户卸载老版本再安装新的程序;2.软件自行更新数据库结构,当采用第一种方法时,用户的数据库数据会被删除,这是不能接受的,所以必须采取保留数据的数据库升级方式来解决该问题。
在软件开发的过程中,数据库的结构会随着软件功能的变化而进行变化,每次数据库的结构发生变化时,对比升级后的数据库结构和当前数据库结构的差异,构造升级的数据库脚本,然后在升级的时候执行升级脚本,步骤如下:1.确认升级前软件的数据库文件版本如V1;2.确认升级后的软件的数据库文件版本如V2;3.对比两个数据库文件版本的差异,构造升级文件V1_V2_UPDATE;4.在软件升级的过程中执行升级文件,完成数据库的升级;5.根据每个软件的数据库版本信息,重复1到4。当软件版本较多时,需制作的数据库升级脚本越来越多,从V1升级到V2只需要一个脚本,若此后还有一个V3,则需要V1_V3,V2_V3两个脚本,随着软件数据库的版本越来越多,数据库升级的开销已经到了不能接受的地步,必须采用一种新的方式来解决该问题,所以行业中需要一种基于数据链式的数据库升级方法,以解决行业中面临的问题。
发明内容
为了克服现有技术的上述缺陷,本发明的实施例提供一种基于数据链式的数据库升级方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种基于数据链式的数据库升级方法,包括以下步骤:
S1:在进行升级操作,首先获取到升级前数据库版本信息;
S2:在升级成功文件系统替换之后,系统重启时,获取新的数据库版本信息,此处新的版本信息为保存在初始化SQL脚本中的数据库版本信息;
S3:在S2的基础上,获取版本信息之后,与现有版本升级链进行对比,获取当前版本是否支持升级的信息;
S4:若当前版本支持升级,则返回需要调用执行的代码块,若不支持升级,则返回空值;
S5:在升级动作中加入代码保护和异常捕捉,确保代码能够稳定执行。
在上述技术方案的基础上,创建当前数据库版本信息存储文件。
在上述技术方案的基础上,在当前数据库版本信息存储文件中新增一行用于存储数据库版本信息的内容。
在上述技术方案的基础上,编写补丁升级的代码,在版本升级的补丁代码中,加入该版本升级前及升级后的版本信息。
在上述技术方案的基础上,匹配升级前及升级后的版本信息,判定是否升级。
本发明的技术效果和优点:
1、与现有技术相比,本发明提供了一种高效的,进行数据库版本升级的解决方案,有效解决数据库维护过程需要考虑多版本兼容问题,极大地提高了数据库维护过程的开发效率。
2、与现有技术相比,由于需要考虑的情况只是每个版本间数据库的变更,程序运行的稳定性及代码的可维护性也获得了较大的提升。
附图说明
图1为本发明的升级过程流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如附图1所示的一种基于数据链式的数据库升级方法,包括以下步骤:
S1:在进行升级操作,首先获取到升级前数据库版本信息;
S2:在升级成功文件系统替换之后,系统重启时,获取新的数据库版本信息,此处新的版本信息为保存在初始化SQL脚本中的数据库版本信息;
S3:在S2的基础上,获取版本信息之后,与现有版本升级链进行对比,获取当前版本是否支持升级的信息;
S4:若当前版本支持升级,则返回需要调用执行的代码块,若不支持升级,则返回空值;
S5:在升级动作中加入代码保护和异常捕捉,确保代码能够稳定执行。
进一步的,创建当前数据库版本信息存储文件,由于每次进行升级时,文件系统会进行替换,初始化SQL脚本信息也会被替换,所以升级过程采取的方案是每次升级完成后创建一个独立的文件用于存储当前数据库版本信息,以便于升级操作时对升级前的版本信息进行识别,若初始时没有设置版本信息,也可以设置默认初始版本信息。
进一步的,在当前数据库版本信息存储文件中新增一行用于存储数据库版本信息的内容,数据库版本信息区别于软件本身的版本信息,是由开发者自己进行定义的数据库版本信息,将数据库的版本信息存储于初始化SQL脚本中,在该文件中新增一行用于存储数据库版本信息的内容,这样的话可实现数据库升级维护与软件版本升级之间解耦,如果软件版本升级过程不需要进行数据库升级时可在初始化SQL脚本中存储相同的数据库版本信息即可。
进一步的,编写补丁升级的代码,在版本升级的补丁代码中,加入该版本升级前及升级后的版本信息,在进行版本升级过程时,当从初始版本向新版本进行升级时,除了编写初始化SQL脚本,还需要编写补丁升级的代码,在版本升级的补丁代码中,加入该版本升级前及升级后的版本信息,如此,每进行一次升级时升级前数据库版本信息即为前次升级的升级后版本信息,然后通过动态遍历的过程便可获取到一个链式结构的版本信息,即为现有版本升级链。
进一步的,匹配升级前及升级后的版本信息,判定是否升级,通过步骤S1与S2获取到了升级前的版本信息和需要升级到版本信息,将这两个版本信息与获取到的版本升级链进行匹配,当两个版本信息均位于现有版本升级链且升级前的版本信息在该升级链中先于升级后的版本信息时,判定为可升级。
本发明工作原理:版本之间的升级是单向的,即只能从低版本向高版本升级,版本之间无法回退,本发明采用链式调用模型,当软件升级一个版本,并且有数据库的变更需求时,分析当前版本与前次版本数据库之间的变更,修改当前版本中的初始化SQL脚本并记录处理经过初始化过程之后进行的一些其他表变更,列变更等,在进行升级操作,首先获取到升级前数据库版本信息,由于每次进行升级时,文件系统会进行替换,初始化SQL脚本信息也会被替换,所以升级过程采取的方案是每次升级完成后创建一个独立的文件用于存储当前数据库版本信息,以便于升级操作时对升级前的版本信息进行识别,若初始时没有设置版本信息,也可以设置默认初始版本信息,在当前数据库版本信息存储文件中新增一行用于存储数据库版本信息的内容,数据库版本信息区别于软件本身的版本信息,是由开发者自己进行定义的数据库版本信息,将数据库的版本信息存储于初始化SQL脚本中,在该文件中新增一行用于存储数据库版本信息的内容,这样的话可实现数据库升级维护与软件版本升级之间解耦,如果软件版本升级过程不需要进行数据库升级时可在初始化SQL脚本中存储相同的数据库版本信息即可,在升级成功文件系统替换之后,系统重启时,获取新的数据库版本信息,此处新的版本信息为保存在初始化SQL脚本中的数据库版本信息,获取版本信息之后,与现有版本升级链进行对比,获取当前版本是否支持升级的信息,在版本升级的补丁代码中,加入该版本升级前及升级后的版本信息,在进行版本升级过程时,当从初始版本向新版本进行升级时,除了编写初始化SQL脚本,还需要编写补丁升级的代码,在版本升级的补丁代码中,加入该版本升级前及升级后的版本信息,如此,每进行一次升级时升级前数据库版本信息即为前次升级的升级后版本信息,然后通过动态遍历的过程便可获取到一个链式结构的版本信息,即为现有版本升级链,将升级前的版本信息和需要升级到版本信息与获取到的版本升级链进行匹配,当两个版本信息均位于现有版本升级链且升级前的版本信息在该升级链中先于升级后的版本信息时,判定为可升级,若当前版本支持升级,则返回需要调用执行的代码块,若不支持升级,则返回空值,在升级动作中加入代码保护和异常捕捉,确保代码能够稳定执行,这样可以对升级过程的每一个步骤,都进行是否发生异常的判断,如果发生异常,则记录错误日志信息并不打断系统正常的启动过程使其他启动程序继续运行,断电时由于断电异常比较极端,无法考虑到具体发生到那个步骤,所以系统再次启动时如果无法获知异常发生在哪个过程,需要对这个过程进行保护;本发明提供了一种高效的,进行数据库版本升级的解决方案,有效解决数据库维护过程需要考虑多版本兼容问题,极大地提高了数据库维护过程的开发效率,由于需要考虑的情况只是每个版本间数据库的变更,程序运行的稳定性及代码的可维护性也获得了较大的提升。
最后应说明的几点是:首先,在本申请的描述中,需要说明的是,除非另有规定和限定,术语“安装”、“相连”、“连接”应做广义理解,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变,则相对位置关系可能发生改变;
其次:本发明公开实施例附图中,只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计,在不冲突情况下,本发明同一实施例及不同实施例可以相互组合;
最后:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于数据链式的数据库升级方法,其特征在于:包括以下步骤:
S1:在进行升级操作,首先获取到升级前数据库版本信息;
S2:在升级成功文件系统替换之后,系统重启时,获取新的数据库版本信息,此处新的版本信息为保存在初始化SQL脚本中的数据库版本信息;
S3:在S2的基础上,获取版本信息之后,与现有版本升级链进行对比,获取当前版本是否支持升级的信息;
S4:若当前版本支持升级,则返回需要调用执行的代码块,若不支持升级,则返回空值;
S5:在升级动作中加入代码保护和异常捕捉,确保代码能够稳定执行。
2.根据权利要求1所述的一种基于数据链式的数据库升级方法,其特征在于:创建当前数据库版本信息存储文件。
3.根据权利要求2所述的一种基于数据链式的数据库升级方法,其特征在于:在当前数据库版本信息存储文件中新增一行用于存储数据库版本信息的内容。
4.根据权利要求1所述的一种基于数据链式的数据库升级方法,其特征在于:编写补丁升级的代码,在版本升级的补丁代码中,加入该版本升级前及升级后的版本信息。
5.根据权利要求1所述的一种基于数据链式的数据库升级方法,其特征在于:匹配升级前及升级后的版本信息,判定是否升级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010992473.XA CN112068881A (zh) | 2020-09-21 | 2020-09-21 | 一种基于数据链式的数据库升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010992473.XA CN112068881A (zh) | 2020-09-21 | 2020-09-21 | 一种基于数据链式的数据库升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112068881A true CN112068881A (zh) | 2020-12-11 |
Family
ID=73682179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010992473.XA Pending CN112068881A (zh) | 2020-09-21 | 2020-09-21 | 一种基于数据链式的数据库升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112068881A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115756552A (zh) * | 2023-01-06 | 2023-03-07 | 山东矩阵软件工程股份有限公司 | 一种应用系统功能自配置方法、系统及存储介质 |
CN117453189A (zh) * | 2023-12-22 | 2024-01-26 | 浪潮通用软件有限公司 | 一种应用分层开发的方法、系统、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1713154A (zh) * | 2004-06-22 | 2005-12-28 | 中兴通讯股份有限公司 | 一种移动通信网管系统的升级方法 |
CN106201614A (zh) * | 2016-07-11 | 2016-12-07 | 天津中兴智联科技有限公司 | 一种可对多种同类软件进行链式升级的通用方法及系统 |
US20180004792A1 (en) * | 2016-06-30 | 2018-01-04 | International Business Machines Corporation | On-demand database catalog upgrade |
CN108255544A (zh) * | 2018-01-12 | 2018-07-06 | 武汉智博创享科技股份有限公司 | 安卓SQLite数据库创建或升级脚本批量执行的方法 |
-
2020
- 2020-09-21 CN CN202010992473.XA patent/CN112068881A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1713154A (zh) * | 2004-06-22 | 2005-12-28 | 中兴通讯股份有限公司 | 一种移动通信网管系统的升级方法 |
US20180004792A1 (en) * | 2016-06-30 | 2018-01-04 | International Business Machines Corporation | On-demand database catalog upgrade |
CN106201614A (zh) * | 2016-07-11 | 2016-12-07 | 天津中兴智联科技有限公司 | 一种可对多种同类软件进行链式升级的通用方法及系统 |
CN108255544A (zh) * | 2018-01-12 | 2018-07-06 | 武汉智博创享科技股份有限公司 | 安卓SQLite数据库创建或升级脚本批量执行的方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115756552A (zh) * | 2023-01-06 | 2023-03-07 | 山东矩阵软件工程股份有限公司 | 一种应用系统功能自配置方法、系统及存储介质 |
CN117453189A (zh) * | 2023-12-22 | 2024-01-26 | 浪潮通用软件有限公司 | 一种应用分层开发的方法、系统、设备及介质 |
CN117453189B (zh) * | 2023-12-22 | 2024-03-15 | 浪潮通用软件有限公司 | 一种应用分层开发的方法、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6553490B1 (en) | Computer system including local computer with capability to automatically update operating system or application program from network server | |
US20070006222A1 (en) | Software installation method and computer system | |
US20110302572A1 (en) | Embedded network device and firmware upgrading method | |
CN104239082A (zh) | 嵌入式系统的热补丁实现方法 | |
CN112068881A (zh) | 一种基于数据链式的数据库升级方法 | |
CN101770383B (zh) | 一种跨平台版本在线升级的方法及装置 | |
CN111897570A (zh) | 一种基于Maven插件的多依赖项文件提取方法及装置 | |
CN108874437B (zh) | 一种android应用程序的在线云更新方法 | |
CN106951284B (zh) | 基于安卓系统应用的用户界面升级方法、装置及智能终端 | |
CN111562934A (zh) | 一种基于热补丁的软件系统升级方法、终端及存储介质 | |
CN113821235A (zh) | 操作系统数据更新方法、设备、存储介质及程序产品 | |
CN110750280B (zh) | 一种基于Android平台的应用升级方法及系统、存储介质 | |
CN110688140B (zh) | 一种代码管理方法和终端 | |
CN111782236A (zh) | 系统软件升级方法、装置、存储介质及一体机设备 | |
CN116028084A (zh) | 一种基于OpenStack云平台跨版本热升级的方法、系统及终端 | |
CN111949290B (zh) | 一种热补丁管理方法、装置、电子设备及存储介质 | |
CN112925549A (zh) | 基于安卓框架的系统应用升级系统 | |
CN113849200A (zh) | 一种安卓应用在安卓兼容环境中的安装优化方法及系统 | |
CN110874226B (zh) | 一种android系统功能升级的方法 | |
CN115167862A (zh) | 补丁方法及相关设备 | |
CN108763286A (zh) | 数据库的更新方法、装置、设备和存储介质 | |
CN111949278B (zh) | 一种自动安装mcs系统的方法、系统、终端及存储介质 | |
CN114237572B (zh) | 原生工程集成开发框架的方法、装置、设备及存储介质 | |
CN114546476A (zh) | 固件参数配置方法、装置、基板管理控制器和存储介质 | |
CN117234546A (zh) | 一种dsp处理器通用化高可靠在线升级方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201211 |