CN106649771B - 数据库的数据模型更新方法和系统 - Google Patents
数据库的数据模型更新方法和系统 Download PDFInfo
- Publication number
- CN106649771B CN106649771B CN201611227152.0A CN201611227152A CN106649771B CN 106649771 B CN106649771 B CN 106649771B CN 201611227152 A CN201611227152 A CN 201611227152A CN 106649771 B CN106649771 B CN 106649771B
- Authority
- CN
- China
- Prior art keywords
- database
- data
- version number
- model
- data model
- 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.)
- Active
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
- G06F16/2358—Change logging, detection, and notification
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种数据库的数据模型更新方法和系统,所述方法包括:获取当前数据库的表单数据,并反向生成对象模型;读取新版本数据库的数据模型,对比所述对象模型与新版本的数据模型的差异,并生成带版本号的差分脚本;将所述版本号记录到预先创建的数据表中;根据所述数据表记录的版本号和差分脚本,对数据库的数据模型进行更新。本发明的技术方案,可以在数据模型发生变化是,记录数据模型的差异和变更记录,并可以为更新提供便捷的差分脚本,提高数据库的使用效率。
Description
技术领域
本发明涉及数据库技术领域,特别是涉及一种数据库的数据模型更新方法和系统。
背景技术
ORM(Object-Relation-Mapping,对象关系映射)框架是采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。
现有ORM框架中,如Hibernate可以对数据模型的修改进行检测,并自动同步修改数据库结构;但由于缺乏回滚和记录变更的手段,用户必须手动备份数据库表单,以防升级出错。
由此,在进行数据库迁移、升降级等更新过程中,如果用户不能及时备份,则在系统的数据模型发生变化时就无法记录数据库的差异和变更记录,降低了数据库的使用效率。
发明内容
基于此,有必要针对上述技术问题,提供一种数据库的数据模型更新方法和系统,提高数据库的使用效率。
一种数据库的数据模型更新方法,包括:
获取当前数据库的表单数据,并反向生成对象模型;
读取新版本数据库的数据模型,对比所述对象模型与新版本的数据模型的差异,并生成带版本号的差分脚本;
将所述版本号记录到预先创建的数据表中;
根据所述数据表记录的版本号和差分脚本,对数据库的数据模型进行更新。
一种数据库的数据模型更新系统,包括:
转换模块,用于获取当前数据库的表单数据,并反向生成对象模型;
比对模块,用于利用数据库工具读取新版本的数据模型,对比所述对象模型与新版本的数据模型的差异,并生成带版本号的差分脚本;
记录模块,用于将所述版本号依据先后顺序记录到预先创建的数据表中;
更新模块,用于根据所述数据表记录的版本号和差分脚本,对数据库的数据模型进行更新。
上述数据库的数据模型更新方法和系统,将当前数据库的表单数据反向生成对象模型,将新版本数据库的数据模型与对象模型进行比对,将模型差异生成带版本号的差分脚本记录到预先创建的数据表中,在需要更新时,利用记录的版本号和差分脚本自动执行对数据库的数据模型的新。该技术方案,可以在数据模型发生变化是,记录数据模型的差异和变更记录,并可以为更新提供便捷的差分脚本,提高数据库的使用效率。
附图说明
图1是本发明实施例的数据库的数据模型更新方法流程图;
图2是一个实例的生成差分脚本的流程图;
图3是本发明实施例的数据库的数据模型更新系统结构示意图。
具体实施方式
下面结合附图阐述本发明的数据库的数据模型更新方法和系统的实施例。
参考图1所示,图1是本发明实施例的数据库的数据模型更新方法流程图,包括:
S110,获取当前数据库的表单数据,并反向生成对象模型;
此步骤中,在执行数据库的数据模型更新时,首先获取当前数据库的表单数据,根据原对象模型反向生成数据模型,便于对模型之间进行代码比对。
在一个实施例中,在反向生成对象模型前,可以使用ORM对象关系模型建立数据库表单;根据数据库的连接地址、用户名和密码,建立与数据库的连接;
进一步的,建立数据表,用于记录数据库的版本号;其中,初始化版本号置为0;创建所述数据库的备份脚本目录,并生成配置信息。
上述实施例,通过读取数据库的配置信息,建立与数据库的连接,然后执行数据库的数据模型的更新流程。
在一个实施例中,S110的反向生成对象模型的步骤,可以包括如下:
调用数据库引擎驱动,读取当前数据库的表单数据,根据表单数据进行代码转换,反向生成对象模型;具体的,获取所述表单数据中的名称和字段,对所述名称和字段进行排序,将所述名称和字段转换成代码。
S120,读取新版本数据库的数据模型,对比所述对象模型与新版本的数据模型的差异,并生成带版本号的差分脚本;
此步骤中,可以利用数据库工具(如sqlalchemy)读取新版本数据库的数据模型,
由于新的数据模型位于系统代码中,可以加载新旧版本的数据模型进行差异对比。
在一个实施例中,生成带版本号的差分脚本的步骤,可以将所述对象模型和新版本的数据模型中的每个元数据进行对比;根据所述元数据的字段差异,生成差分脚本及其版本号。
S130,将所述版本号记录到预先创建的数据表中;
此步骤中,通过在数据库中新增数据表,从而实现对数据库表单变更的版本控制,是对数据库进行更新的前提;例如,可以在预先创建的数据表中,在原版本号基础上将版本号加1。
S140,根据所述数据表记录的版本号和差分脚本,对数据库的数据模型进行更新;
此步骤中,利用数据表记录的版本号和差分脚本,可以对数据库模型进行更新,例如数据库的升降机操作,同时可以确保在更新过程当中的差异和变更记录。
参考图2所示,图2是一个实例的生成差分脚本的流程图,首先建立与数据库的连接,然后调用数据库引擎驱动器,将数据库变动数据反向生成对象模型与新版本的数据模型比对后,得到模型的差异,生成数据库脚本,保存为差分脚本。
在一个实施例中,所述更新操作为降级操作;对应的,所述步骤S140中具体的降级操作可以如下:
读取所述数据表中记录的最新的版本号;
查找所述最新的版本号的上一个版本号对应的差分脚本;
执行所述上一个版本号中的降级函数,将数据库的数据模型降级到上一个版本;其中,所述降级函数记录从数据库表单从新版本到旧版本的操作。
上述实施例中,通过数据表记录的最新的版本号,在降级的过程中,通过版本号减1后,找到对应的差分脚本,运行降级函数,即可恢复到相应版本的数据模型。
在一个实施例中,所述更新操作为升级操作;对应的,所述步骤S140中具体的升级操作可以如下:
读取所述数据表中记录的最新的版本号;
根据所述最新的版本号查找对应的差分脚本;
执行所述差分脚本中的升级函数,将数据库的数据模型升级到最新版本;其中,所述升级函数记录从数据库表单从旧版本到新版本的操作。
上述实施例中,在进行数据库的升级前,将要升级到的版本的数据模型与记录在数据表中的最新版本的数据模型进行差异比对,然后将两者差异生成差分脚本及其版本号,并将该版本号记录在数据表中,以供后续进行更新时使用。
本发明的技术,可以应用在软件开发过程中,特别是具备ORM的WEB框架中,在数据库的对象模型发生改变之后,自动对比原数据模型和新的数据模型,当模型不一致时,可以动态修改数据库字段;在数据模型新增字段,不影响原数据库中数据,仅进行新增字段的操作;数据库进行升级之前,可以自动把前后数据模型的差异记录为SQL差分脚本并保存;在进行升降级时,可分别执行升级脚本和降级脚本对数据库结构进行覆盖和修改;另外,数据模型和升降级脚本(如Class类和方法)可以使用Python通用库生成,可任意移植并转化成其他语言的数据模型。
综合上述实施例的方案,本发明的数据库的数据模型更新方法,具有如下优点:
(1)设计了数据库表单版本控制的方案;通过在数据表单中引进版本的概念,新增记录版本号的数据表单,表单名可以记为“version”从而实现对数据库表单变更的版本控制。
(2)通过数据库引擎驱动器,配置文件指定连接的数据库类型,对于连接不同类型的数据库,可以通过提供不同的参数类型,例如URL、用户名或密码等组合,使用不同的SQL语句;数据库引擎驱动器采用基于SQLalchemy实现的一种多数据库支持的库,使得在工作的时候,可以跨越不同的数据库系统,例如Mysql,Sqlite等。
(3)在进行升降级时,反向生成数据模型,并与新的数据模型进行差异对比,自动生成升降级的差分脚本,并将差分脚本名称以版本号作为标识,例如,可以记为“如0001_migrateion.**”以便升降级使用;
借助SQLalchemy库可以反向生成数据模型,差异对比新旧的数据模型,生成相应的升降级脚本函数。
参考图3所示,图3是本发明实施例的数据库的数据模型更新系统结构示意图,主要包括:
转换模块110,用于获取当前数据库的表单数据,并反向生成对象模型;
比对模块120,用于利用数据库工具读取新版本的数据模型,对比所述对象模型与新版本的数据模型的差异,并生成带版本号的差分脚本;
记录模块130,用于将所述版本号依据先后顺序记录到预先创建的数据表中;
更新模块140,用于根据所述数据表记录的版本号和差分脚本,对数据库的数据模型进行更新。
本发明的数据库的数据模型更新系统与本发明的数据库的数据模型更新方法一一对应,在上述数据库的数据模型更新方法的实施例阐述的技术特征及其有益效果均适用于数据库的数据模型更新系统的实施例中,特此声明。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据库的数据模型更新方法,其特征在于,包括:
获取当前数据库的表单数据,并反向生成对象模型;
读取新版本数据库的数据模型,对比所述对象模型与新版本的数据模型的差异,并生成带版本号的差分脚本;
将所述版本号记录到预先创建的数据表中;
根据所述数据表记录的版本号和差分脚本,对数据库的数据模型进行升降级操作;
若所述升降级操作为降级操作;所述对数据库的数据模型进行升降级操作的步骤包括:读取所述数据表中记录的最新的版本号;查找所述最新的版本号的上一个版本号对应的差分脚本;执行所述上一个版本号中的降级函数,将数据库的数据模型降级到上一个版本;其中,所述降级函数记录从数据库表单从新版本到旧版本的操作;
若所述升降级操作为升级操作;所述对数据库的数据模型进行升降级操作的步骤包括:读取所述数据表中记录的最新的版本号;根据所述最新的版本号查找对应的差分脚本;执行所述差分脚本中的升级函数,将数据库的数据模型升级到最新版本;其中,所述升级函数记录从数据库表单从旧版本到新版本的操作。
2.根据权利要求1所述的数据库的数据模型更新方法,其特征在于,所述获取当前数据库的表单数据,并反向生成对象模型的步骤前,还包括:
使用ORM对象关系模型建立数据库表单;根据数据库的连接地址、用户名和密码,建立与数据库的连接。
3.根据权利要求1所述的数据库的数据模型更新方法,其特征在于,还包括:
建立数据表,用于记录数据库的版本号;其中,初始化版本号置为0;
创建所述数据库的备份脚本目录,并生成配置信息。
4.根据权利要求1所述的数据库的数据模型更新方法,其特征在于,获取当前数据库的表单数据,并反向生成对象模型的步骤包括:
调用数据库引擎驱动,读取当前数据库的表单数据,根据表单数据进行代码转换,反向生成对象模型。
5.根据权利要求4所述的数据库的数据模型更新方法,其特征在于,根据表单数据进行代码转换的步骤包括:
获取所述表单数据中的名称和字段,对所述名称和字段进行排序,将所述名称和字段转换成代码。
6.根据权利要求1所述的数据库的数据模型更新方法,其特征在于,将所述版本号记录到预先创建的数据表中的步骤包括:
在预先创建的数据表中,在原版本号基础上将版本号加1。
7.根据权利要求1所述的数据库的数据模型更新方法,其特征在于,所述对比所述对象模型与新版本的数据模型的差异,并生成带版本号的差分脚本的步骤包括:
将所述对象模型和新版本的数据模型中的每个元数据进行对比;
根据所述元数据的字段差异,生成差分脚本及其版本号。
8.一种数据库的数据模型更新系统,其特征在于,包括:
转换模块,用于获取当前数据库的表单数据,并反向生成对象模型;
比对模块,用于利用数据库工具读取新版本的数据模型,对比所述对象模型与新版本的数据模型的差异,并生成带版本号的差分脚本;
记录模块,用于将所述版本号依据先后顺序记录到预先创建的数据表中;
更新模块,用于根据所述数据表记录的版本号和差分脚本,对数据库的数据模型进行升降级操作;
所述更新模块,还用于若所述升降级操作为降级操作;所述对数据库的数据模型进行升降级操作的步骤包括:读取所述数据表中记录的最新的版本号;查找所述最新的版本号的上一个版本号对应的差分脚本;执行所述上一个版本号中的降级函数,将数据库的数据模型降级到上一个版本;其中,所述降级函数记录从数据库表单从新版本到旧版本的操作;
所述更新模块,还用于若所述升降级操作为升级操作;所述对数据库的数据模型进行升降级操作的步骤包括:读取所述数据表中记录的最新的版本号;根据所述最新的版本号查找对应的差分脚本;执行所述差分脚本中的升级函数,将数据库的数据模型升级到最新版本;其中,所述升级函数记录从数据库表单从旧版本到新版本的操作。
9.根据权利要求8所述的数据库的数据模型更新系统,其特征在于,还包括:
数据库连接模块,用于使用ORM对象关系模型建立数据库表单;根据数据库的连接地址、用户名和密码,建立与数据库的连接。
10.根据权利要求8所述的数据库的数据模型更新系统,其特征在于,还包括:
信息生成模块,用于建立数据表,用于记录数据库的版本号;其中,初始化版本号置为0;创建所述数据库的备份脚本目录,并生成配置信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611227152.0A CN106649771B (zh) | 2016-12-27 | 2016-12-27 | 数据库的数据模型更新方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611227152.0A CN106649771B (zh) | 2016-12-27 | 2016-12-27 | 数据库的数据模型更新方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106649771A CN106649771A (zh) | 2017-05-10 |
CN106649771B true CN106649771B (zh) | 2019-10-25 |
Family
ID=58831528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611227152.0A Active CN106649771B (zh) | 2016-12-27 | 2016-12-27 | 数据库的数据模型更新方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106649771B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107220326B (zh) * | 2017-05-23 | 2018-09-18 | 至本医疗科技(上海)有限公司 | 一种生物医学知识库的信息更新方法及系统 |
CN107515933A (zh) * | 2017-08-29 | 2017-12-26 | 平安科技(深圳)有限公司 | 修改源数据库表结构的方法、服务器、系统及存储介质 |
CN110018835B (zh) * | 2018-01-09 | 2022-08-02 | 中兴通讯股份有限公司 | Yang模型配置数据处理方法及装置、终端设备及存储介质 |
CN108629006A (zh) * | 2018-05-04 | 2018-10-09 | 中国建设银行股份有限公司 | 一种数据模型与数据库对象的同步方法及装置 |
CN108874439B (zh) * | 2018-07-02 | 2023-04-11 | 京东方科技集团股份有限公司 | 获取定制差分包的方法及装置、升级方法及装置 |
CN111352918B (zh) * | 2018-12-21 | 2023-05-23 | 卓望数码技术(深圳)有限公司 | 一种终端数据库数据迁移方法及系统 |
CN109492014A (zh) * | 2018-12-26 | 2019-03-19 | 广州市诚毅科技软件开发有限公司 | 一种数据库模型包创建方法、装置及设备 |
CN110059096A (zh) * | 2019-03-16 | 2019-07-26 | 平安城市建设科技(深圳)有限公司 | 数据版本管理方法、装置、设备及存储介质 |
CN111858550B (zh) * | 2020-07-07 | 2022-05-24 | 北京工业大学 | 一种固件系统特征数据库的构建及更新方法 |
CN112486990B (zh) * | 2020-11-27 | 2023-05-02 | 浪潮通用软件有限公司 | 一种根据模型描述同步数据库表结构的方法及设备 |
CN112527285A (zh) * | 2020-12-16 | 2021-03-19 | 建信金融科技有限责任公司 | 一种脚本生成方法和装置 |
CN113641745B (zh) * | 2021-08-18 | 2024-01-26 | 上海通联金融服务有限公司 | 跨语言平台操作数据库的方法 |
CN113687825B (zh) * | 2021-08-25 | 2023-12-12 | 恒安嘉新(北京)科技股份公司 | 一种软件模块的构建方法、装置、设备及存储介质 |
CN113986305B (zh) * | 2021-11-17 | 2022-10-21 | 广州天维信息技术股份有限公司 | B/s模型升级的检测方法、装置、设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102937965A (zh) * | 2012-09-29 | 2013-02-20 | 山东浪潮齐鲁软件产业股份有限公司 | 一种基于数据模型的元系统设计方法 |
CN104063495A (zh) * | 2014-07-04 | 2014-09-24 | 用友软件股份有限公司 | 表单扩展方法与表单扩展装置 |
CN104216948A (zh) * | 2014-08-12 | 2014-12-17 | 上海新炬网络技术有限公司 | 一种数据模型的差异控制方法 |
CN104899257A (zh) * | 2015-05-18 | 2015-09-09 | 北京京东尚科信息技术有限公司 | 分布式数据仓库中的数据更新方法和装置 |
CN105302587A (zh) * | 2014-06-30 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 数据更新方法及装置 |
-
2016
- 2016-12-27 CN CN201611227152.0A patent/CN106649771B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102937965A (zh) * | 2012-09-29 | 2013-02-20 | 山东浪潮齐鲁软件产业股份有限公司 | 一种基于数据模型的元系统设计方法 |
CN105302587A (zh) * | 2014-06-30 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 数据更新方法及装置 |
CN104063495A (zh) * | 2014-07-04 | 2014-09-24 | 用友软件股份有限公司 | 表单扩展方法与表单扩展装置 |
CN104216948A (zh) * | 2014-08-12 | 2014-12-17 | 上海新炬网络技术有限公司 | 一种数据模型的差异控制方法 |
CN104899257A (zh) * | 2015-05-18 | 2015-09-09 | 北京京东尚科信息技术有限公司 | 分布式数据仓库中的数据更新方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106649771A (zh) | 2017-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106649771B (zh) | 数据库的数据模型更新方法和系统 | |
US9110686B2 (en) | Web client command infrastructure integration into a rich client application | |
US20140108440A1 (en) | Configuration of Life Cycle Management for Configuration Files for an Application | |
US20120185454A1 (en) | Method and device for accessing file resources | |
CN109947433A (zh) | 一种小程序的生成方法、更新方法及装置 | |
CN104133772A (zh) | 一种自动生成测试数据的方法 | |
CN103995854A (zh) | 一种设备跨版本升级方法和装置 | |
CN103810257A (zh) | 一种升级软件数据库的方法、装置及设备 | |
CN107329765B (zh) | 程序文件处理方法及装置 | |
CN102857949A (zh) | 一种规划数据一致性保证的方法和装置 | |
CN115292307A (zh) | 数据同步系统、方法及相应计算机设备和存储介质 | |
CN115712623A (zh) | 一种基于捕获元数据变更的批量数据容错采集方法 | |
CN111125067A (zh) | 数据维护方法及装置 | |
CN105677805A (zh) | 一种利用protobuf的数据存储、读取方法及装置 | |
CN103324716A (zh) | 一种基于安卓系统的应用程序数据库更新方法 | |
CN108491218B (zh) | 一种数据库变更文件生成的方法和装置 | |
CN101425078A (zh) | 一种软件源代码的更新方法及装置 | |
CN112764874B (zh) | 一种基于cmdb配置管理系统的虚拟机服务器信息采集方法 | |
CN106776824B (zh) | Android数据库的升级方法及系统 | |
CN103812912B (zh) | 一种维护组织结构信息的方法及装置 | |
CN102521408B (zh) | 一种通过jdbc接口访问平面文件的方法 | |
CN104636471A (zh) | 一种程序代码的查找方法及装置 | |
CN109117173B (zh) | 一种基于项目版本开发的配制文件管理方法 | |
CN110866012A (zh) | 表结构管理方法、装置、服务器及可读存储介质 | |
CN102611580B (zh) | 一种基于规格驱动的多版本网络管理方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |