CN102929878A - 一种数据库变更管理方法及装置 - Google Patents
一种数据库变更管理方法及装置 Download PDFInfo
- Publication number
- CN102929878A CN102929878A CN2011102270961A CN201110227096A CN102929878A CN 102929878 A CN102929878 A CN 102929878A CN 2011102270961 A CN2011102270961 A CN 2011102270961A CN 201110227096 A CN201110227096 A CN 201110227096A CN 102929878 A CN102929878 A CN 102929878A
- Authority
- CN
- China
- Prior art keywords
- data
- snapshot
- database
- statement
- comparison result
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据库变更管理方法及装置,以解决人工管理存在的问题。所述方法包括:对数据库中的原始数据进行快照得到快照数据;对数据库变更后的数据进行快照得到最新快照数据;将所述最新快照数据与上一次的快照数据进行比对得到比对结果,如果比对结果不一致,则用所述最新快照数据替换上一次的快照数据进行保存;依据所述比对结果自动生成数据库语句。本申请可以更高效、准确地完成数据库DDL、DML语句的自动生成,避免研发过程中的数据库变更在最后上线发布环节中遗漏,有效提高发布过程的效率和质量。
Description
技术领域
本申请涉及数据库技术,特别是涉及一种数据库变更管理方法及装置。
背景技术
在软件研发过程中,数据库的变更管理非常重要。参照图1,是现有技术中的研发流程示意图。整个研发流程基本分为开发、测试和上线三个阶段,每个阶段都会涉及数据库的操作与管理,具体如下:
在开发阶段,首先根据《系统设计文档》整理DDL(Data DescriptionLanguage,数据定义语言)和DML(Data Manipulation Language,数据操作语言)语句,并由人工记录DDL和DML语句,然后在开发库中执行所述DDL和DML语句。执行完毕后,判断数据库设计是否调整,如果进行了调整,则修改《系统设计文档》,然后返回去重新根据修改后的《系统设计文档》整理DDL和DML语句,并继续执行后续步骤;如果未调整,则进入测试阶段。
在测试阶段,首先取出人工记录的DDL和DML语句,然后在测试库中执行所述DDL和DML语句;执行完毕后,判断数据库设计是否调整,如果进行了调整,则修改《系统设计文档》,再返回重新根据修改后的《系统设计文档》整理DDL和DML语句,并由人工记录DDL和DML语句,然后再次进入测试阶段取出人工记录的DDL和DML语句执行;如果未调整,则进入上线阶段。
在上线阶段,首先将《系统设计文档》与开发(或测试)库进行人工比对,整理出DDL和DML语句,然后在线上库中执行所述DDL和DML语句,最后完成上线工作。
从上述图1可以看出,在开发、测试和上线的各个阶段,每次调整数据库设计都需要变更数据库,而每次变更数据库都需要根据《系统设计文档》和开发(或测试)数据库人工整理DDL和DML语句,或合并整理人工记录的DDL和DML语句。这种全部通过人工工作方式完成的数据库变更管理非常繁琐,多次人工整理DDL和DML语句很容易出现遗漏或编写错误,进而导致在未知时间爆发严重的线上故障;而且,在系统发布中,尤其是多个系统发布需要串行的情况下,由于DDL、DML内容遗漏很可能导致发布时间过长,进而导致发布失败。
发明内容
本申请提供了一种数据库变更管理方法及装置,以解决人工管理存在的问题。
为了解决上述问题,本申请公开了一种数据库变更管理方法,包括:
对数据库中的原始数据进行快照得到快照数据;
对数据库变更后的数据进行快照得到最新快照数据;
将所述最新快照数据与上一次的快照数据进行比对得到比对结果,如果比对结果不一致,则用所述最新快照数据替换上一次的快照数据进行保存;
依据所述比对结果自动生成数据库语句。
其中,所述对数据库中的原始数据进行快照得到快照数据,包括:从数据库读取原始数据并创建快照;将快照数据保存到快照数据库。
优选的,将所述最新快照数据与上一次的快照数据进行比对得到比对结果,包括:将最新快照数据中的元数据与上一次快照数据中的元数据进行比对,得到元数据比对结果;将最新快照数据中的应用初始化配置数据与上一次快照数据中的应用初始化配置数据进行比对,得到应用初始化配置数据比对结果。
其中,所述数据库语句包括DDL数据定义语句和DML数据操作语句。
优选的,依据所述元数据比对结果自动生成DDL数据定义语句;依据所述应用初始化配置数据比对结果自动生成DML数据操作语句。
本申请还提供了一种数据库变更管理装置,包括:
数据快照模块,用于对数据库中的原始数据进行快照得到快照数据,并用于对数据库变更后的数据进行快照得到最新快照数据,并输出快照数据给所述快照比对模块;
快照比对模块,用于将所述最新快照数据与所述数据快照库中上一次的快照数据进行比对得到比对结果,如果比对结果不一致,则用所述最新快照数据替换上一次的快照数据保存到所述数据快照库中;
语句生成模块,用于依据所述比对结果自动生成数据库语句。
优选的,所述快照比对模块包括:
元数据比对子模块,用于将最新快照数据中的元数据与上一次快照数据中的元数据进行比对,得到元数据比对结果;
配置数据比对子模块,用于将最新快照数据中的应用初始化配置数据与上一次快照数据中的应用初始化配置数据进行比对,得到应用初始化配置数据比对结果。
其中,所述数据库语句包括DDL数据定义语句和DML数据操作语句。
优选的,所述语句生成模块包括:
DDL语句生成子模块,用于依据所述元数据比对结果自动生成DDL数据定义语句;
DML语句生成子模块,用于依据所述应用初始化配置数据比对结果自动生成DML数据操作语句。
与现有技术相比,本申请包括以下优点:
本申请通过数据库快照的方式实现对数据库变更的管理。具体的,首先将开发库中的原始数据作为快照保存,在开发阶段完成数据库设计调整后,根据快照与变更后的开发库数据比对,计算找出二者间的差异,并展现出比对结果;再根据这些差异自动生成DDL和DML语句,并用于在测试库中执行;同样,在上线阶段,也是根据上一次快照与变更后的开发(或测试)库的比对自动生成DDL和DML语句,并用于在线上库中执行。
由上可知,在开发、测试和上线的各个阶段,每次调整数据库设计都是根据上一次快照与变更后的数据库数据进行比对来自动生成DDL和DML语句,无需人工整理DDL和DML语句,也无需人工记录比对的差异,而且还可以避免遗漏和编写错误的问题。因此,本申请可以更高效、准确地完成数据库DDL、DML语句的自动生成,避免研发过程中的数据库变更在最后上线发布环节中遗漏,有效提高发布过程的效率和质量。
附图说明
图1是现有技术中的研发流程示意图;
图2是本申请实施例所述一种数据库变更管理方法的流程图;
图3是本申请实施例所示的一种系统架构图;
图4是本申请另一实施例所述的研发流程示意图;
图5是本申请实施例中项目开发前快照数据初始化的时序图;
图6是本申请实施例中的快照比对时序图;
图7是本申请实施例中DDL、DML语句的生成时序图;
图8是本申请实施例所述一种数据库变更管理装置的结构图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请通过数据库快照的方式实现对数据库变更的管理。本申请首先保存了数据库数据的快照,并实现了快照数据的管理;然后在开发(或测试)阶段完成数据库设计的调整后,根据快照与开发(或测试)库数据的比对,计算找出二者间的差异;再根据这些差异,自动生成DDL、DML语句。
下面通过实施例对本申请的内容进行详细说明。
参照图2,是本申请实施例所述一种数据库变更管理方法的流程图。
步骤201,对数据库中的原始数据进行快照得到快照数据;
数据库中的原始数据是指数据库未变更之前的数据。
本申请实施例中,可以对数据库中的元数据(metadata)和应用初始化配置数据进行快照并保存,得到对元数据(metadata)和应用初始化配置数据的静态描述。其中,所述元数据在这里特指在数据库管理系统中对数据库对象(表、字段、视图、存储过程等)的描述。在数据库中,通过查询元数据可以获取数据对象的详细信息,比如:表名、表描述、字段名、字段类型、字段长度、字段描述等。
对数据库变更之前的元数据(metadata)和应用初始化配置数据进行快照之后,若数据库发生变更,则在需要的时候可以执行步骤202至204。若数据库发生多次变更,则在每次变更后需要的时候循环执行以下步骤:
步骤202,对数据库变更后的数据进行快照得到最新快照数据;
当数据库设计进行了调整使得数据库数据发生了变更,此时可以对变更后的元数据(metadata)和应用初始化配置数据进行快照,得到最新的快照数据。
步骤203,将所述最新快照数据与上一次的快照数据进行比对得到比对结果,如果比对结果不一致,则用所述最新快照数据替换上一次的快照数据进行保存;
其中,所述比对是指通过计算找出数据间的差异。
如果是第一次变更,则所述上一次的快照数据是指对原始数据进行快照得到快照数据,即将第一次变更后的快照数据与原始数据的快照进行比对;如果是第二次变更,则所述上一次的快照数据就是指第一次比对后最终保存的快照数据,即将第二次变更后的快照数据与第一次比对后最终保存的快照进行比对;依此类推,第N次变更后,所述上一次的快照数据是指第N-1次比对后最终保存的快照数据,即将第N次变更后的快照数据与第N-1次比对后最终保存的快照进行比对。
每次比对之后,如果二者存在差异,即不一致,则在人工确认的情况下,会用最新快照数据覆盖掉上一次的快照数据进行保存,以便用于下一次的快照比对。而且,每次的比对结果还会记录两次快照数据的这种差异。在实际应用中,也存在多次比对之后才经人工确认,用最新快照数据覆盖掉上一次保存的快照数据的情况。
当然,在某些应用情况下,即使数据库未发生变更,也可以对数据库进行快照,然后将当前得到的快照数据与上一次的快照数据进行比对,此时比对结果即为一致,则仍保留上一次的快照数据。
具体的比对过程主要包括:
将最新快照数据中的元数据(metadata)与上一次快照数据中的元数据(metadata)进行比对,得到元数据比对结果;
将最新快照数据中的应用初始化配置数据与上一次快照数据中的应用初始化配置数据进行比对,得到应用初始化配置数据比对结果。
步骤204,依据所述比对结果自动生成数据库语句。
每次比对之后,都可以根据比对结果自动生成数据库语句,其中所述自动生成是指通过计算整理出数据库语句,不需要人工整理。本申请实施例中,所述数据库语句包括DDL语句和DML语句,分别定义如下:
DDL:数据定义语言,用来声明数据库结构和架构。一些例子如下:
CREATE-数据库中创建对象;
ALTER-修改数据库的结构;
DROP-从数据库中删除对象;
TRUNCATE-删除数据库表中所有记录,包括这些记录占用的存储空间;
COMMENT-添加备注到数据库字典;
RENAME-重命名对象;
DML:数据操作语言,命令使用户能够查询数据库以及操作已有数据库中的数据的计算机语言。一些例子如下:
SELECT-从数据库中获取数据;
INSERT-向数据库表中插入数据;
UPDATE-更新数据库表中的数据;
DELETE-删除数据库表中的记录;
CALL-调用PL/SQL子程序或Java子程序;
EXPLAIN PLAN-数据库执行计划;
LOCK TABLE-锁定数据库表。
依据上述元数据比对结果可以自动生成DDL数据定义语句;
依据上述应用初始化配置数据比对结果,可以自动生成DML数据操作语句。
基于上述流程,图2所示实施例的内容可通过图3所示的系统实现。
参照图3,是本申请实施例所示的一种系统架构图。
所述系统主要包括数据快照-数据库,数据快照-服务器,开发库1和开发库2,技术人员客户端。
在所述系统中,数据快照-服务器用于根据技术人员客户端发送的指令对开发库1或开发库2中的数据进行快照,然后将快照数据保存到数据快照-数据库中。
上述图2和图3所示实施例的内容可以应用到多次迭代研发流程中。第一次迭代的时候是开发库和空的快照(不存在快照)比对,后面的所有迭代都是和上一次迭代的快照做比对。例如,有一个新项目,第一次迭代开发的时候,数据快照-数据库里是没有数据的,然后第一次迭代上线之后,会有一次数据快照-数据库迭代版本确认的操作,这个确认操作会记录上一个迭代快照的历史信息,并重新生成快照;然后在第二次迭代的时候,开发库的快照都是和上一次迭代的快照做比对了。
为了与现有技术中图1所示的研发流程进行对比,下面通过图4所示使用本申请内容的研发流程进行对比说明。
参照图4,是本申请另一实施例所述的研发流程示意图。
整个研发流程同样分为开发、测试和上线三个阶段。
首先在项目开发之前,按照图5所示流程使用快照比对工具对数据库中的原始数据进行快照,即从数据库读取原始数据并创建快照,将快照数据保存到快照数据库。
参照图5,是本申请实施例中项目开发前快照数据初始化的时序图。
1.技术人员通过操作客户端向快照比对工具发送数据初始化命令;
2.快照比对工具从开发数据库中读取开发数据库结构数据;
其中,所述开发数据库结构数据包括上述的元数据(metadata)和应用初始化配置数据;
3.快照比对工具将开发数据库结构数据保存到快照数据库;
4.快照比对工具向技术人员客户端返回命令执行结果。
初始化结束后,进入开发阶段。
在开发阶段,仍需人工完成的工作主要包括:根据《系统设计文档》整理DDL、DML语句,在开发库中执行所述DDL和DML语句,执行完毕后,判断数据库设计是否调整,如果进行了调整,则直接在开发库中变更表结构或做数据记录的增、删、改操作即可,然后重新在开发库中执行所述DDL和DML语句,同时可线下修改所述《系统设计文档》,如果未调整,则进入测试阶段。
其中,根据《系统设计文档》整理DDL、DML语句主要包括以下工作:
在数据库设计文档中,对数据库表结构的描述一般是二维表格的形式,即不是可以直接在数据库中执行的DDL、DML语句。其中包含数据库表名、数据库字段描述列表,字段描述列表中包含字段名、字段类型、字段长度、字段含义、字段备注说明。人工整理DDL、DML语句分为如下几种情况:
创建新的数据库表;
修改数据库表结构(修改字段类型、字段长度、字段含义、字段备注说明);
插入数据库表记录;
修改数据库表记录;
删除数据库表记录;
创建数据库索引;
修改数据库索引;
删除数据库索引;
创建数据库序列(Oracle);
修改数据库序列(Oracle);
删除数据库序列(Oracle)。
例如创建新的数据库表的情况,在设计文档中描述如下:
数据库表名:tc_taocode
字段名 | 字段类型 | 是否允许空 | 默认值 | 字段描述 |
code | varchar2(32) | not null | 代码 | |
type | number(1) | not null | 1 | 类型 |
url | varchar2(2000) | |||
itemid | number(32) | 宝贝id | ||
shopid | number(32) | 店铺id |
表1
然后在开发阶段,设计人员或开发人员手工整理如下DDL语句:
将图4与图1进行对比,二者在开发阶段的差异包括:
第一,图4省去了人工记录DDL、DML语句的过程,图1的现有技术中,进行人工记录的目的是,在测试阶段取出这些人工记录后,可以快速查找到数据库调整前后的差异。而本申请提供的如图4所示的方案,可以通过快照比对找出这些差异,因此无需再人工记录;
第二,图4中修改《系统设计文档》可在线下完成,每次进行数据库设计调整之后,都可以直接返回到开发库中进行变更表结构或数据记录的增、删、改操作,无需每次在线修改《系统设计文档》并每次重新整理DDL、DML语句。
在测试阶段,首先将快照数据与开发库数据进行比对,找出二者间的差异,并在快照比对工具中展现出来,再根据这些差异自动生成DDL、DML语句。然后在测试库中执行所述DDL和DML语句,执行完毕后,判断数据库设计是否调整,如果进行了调整,则返回去直接在开发库中变更表结构或做数据记录的增、删、改操作即可,然后重新在开发库中执行,同时可线下修改所述《系统设计文档》,如果未调整,则进入上线阶段。
其中,所述快照数据是开发阶段多次调整数据库设计之前对数据库原始数据进行快照得到的数据,而进入测试阶段之后,开发库中的数据已经过多个数据库设计的调整,因此会与所述快照数据存在差异。因此,通过这种快照比对就可以找出这种差异,并依据差异自动生成DDL、DML语句。具体的快照比对过程可参照图6所示。
参照图6,是本申请实施例中的快照比对时序图。
1.技术人员通过操作客户端向快照比对工具发送数据比对命令;
2.快照比对工具从开发数据库读取最新快照数据;
3.快照比对工具从快照数据库读取上次快照数据;
4.快照比对工具循环比对最新快照数据和上次快照数据中的数据库metadata(元数据);
5.快照比对工具循环比对最新快照数据和上次快照数据中的应用初始化配置数据;
6.快照比对工具将比对结构保存到快照数据库;
7.快照比对工具向技术人员客户端返回命令执行结果。
将图4与图1进行对比,二者在测试阶段的差异包括:
第一,图4中通过快照比对可以自动生成DDL和DML语句,不需要取出人工记录的DDL和DML语句;
第二,图4中修改《系统设计文档》可在线下完成,每次进行数据库设计调整之后,都可以直接返回到开发库中进行变更表结构或数据记录的增、删、改操作,无需每次在线修改《系统设计文档》并每次重新整理DDL、DML语句。
在上线阶段,首先将快照数据与开发库数据进行比对,找出二者间的差异,并在快照比对工具中展现出来,再根据这些差异自动生成DDL、DML语句。然后在线上库中执行所述DDL和DML语句,最后完成上线工作。
将图4与图1进行对比,二者在上线阶段的差异主要为:图4中通过快照比对可以自动生成DDL和DML语句,省去了人工整理DDL和DML语句的步骤。
在上述测试阶段和上线阶段,可通过图7所示流程自动生成DDL、DML语句。
参照图7,是本申请实施例中DDL、DML语句的生成时序图。
1.技术人员通过操作客户端向快照比对工具发送DDL、DML生成命令;
2.快照比对工具从快照数据库中读取最后一次比对结果;
3.快照比对工具根据比对结果生成DDL、DML语句;
4.快照比对工具向技术人员客户端返回命令执行结果。
下面通过举例说明如何自动生成DDL、DML语句。
1)自动生成DDL语句
例如,变更数据库表的情况,在设计文档中描述如下:
数据库表名:tc_taocode
表结构变更前:
字段名 | 字段类型 | 是否允许空 | 默认值 | 字段描述 | 自增? |
id | bigint(32) | not null | 是 | ||
code | varchar(32) | not null | 空白 | 代码 | |
type | tinyint(1) | not null | 1 | 类型 | |
url | varchar(2000) | ||||
itemid | bigint(32) | 宝贝id | |||
shopid | bigint(32) | 店铺id |
表2
表结构变更后:
字段名 | 字段类型 | 是否允许空 | 默认值 | 字段描述 | 自增? |
id | bigint(32) | not null | 是 | ||
code | varchar(32) | not null | 空白 | 代码 | |
type | tinyint(2) | not null | 1 | 类型 | |
url | varchar(2000) | ||||
itemid | bigint(64) | 宝贝数字id | |||
shopid | bigint(64) | 店铺数字id | |||
itemcode | varchar2(256) | 宝贝字符id | |||
shopcode | varchar2(256) | 店铺字符id |
表3
使用快照比对工具对比,工具中的逻辑如下:
例如,在mysql数据库中,select table_name,table_comment frominformation_schema.tables where table_schema=′test′orderby table_name。
所述SQL语句可以查询出test用户(这里指数据库用户)下所有的数据库表名、表描述。
所述SQL语句可以查询出test用户(同上)下,所有表的字段信息,包括:表名称、字段名称、字段类型、字段缺省值、是否允许空、字段描述、是否是自增字段。
通过上述的SQL查询方式,分别从快照数据库和开发数据库查询出schema数据,然后通过循环比对这些数据库表,在比对tc_taocode表时,可以从上述的查询得到以下两个字段列表,如下:
字段列表1:
表4
字段列表2:
表5
然后,以表名和字段名关联上述两个列表,找出后面5列的差异,例如这个例子中,type字段的类型从tinyint(1)改成了tinyint(2),则生成的DDL语句为:
ALTER TABLE`test`.`tc_taocode`
CHANGE COLUMN`type``type`tinyint(2)NOT NULL DEFAULT 1COMMENT′类型′;
itemid字段的字段描述从宝贝id修改为宝贝数字id,则生成的DDL语句为:
ALTER TABLE`test`.`tc_taocode`
CHANGE COLUMN`itemid``itemid`bigint(20)NULL DEFAULTNULL COMMENT′宝贝数字id′;
增加了itemcode字段,则生成DDL语句为:
ALTER TABLE`test`.`tc_taocode`
ADD COLUMN`itemcode`varchar(256)NULL DEFAULT NULLCOMMENT′宝贝字符id′。
需要说明的是,不同的数据库的DDL语句语法会有所不同,本工具会根据不同的数据库产生相对应格式的DDL语句。
2)自动生成DML语句
例如mysql数据库中有一张配置表:tc_code
字段名 | 字段类型 | 是否允许空 | 默认值 | 字段描述 | 自增? |
id | bigint(32) | not null | 是 | ||
Key | varchar(255) | ||||
Value | varchar(255) | ||||
Desc | varchar(255) |
表6
该表中原来有2条配置数据如下:
Id | Key | Value | Desc |
1 | codeType | 1 | 宝贝类型 |
2 | codeType | 2 | 店铺类型 |
表7
一次迭代之后该配置表中数据如下:
Id | Key | Value | Desc |
1 | codeType | 10 | 宝贝类型 |
2 | codeType | 20 | 店铺类型 |
3 | codeType | 30 | 其他类型 |
表8
快照数据库中新增一条配置表配置,制定配置表名为tc_code,关联字段为id。
然后,以该表的id字段关联两个列表,比对出新增的记录、修改的记录、删除的记录。
这个例子中,有两条记录的value字段的值改变了,则生成DML语句为:
update tc_code set value=10where id=1;
update tc_code set value=20where id=2;
这个例子中,新增了一条记录,则生成DML语句为:
INSERT INTO`test`.`tc_code`SET`id`=3,`Key`=′code Type′,`Value`=′30′,`Desc`=′其他类型′。
综上所述,本申请通过数据库快照的方式实现对数据库变更的管理。在开发、测试和上线的各个阶段,每次调整数据库设计都是根据上一次快照与变更后的数据库数据进行比对来自动生成DDL和DML语句,无需人工整理DDL和DML语句,也无需人工记录比对的差异,而且还可以避免遗漏和编写错误的问题。因此,本申请可以更高效、准确地完成数据库DDL、DML语句的自动生成,避免了在最后上线发布环节中出现遗漏研发过程中的数据库变更的现象,有效提高发布过程的效率和质量。
需要说明的是,对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请所必须的。
基于上述方法实施例的说明,本申请还提供了相应的数据库变更管理装置实施例。
参照图8,是本申请实施例所述一种数据库变更管理装置的结构图。
所述数据库变更管理装置主要包括数据快照服务器81,数据快照库82和客户端83。其中,所述客户端83与数据快照服务器81连接,技术人员可通过操作客户端83向所述数据快照服务器81发送快照等各种操作命令。所述数据快照服务器81与数据快照库82连接,可将快照数据保存到数据快照库82中。所述数据快照服务器81还与各种需要进行快照的数据库84,如开发库、测试库等连接,用于对这些数据库84中的数据进行快照操作。
进一步的,所述数据快照服务器81具体包括数据快照模块811、快照比对模块812和语句生成模块813,其中:
数据快照模块811,用于对数据库84中的原始数据进行快照得到快照数据;
所述数据快照模块811还用于对数据库84变更后的数据进行快照得到最新快照数据,并输出给所述快照比对模块812;
快照比对模块812,用于将所述最新快照数据与所述数据快照库82中上一次的快照数据进行比对得到比对结果,如果比对结果不一致,则用所述最新快照数据替换上一次的快照数据保存到所述数据快照库82中;
语句生成模块813,用于依据所述比对结果自动生成数据库语句。
进一步的,所述快照比对模块812具体可以包括元数据比对子模块和配置数据比对子模块,其中:
元数据比对子模块,用于将最新快照数据中的元数据与上一次快照数据中的元数据进行比对,得到元数据比对结果;
配置数据比对子模块,用于将最新快照数据中的应用初始化配置数据与上一次快照数据中的应用初始化配置数据进行比对,得到应用初始化配置数据比对结果。
此外,所述自动生成的数据库语句包括DDL数据定义语句和DML数据操作语句。
因此,所述语句生成模块813进一步可以包括DDL语句生成子模块和DML语句生成子模块,其中:
DDL语句生成子模块,用于依据所述元数据比对结果自动生成DDL数据定义语句;
DML语句生成子模块,用于依据所述应用初始化配置数据比对结果自动生成DML数据操作语句。
对于上述数据库变更管理装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处可参见上述方法实施例的部分说明即可。
综上所述,所述数据库变更管理装置通过数据库快照的方式实现对数据库变更的管理,每次调整数据库设计后,都是根据快照比对结果自动生成DDL和DML语句,无需人工整理这些语句,也无需人工记录比对的差异,而且还可以避免遗漏和编写错误的问题。因此,所述装置可以更高效、准确地完成数据库DDL、DML语句的自动生成,避免研发过程中的数据库变更在最后上线发布环节中遗漏,有效提高发布过程的效率和质量。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可
以上对本申请所提供的一种数据库变更管理方法及装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (9)
1.一种数据库变更管理方法,其特征在于,包括:
对数据库中的原始数据进行快照得到快照数据;
对数据库变更后的数据进行快照得到最新快照数据;
将所述最新快照数据与上一次的快照数据进行比对得到比对结果,如果比对结果不一致,则用所述最新快照数据替换上一次的快照数据进行保存;
依据所述比对结果自动生成数据库语句。
2.根据权利要求1所述的方法,其特征在于,所述对数据库中的原始数据进行快照得到快照数据,包括:
从数据库读取原始数据并创建快照;
将快照数据保存到快照数据库。
3.根据权利要求1所述的方法,其特征在于,将所述最新快照数据与上一次的快照数据进行比对得到比对结果,包括:
将最新快照数据中的元数据与上一次快照数据中的元数据进行比对,得到元数据比对结果;
将最新快照数据中的应用初始化配置数据与上一次快照数据中的应用初始化配置数据进行比对,得到应用初始化配置数据比对结果。
4.根据权利要求3所述的方法,其特征在于:
所述数据库语句包括DDL数据定义语句和DML数据操作语句。
5.根据权利要求4所述的方法,其特征在于:
依据所述元数据比对结果自动生成DDL数据定义语句;
依据所述应用初始化配置数据比对结果自动生成DML数据操作语句。
6.一种数据库变更管理装置,其特征在于,包括:
数据快照模块,用于对数据库中的原始数据进行快照得到快照数据,并用于对数据库变更后的数据进行快照得到最新快照数据,并输出快照数据给所述快照比对模块;
快照比对模块,用于将所述最新快照数据与所述数据快照库中上一次的快照数据进行比对得到比对结果,如果比对结果不一致,则用所述最新快照数据替换上一次的快照数据保存到所述数据快照库中;
语句生成模块,用于依据所述比对结果自动生成数据库语句。
7.根据权利要求6所述的装置,其特征在于,所述快照比对模块包括:
元数据比对子模块,用于将最新快照数据中的元数据与上一次快照数据中的元数据进行比对,得到元数据比对结果;
配置数据比对子模块,用于将最新快照数据中的应用初始化配置数据与上一次快照数据中的应用初始化配置数据进行比对,得到应用初始化配置数据比对结果。
8.根据权利要求7所述的装置,其特征在于:
所述数据库语句包括DDL数据定义语句和DML数据操作语句。
9.根据权利要求8所述的装置,其特征在于,所述语句生成模块包括:
DDL语句生成子模块,用于依据所述元数据比对结果自动生成DDL数据定义语句;
DML语句生成子模块,用于依据所述应用初始化配置数据比对结果自动生成DML数据操作语句。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110227096.1A CN102929878B (zh) | 2011-08-09 | 2011-08-09 | 一种数据库变更管理方法及装置 |
HK13103841.0A HK1176437A1 (zh) | 2011-08-09 | 2013-03-27 | 種數據庫變更管理方法及裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110227096.1A CN102929878B (zh) | 2011-08-09 | 2011-08-09 | 一种数据库变更管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102929878A true CN102929878A (zh) | 2013-02-13 |
CN102929878B CN102929878B (zh) | 2016-09-07 |
Family
ID=47644678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110227096.1A Active CN102929878B (zh) | 2011-08-09 | 2011-08-09 | 一种数据库变更管理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102929878B (zh) |
HK (1) | HK1176437A1 (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216948A (zh) * | 2014-08-12 | 2014-12-17 | 上海新炬网络技术有限公司 | 一种数据模型的差异控制方法 |
CN104317893A (zh) * | 2014-10-23 | 2015-01-28 | 国家电网公司 | 基于移动安全存储介质的缩略式数据快照实现方法 |
CN104699811A (zh) * | 2015-03-23 | 2015-06-10 | 重庆广播电视大学 | 一种无侵入式表单数据变化记录和回溯的方法及装置 |
CN104809202A (zh) * | 2015-04-24 | 2015-07-29 | 联动优势科技有限公司 | 一种数据库同步的方法和装置 |
WO2016015276A1 (en) * | 2014-07-31 | 2016-02-04 | Hewlett-Packard Development Company, L.P. | Analysis of system information |
CN105320680A (zh) * | 2014-07-15 | 2016-02-10 | 中国移动通信集团公司 | 一种数据同步方法及装置 |
CN107220349A (zh) * | 2017-05-27 | 2017-09-29 | 上海携程商务有限公司 | 数据库发布时间的预测方法和系统 |
CN107704332A (zh) * | 2017-09-28 | 2018-02-16 | 努比亚技术有限公司 | 冻屏解决方法、移动终端及计算机可读存储介质 |
CN108427699A (zh) * | 2017-09-22 | 2018-08-21 | 平安科技(深圳)有限公司 | 快速初始化系统数据库的方法、装置及存储介质 |
CN108491218A (zh) * | 2018-03-12 | 2018-09-04 | 浙江中控技术股份有限公司 | 一种数据库变更文件生成的方法和装置 |
CN109189778A (zh) * | 2018-06-29 | 2019-01-11 | 武汉掌游科技有限公司 | 一种在线修改数据库表结构的方法 |
CN110008114A (zh) * | 2019-02-25 | 2019-07-12 | 口碑(上海)信息技术有限公司 | 配置信息维护方法、装置、设备及可读存储介质 |
CN110633284A (zh) * | 2019-09-19 | 2019-12-31 | 中国工商银行股份有限公司 | 数据库中表的变更方法及装置 |
CN110633183A (zh) * | 2019-08-01 | 2019-12-31 | 平安科技(深圳)有限公司 | 监控软件产品的执行进度的方法和相关装置 |
CN111198902A (zh) * | 2018-11-16 | 2020-05-26 | 长鑫存储技术有限公司 | 元数据管理方法、装置、存储介质及电子设备 |
CN111274263A (zh) * | 2020-01-13 | 2020-06-12 | 平安国际智慧城市科技股份有限公司 | 可视化数据库变更语句生成方法、装置及存储介质 |
CN111861497A (zh) * | 2019-04-15 | 2020-10-30 | 北京嘀嘀无限科技发展有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
WO2021254106A1 (zh) * | 2020-06-15 | 2021-12-23 | 华为技术有限公司 | 数据库设计方法、装置及相关设备 |
CN116010997A (zh) * | 2023-03-20 | 2023-04-25 | 中国信息通信研究院 | 基于区块链的连续性校验的数据资源托管方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6951013B1 (en) * | 2002-03-01 | 2005-09-27 | Lozins Neal N | Method for facilitating development and testing of relational database application software |
CN101118549A (zh) * | 2007-09-05 | 2008-02-06 | 中国移动通信集团福建有限公司 | 数据查询方法 |
CN101145162A (zh) * | 2007-10-31 | 2008-03-19 | 金蝶软件(中国)有限公司 | 一种数据库动态查询的方法和系统 |
CN102081620A (zh) * | 2009-11-26 | 2011-06-01 | 中国移动通信集团贵州有限公司 | 一种数据库对象变更的控制方法及装置 |
-
2011
- 2011-08-09 CN CN201110227096.1A patent/CN102929878B/zh active Active
-
2013
- 2013-03-27 HK HK13103841.0A patent/HK1176437A1/zh unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6951013B1 (en) * | 2002-03-01 | 2005-09-27 | Lozins Neal N | Method for facilitating development and testing of relational database application software |
CN101118549A (zh) * | 2007-09-05 | 2008-02-06 | 中国移动通信集团福建有限公司 | 数据查询方法 |
CN101145162A (zh) * | 2007-10-31 | 2008-03-19 | 金蝶软件(中国)有限公司 | 一种数据库动态查询的方法和系统 |
CN102081620A (zh) * | 2009-11-26 | 2011-06-01 | 中国移动通信集团贵州有限公司 | 一种数据库对象变更的控制方法及装置 |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105320680A (zh) * | 2014-07-15 | 2016-02-10 | 中国移动通信集团公司 | 一种数据同步方法及装置 |
WO2016015276A1 (en) * | 2014-07-31 | 2016-02-04 | Hewlett-Packard Development Company, L.P. | Analysis of system information |
US10474651B2 (en) | 2014-07-31 | 2019-11-12 | Hewlett-Packard Development Company, L.P. | Analysis of system information |
CN104216948A (zh) * | 2014-08-12 | 2014-12-17 | 上海新炬网络技术有限公司 | 一种数据模型的差异控制方法 |
CN104216948B (zh) * | 2014-08-12 | 2017-12-05 | 上海新炬网络技术有限公司 | 一种数据模型的差异控制方法 |
CN104317893A (zh) * | 2014-10-23 | 2015-01-28 | 国家电网公司 | 基于移动安全存储介质的缩略式数据快照实现方法 |
CN104699811A (zh) * | 2015-03-23 | 2015-06-10 | 重庆广播电视大学 | 一种无侵入式表单数据变化记录和回溯的方法及装置 |
CN104699811B (zh) * | 2015-03-23 | 2018-02-23 | 重庆广播电视大学 | 一种无侵入式表单数据变化记录和回溯的方法及装置 |
CN104809202B (zh) * | 2015-04-24 | 2019-01-18 | 联动优势科技有限公司 | 一种数据库同步的方法和装置 |
CN104809202A (zh) * | 2015-04-24 | 2015-07-29 | 联动优势科技有限公司 | 一种数据库同步的方法和装置 |
CN107220349B (zh) * | 2017-05-27 | 2020-08-14 | 上海携程商务有限公司 | 数据库发布时间的预测方法和系统 |
CN107220349A (zh) * | 2017-05-27 | 2017-09-29 | 上海携程商务有限公司 | 数据库发布时间的预测方法和系统 |
CN108427699A (zh) * | 2017-09-22 | 2018-08-21 | 平安科技(深圳)有限公司 | 快速初始化系统数据库的方法、装置及存储介质 |
WO2019056707A1 (zh) * | 2017-09-22 | 2019-03-28 | 平安科技(深圳)有限公司 | 快速初始化系统数据库的方法、装置及存储介质 |
CN108427699B (zh) * | 2017-09-22 | 2021-08-24 | 平安科技(深圳)有限公司 | 快速初始化系统数据库的方法、装置及存储介质 |
CN107704332A (zh) * | 2017-09-28 | 2018-02-16 | 努比亚技术有限公司 | 冻屏解决方法、移动终端及计算机可读存储介质 |
CN107704332B (zh) * | 2017-09-28 | 2021-06-15 | 努比亚技术有限公司 | 冻屏解决方法、移动终端及计算机可读存储介质 |
CN108491218A (zh) * | 2018-03-12 | 2018-09-04 | 浙江中控技术股份有限公司 | 一种数据库变更文件生成的方法和装置 |
CN109189778A (zh) * | 2018-06-29 | 2019-01-11 | 武汉掌游科技有限公司 | 一种在线修改数据库表结构的方法 |
CN111198902A (zh) * | 2018-11-16 | 2020-05-26 | 长鑫存储技术有限公司 | 元数据管理方法、装置、存储介质及电子设备 |
CN110008114A (zh) * | 2019-02-25 | 2019-07-12 | 口碑(上海)信息技术有限公司 | 配置信息维护方法、装置、设备及可读存储介质 |
CN110008114B (zh) * | 2019-02-25 | 2022-08-05 | 口碑(上海)信息技术有限公司 | 配置信息维护方法、装置、设备及可读存储介质 |
CN111861497A (zh) * | 2019-04-15 | 2020-10-30 | 北京嘀嘀无限科技发展有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
CN110633183A (zh) * | 2019-08-01 | 2019-12-31 | 平安科技(深圳)有限公司 | 监控软件产品的执行进度的方法和相关装置 |
CN110633183B (zh) * | 2019-08-01 | 2022-06-24 | 平安科技(深圳)有限公司 | 监控软件产品的执行进度的方法和相关装置 |
CN110633284A (zh) * | 2019-09-19 | 2019-12-31 | 中国工商银行股份有限公司 | 数据库中表的变更方法及装置 |
CN110633284B (zh) * | 2019-09-19 | 2022-04-29 | 中国工商银行股份有限公司 | 数据库中表的变更方法及装置 |
CN111274263A (zh) * | 2020-01-13 | 2020-06-12 | 平安国际智慧城市科技股份有限公司 | 可视化数据库变更语句生成方法、装置及存储介质 |
WO2021254106A1 (zh) * | 2020-06-15 | 2021-12-23 | 华为技术有限公司 | 数据库设计方法、装置及相关设备 |
CN116010997A (zh) * | 2023-03-20 | 2023-04-25 | 中国信息通信研究院 | 基于区块链的连续性校验的数据资源托管方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
HK1176437A1 (zh) | 2013-07-26 |
CN102929878B (zh) | 2016-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102929878A (zh) | 一种数据库变更管理方法及装置 | |
US11893022B2 (en) | Computer-implemented method for improving query execution in relational databases normalized at level 4 and above | |
US11341139B2 (en) | Incremental and collocated redistribution for expansion of online shared nothing database | |
US9390115B2 (en) | Tables with unlimited number of sparse columns and techniques for an efficient implementation | |
She et al. | BigDAWG polystore query optimization through semantic equivalences | |
US7945562B2 (en) | Join predicate push-down optimizations | |
Stanescu et al. | Automatic mapping of MySQL databases to NoSQL MongoDB | |
US20110302151A1 (en) | Query Execution Systems and Methods | |
US20140095469A1 (en) | Optimization of database query | |
US10726010B2 (en) | Optimization technique of generalized disjunctive semi/anti join | |
US6836770B2 (en) | Method for transforming SQL queries | |
US20160232207A1 (en) | Hierarchy modeling and query | |
KR101862779B1 (ko) | 컬럼 수준 비정규화를 이용한 데이터 마이그레이션 장치 및 방법 | |
EP2819030A1 (en) | Database hierarchy-independent data drilling | |
US7925665B2 (en) | Using query persistence for efficient subquery evaluation in federated databases | |
Ding et al. | Sagedb: An instance-optimized data analytics system | |
Sreemathy et al. | Data validation in ETL using TALEND | |
CN112347108A (zh) | 适用于混合后端的数据查询方法和系统 | |
US20030140028A1 (en) | Adjustable database runtime kernel | |
Kaur et al. | PostgreSQL Development Essentials | |
Saveliev | Implementation of generalized relational algebraic operations with AsterixDB BDMS | |
CN113779955B (zh) | 一种差异脚本的生成方法、装置和存储介质 | |
US11977582B2 (en) | Global index with repartitioning operator | |
Klassen et al. | Automatic Translator of Sql-Query to Regular Plan for Clusterix-Like Dbms | |
Pavkovic et al. | A UML-based approach to forward engineering of SQLite database |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1176437 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1176437 Country of ref document: HK |