CN107357907A - 一种支持跨版本的数据库升级方法及装置 - Google Patents
一种支持跨版本的数据库升级方法及装置 Download PDFInfo
- Publication number
- CN107357907A CN107357907A CN201710580945.9A CN201710580945A CN107357907A CN 107357907 A CN107357907 A CN 107357907A CN 201710580945 A CN201710580945 A CN 201710580945A CN 107357907 A CN107357907 A CN 107357907A
- Authority
- CN
- China
- Prior art keywords
- sql files
- sql
- files
- application program
- database
- 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
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/23—Updating
-
- 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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文公开了一种支持跨版本的数据库升级方法及装置,涉及程序升级技术。其中,本文公开的支持跨版本的数据库升级方法,包括:在指定位置建立结构化查询语言SQL文件夹,所述SQL文件夹用于顺序存储应用程序不同版本下数据库升级对应的SQL文件,在应用程序的数据库中创建升级记录表,用于记录已执行成功的SQL文件;当应用程序升级时,在所述SQL文件夹中追加本次应用程序升级时数据库升级对应的SQL文件;当应用程序升级后启动,遍历所述SQL文件夹中的所有SQL文件,从数据库中的升级记录表中查询出已执行成功的所有SQL文件,对比得到尚未执行的SQL文件;对尚未执行的SQL文件按照排序依次进行读取并执行操作。
Description
技术领域
本发明涉及程序升级技术,具体涉及一种支持跨版本的数据库升级方案。
背景技术
程序升级是所有开发人员必须面对的问题,其中又包含文件升级和数据库升级等。对于数据库升级,处理起来比较麻烦,它不像文件升级那样,可以直接删除旧文件,添加新文件,因为旧的数据库中已存在的数据需要保留下来。
目前市面上有一些较成熟的开发框架,提供了非常完善的数据库升级方案,开发人员只要按照规则开发,就可以轻松解决数据库升级的问题,但是这些框架一般较大,并不适合小型应用程序。亟待找到一种轻量级应用程序的数据库升级方案,既在升级的同时保留旧数据,又能支持跨版本升级。
发明内容
本发明所要解决的技术问题是,提供一种支持跨版本的数据库升级方法及装置,可以实现轻量级应用程序的数据库升级的问题。
为了解决上述技术问题,本发明公开了一种支持跨版本的数据库升级方法,包括:
在指定位置建立结构化查询语言SQL文件夹,所述SQL文件夹用于顺序存储应用程序不同版本下数据库升级对应的SQL文件,在应用程序的数据库中创建升级记录表,用于记录已执行成功的SQL文件;
当应用程序升级时,在所述SQL文件夹中追加本次应用程序升级时数据库升级对应的SQL文件;
当应用程序升级后启动,遍历所述SQL文件夹中的所有SQL文件,从数据库中的升级记录表中查询出已执行成功的所有SQL文件,对比得到尚未执行的SQL文件;
对尚未执行的SQL文件按照排序依次进行读取并执行操作。
可选地,上述方法中,所述顺序存储应用程序不同版本下数据库升级对应的SQL文件指:SQL文件夹中存储的用于数据库升级的SQL文件的名称顺序与应用程序版本的顺序一致。
可选地,上述方法中,所述用于数据库升级的SQL文件包括应用程序不同版本下数据库升级时需要执行的SQL脚本。
可选地,上述方法还包括:
对尚未执行的SQL文件按照排序依次进行读取并执行操作时,将每个SQL文件放在一个事务中,若执行失败,则中断升级。
可选地,上述方法中,所述升级记录表,完整记录所有已执行成功的SQL文件,且对所述升级记录表中所记录的所有SQL文件不允许任何修改。
本文还公开了一种支持跨版本的数据库升级装置,包括:
第一单元,在指定位置建立结构化查询语言SQL文件夹,所述SQL文件夹用于顺序存储应用程序不同版本下数据库升级对应的SQL文件,在应用程序的数据库中创建升级记录表,用于记录已执行成功的SQL文件;
第二单元,在应用程序升级时,在所述SQL文件夹中追加本次应用程序升级时数据库升级对应的SQL文件;
第三单元,在应用程序升级后启动时,遍历所述SQL文件夹中的所有SQL文件,从数据库中的升级记录表中查询出已执行成功的所有SQL文件,对比得到尚未执行的SQL文件;
第四单元,对尚未执行的SQL文件按照排序依次进行读取并执行操作。
可选地,上述装置中,所述顺序存储应用程序不同版本下数据库升级对应的SQL文件指:SQL文件夹中存储的用于数据库升级的SQL文件的名称顺序与应用程序版本的顺序一致。
可选地,上述装置中,所述用于数据库升级的SQL文件包括应用程序不同版本下数据库升级时需要执行的SQL脚本。
可选地,上述装置中,所述第四单元,对尚未执行的SQL文件按照排序依次进行读取并执行操作时,将每个SQL文件放在一个事务中,若执行失败,则中断升级。
可选地,上述装置中,所述升级记录表,完整记录所有已执行成功的SQL文件,且对所述升级记录表中所记录的所有SQL文件不允许任何修改。
本申请技术方案尤其适用于轻量级应用程序的数据库升级,满足了一般应用程序的数据库升级需求,既保留了已有的客户数据,又可实现跨版本升级。
附图说明
图1为本发明实施例中支持跨版本的数据库升级方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文将结合附图对本发明技术方案作进一步详细说明。需要说明的是,在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
本申请发明人提出,采用SQL语言作为升级数据库的脚本语言,这些语句按照版本号顺序(例如,版本号从低到高顺序)排列,程序需要控制的是哪些SQL需要执行,哪些不需要执行,从而实现数据库的升级。
基于上述思想,本实施例提出一种支持跨版本的数据库升级方法,主要包括如下操作:
在指定位置建立SQL文件夹,所述SQL文件夹用于顺序存储应用程序不同版本下数据库升级对应的SQL文件,在应用程序的数据库中创建升级记录表,用于记录已执行成功的SQL文件;
当应用程序升级时,在所述SQL文件夹中追加本次应用程序升级时数据库升级对应的SQL文件;
当应用程序升级后启动,遍历所述SQL文件夹中的所有SQL文件,从数据库中的升级记录表中查询出已执行成功的所有SQL文件,通过以上操作得到的结果集,过滤出尚未执行的SQL文件;
对尚未执行的SQL文件按照排序依次进行读取,并执行其中的SQL脚本。
下面,结合附图说明上述支持跨版本的数据库升级方法的具体实施,如图1所示,包括如下操作步骤:
步骤100:建一个文件夹,专门存放用于数据库升级的SQL脚本文件,可称其为SQL文件夹。
该步骤中,SQL文件夹中的SQL文件顺序存放,即按照SQL文件对应的版本号顺序排序,例如,SQL文件按照从低版本到高版本的顺序存储。
步骤200:每次需要升级应用时,都在SQL文件夹中追加一个SQL文件,SQL文件中是本次升级需要执行的SQL脚本。
步骤300:在应用程序的数据库中建立一个表,专门记录已经执行成功的SQL文件,可称其为升级记录表。
步骤400:应用程序启动时,要有一个环节,专门负责数据库升级,即遍历SQL文件夹中的所有SQL文件;从数据库中的升级记录表中查询出哪些SQL文件已经执行成功过;通过以上操作得到的结果集,过滤出尚未执行的SQL文件;
步骤500:将尚未执行的SQL文件按照文件名排序,依次读取尚未执行的SQL文件,执行里面的SQL脚本。
其中,每个SQL文件里的脚本都放在一个事务中,执行成功的SQL文件要记录在升级记录表中,并且不允许再修改其内容。而执行未成功的SQL文件要将对应事务回滚,在日志中记录错误,并马上中断升级过程,以免数据库结构混乱。
其中,由于读取的尚未执行的SQL文件可能有多个,此时,如果执行这此SQL文件均成功,则表示跨版本升级。
要说明提,本申请中所涉及的数据库升级,并非数据库程序的升级,例如Oracle10g升级到Oracle 11g,而是由于应用程序功能变更,对数据库的表、视图、索引、触发器等对象进行的增加、修改、删除等操作。
本申请所涉及的跨版本,并非指数据库的版本(例如Oracle 10g、Oracle11g),而是指所开发的应用程序的版本。
本实施例还提供一种支持跨版本的数据库升级装置,可以实施上述数据库升级方法,主要包括如下各单元。
第一单元,在指定位置建立结构化查询语言SQL文件夹,所述SQL文件夹用于顺序存储应用程序不同版本下数据库升级对应的SQL文件,在应用程序的数据库中创建升级记录表,用于记录已执行成功的SQL文件;
其中,SQL文件夹中存储的用于数据库升级的SQL文件的名称顺序与应用程序版本的顺序一致。例如,SQL文件按照从低版本到高版本的顺序存储。
用于数据库升级的SQL文件则包括应用程序不同版本下数据库升级时需要执行的SQL脚本。具体地,本实施例涉及的的数据库升级,并非数据库程序的升级,而是由于应用程序功能变更,对数据库的表、视图、索引、触发器等对象进行的增加、修改、删除等操作。
上述升级记录表,完整记录所有已执行成功的SQL文件,且对所述升级记录表中所记录的所有SQL文件不允许任何修改。
第二单元,在应用程序升级时,在所述SQL文件夹中追加本次应用程序升级时数据库升级对应的SQL文件;
第三单元,在应用程序升级后启动时,遍历所述SQL文件夹中的所有SQL文件,从数据库中的升级记录表中查询出已执行成功的所有SQL文件,对比得到尚未执行的SQL文件;
第四单元,对尚未执行的SQL文件按照排序依次进行读取并执行操作。
要说明提,第四单元对尚未执行的SQL文件按照排序依次进行读取并执行操作时,将每个SQL文件放在一个事务中,如果执行失败,则中断升级。
由于本实施例装置可以实现上述数据库升级的方案,因此本装置的其他细节操作可参见上述方法的对应描述,在此不再赘述。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
以上所述,仅为本发明的较佳实例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种支持跨版本的数据库升级方法,其特征在于,包括:
在指定位置建立结构化查询语言SQL文件夹,所述SQL文件夹用于顺序存储应用程序不同版本下数据库升级对应的SQL文件,在应用程序的数据库中创建升级记录表,用于记录已执行成功的SQL文件;
当应用程序升级时,在所述SQL文件夹中追加本次应用程序升级时数据库升级对应的SQL文件;
当应用程序升级后启动,遍历所述SQL文件夹中的所有SQL文件,从数据库中的升级记录表中查询出已执行成功的所有SQL文件,对比得到尚未执行的SQL文件;
对尚未执行的SQL文件按照排序依次进行读取并执行操作。
2.如权利要求1所述的方法,其特征在于,所述顺序存储应用程序不同版本下数据库升级对应的SQL文件指:SQL文件夹中存储的用于数据库升级的SQL文件的名称顺序与应用程序版本的顺序一致。
3.如权利要求2所述的方法,其特征在于,
所述用于数据库升级的SQL文件包括应用程序不同版本下数据库升级时需要执行的SQL脚本。
4.如权利要求1至3任一项所述的方法,其特征在于,该方法还包括:
对尚未执行的SQL文件按照排序依次进行读取并执行操作时,将每个SQL文件放在一个事务中,若执行失败,则中断升级。
5.如权利要求4所述的方法,其特征在于,
所述升级记录表,完整记录所有已执行成功的SQL文件,且对所述升级记录表中所记录的所有SQL文件不允许任何修改。
6.一种支持跨版本的数据库升级装置,其特征在于,包括:
第一单元,在指定位置建立结构化查询语言SQL文件夹,所述SQL文件夹用于顺序存储应用程序不同版本下数据库升级对应的SQL文件,在应用程序的数据库中创建升级记录表,用于记录已执行成功的SQL文件;
第二单元,在应用程序升级时,在所述SQL文件夹中追加本次应用程序升级时数据库升级对应的SQL文件;
第三单元,在应用程序升级后启动时,遍历所述SQL文件夹中的所有SQL文件,从数据库中的升级记录表中查询出已执行成功的所有SQL文件,对比得到尚未执行的SQL文件;
第四单元,对尚未执行的SQL文件按照排序依次进行读取并执行操作。
7.如权利要求6所述的装置,其特征在于,所述顺序存储应用程序不同版本下数据库升级对应的SQL文件指:SQL文件夹中存储的用于数据库升级的SQL文件的名称顺序与应用程序版本的顺序一致。
8.如权利要求7所述的装置,其特征在于,
所述用于数据库升级的SQL文件包括应用程序不同版本下数据库升级时需要执行的SQL脚本。
9.如权利要求6至8任一项所述的装置,其特征在于,
所述第四单元,对尚未执行的SQL文件按照排序依次进行读取并执行操作时,将每个SQL文件放在一个事务中,若执行失败,则中断升级。
10.如权利要求9所述的装置,其特征在于,
所述升级记录表,完整记录所有已执行成功的SQL文件,且对所述升级记录表中所记录的所有SQL文件不允许任何修改。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710580945.9A CN107357907A (zh) | 2017-07-17 | 2017-07-17 | 一种支持跨版本的数据库升级方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710580945.9A CN107357907A (zh) | 2017-07-17 | 2017-07-17 | 一种支持跨版本的数据库升级方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107357907A true CN107357907A (zh) | 2017-11-17 |
Family
ID=60293117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710580945.9A Pending CN107357907A (zh) | 2017-07-17 | 2017-07-17 | 一种支持跨版本的数据库升级方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107357907A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110377583A (zh) * | 2019-06-17 | 2019-10-25 | 平安普惠企业管理有限公司 | 数据库脚本执行方法、装置、计算机设备和存储介质 |
CN111241455A (zh) * | 2020-01-22 | 2020-06-05 | 北京字节跳动网络技术有限公司 | 数据处理装置、计算机设备及存储介质 |
CN112199106A (zh) * | 2020-10-20 | 2021-01-08 | 新华三信息安全技术有限公司 | 一种跨版本升级方法、装置及电子设备 |
CN112925544A (zh) * | 2021-02-26 | 2021-06-08 | 湖南强智科技发展有限公司 | 更新应用程序的方法、装置、电子设备及计算机存储介质 |
CN115982284A (zh) * | 2023-02-01 | 2023-04-18 | 中国人民财产保险股份有限公司 | 一种数据库增量同步方法、系统、电子设备及介质 |
CN116610345A (zh) * | 2023-07-21 | 2023-08-18 | 上海柯林布瑞信息技术有限公司 | 一种基于执行记录表的应用程序升级方法和装置 |
CN116700763A (zh) * | 2023-08-07 | 2023-09-05 | 长扬科技(北京)股份有限公司 | Clickhouse数据库的版本升级方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1971556A (zh) * | 2005-11-26 | 2007-05-30 | 华为技术有限公司 | 在后台管理系统中实现数据库升级的系统和方法 |
CN102339298A (zh) * | 2010-07-28 | 2012-02-01 | 中国移动通信集团公司 | Sql脚本元数据的更新方法、装置及系统 |
CN105700917A (zh) * | 2016-01-04 | 2016-06-22 | 浪潮通用软件有限公司 | 一种dll与数据库同步的方法及装置 |
CN106445618A (zh) * | 2016-10-17 | 2017-02-22 | 成都知道创宇信息技术有限公司 | 一种数据库自动升级方法 |
CN106599167A (zh) * | 2016-12-09 | 2017-04-26 | 郑州云海信息技术有限公司 | 一种支持增量升级数据库的系统和方法 |
-
2017
- 2017-07-17 CN CN201710580945.9A patent/CN107357907A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1971556A (zh) * | 2005-11-26 | 2007-05-30 | 华为技术有限公司 | 在后台管理系统中实现数据库升级的系统和方法 |
CN102339298A (zh) * | 2010-07-28 | 2012-02-01 | 中国移动通信集团公司 | Sql脚本元数据的更新方法、装置及系统 |
CN105700917A (zh) * | 2016-01-04 | 2016-06-22 | 浪潮通用软件有限公司 | 一种dll与数据库同步的方法及装置 |
CN106445618A (zh) * | 2016-10-17 | 2017-02-22 | 成都知道创宇信息技术有限公司 | 一种数据库自动升级方法 |
CN106599167A (zh) * | 2016-12-09 | 2017-04-26 | 郑州云海信息技术有限公司 | 一种支持增量升级数据库的系统和方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110377583A (zh) * | 2019-06-17 | 2019-10-25 | 平安普惠企业管理有限公司 | 数据库脚本执行方法、装置、计算机设备和存储介质 |
CN111241455A (zh) * | 2020-01-22 | 2020-06-05 | 北京字节跳动网络技术有限公司 | 数据处理装置、计算机设备及存储介质 |
CN111241455B (zh) * | 2020-01-22 | 2023-08-25 | 抖音视界有限公司 | 数据处理装置、计算机设备及存储介质 |
CN112199106A (zh) * | 2020-10-20 | 2021-01-08 | 新华三信息安全技术有限公司 | 一种跨版本升级方法、装置及电子设备 |
CN112199106B (zh) * | 2020-10-20 | 2022-08-26 | 新华三信息安全技术有限公司 | 一种跨版本升级方法、装置及电子设备 |
CN112925544A (zh) * | 2021-02-26 | 2021-06-08 | 湖南强智科技发展有限公司 | 更新应用程序的方法、装置、电子设备及计算机存储介质 |
CN112925544B (zh) * | 2021-02-26 | 2022-12-02 | 湖南强智科技发展有限公司 | 更新应用程序的方法、装置、电子设备及计算机存储介质 |
CN115982284A (zh) * | 2023-02-01 | 2023-04-18 | 中国人民财产保险股份有限公司 | 一种数据库增量同步方法、系统、电子设备及介质 |
CN116610345A (zh) * | 2023-07-21 | 2023-08-18 | 上海柯林布瑞信息技术有限公司 | 一种基于执行记录表的应用程序升级方法和装置 |
CN116610345B (zh) * | 2023-07-21 | 2023-10-20 | 上海柯林布瑞信息技术有限公司 | 一种基于执行记录表的应用程序升级方法和装置 |
CN116700763A (zh) * | 2023-08-07 | 2023-09-05 | 长扬科技(北京)股份有限公司 | Clickhouse数据库的版本升级方法及装置 |
CN116700763B (zh) * | 2023-08-07 | 2023-10-27 | 长扬科技(北京)股份有限公司 | Clickhouse数据库的版本升级方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107357907A (zh) | 一种支持跨版本的数据库升级方法及装置 | |
US7774772B2 (en) | Method and apparatus to perform an application software migration | |
US9361187B2 (en) | File system metadata capture and restore | |
US8010962B2 (en) | Infrastructure for the automation of the assembly of schema maintenance scripts | |
US7613738B2 (en) | FAT directory structure for use in transaction safe file system | |
US8832159B2 (en) | Systems and methods for asynchronous schema changes | |
US8078588B2 (en) | Recoverable execution | |
CN101080715B (zh) | 用于管理二进制大对象的系统和方法 | |
CN104199750B (zh) | 一种linux系统的文件恢复方法及装置 | |
EP2194467A1 (en) | Extend CRUD to support lifecycle management and business continuity | |
CN107122355A (zh) | 数据迁移系统和方法 | |
CN107122360A (zh) | 数据迁移系统和方法 | |
US11868335B2 (en) | Space-efficient change journal for a storage system | |
CN105159991B (zh) | 一种保持数据一致性的方法、装置、系统和应用服务器 | |
CN107924357A (zh) | 作业管理装置、作业管理方法和作业管理程序 | |
US9928259B2 (en) | Deleted database record reuse | |
CN102054041A (zh) | 元数据升级方法和系统 | |
CN109101368A (zh) | 一种数据处理方法及装置 | |
CN109271199A (zh) | 一种用于数据库持续集成与脚本文件管理的方法及系统 | |
US8862550B1 (en) | Reliable in-place bootstrap metadata transformation in a shared data store | |
WO2014187216A1 (zh) | 数据库结构对象处理方法及装置 | |
CN111259068A (zh) | 一种基于数据仓库的数据开发方法及系统 | |
CN104239497B (zh) | 升级文件的清理方法和装置 | |
CN105975300A (zh) | 系统升级方法和装置 | |
CN109241071A (zh) | 一种Android数据库升级方法、装置及终端 |
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: 20171117 |