一种数据库变更管理方法及装置的制作方法

文档序号:6430281阅读:121来源:国知局
专利名称:一种数据库变更管理方法及装置的制作方法
技术领域
本申请涉及数据库技术,特别是涉及一种数据库变更管理方法及装置。
背景技术
在软件研发过程中,数据库的变更管理非常重要。参照图1,是现有技术中的研发流程示意图。整个研发流程基本分为开发、测试和上线三个阶段,每个阶段都会涉及数据库的操作与管理,具体如下在开发阶段,首先根据《系统设计文档》整理DDL (Data Description Language,数据定义语言)和DML(Data Manipulation Language,数据操作语言)语句,并由人工记录DDL和DML语句,然后在开发库中执行所述DDL和DML语句。执行完毕后,判断数据库设计 是否调整,如果进行了调整,则修改《系统设计文档》,然后返回去重新根据修改后的《系统设计文档》整理DDL和DML语句,并继续执行后续步骤;如果未调整,则进入测试阶段。在测试阶段,首先取出人工记录的DDL和DML语句,然后在测试库中执行所述DDL和DML语句;执行完毕后,判断数据库设计是否调整,如果进行了调整,则修改《系统设计文档》,再返回重新根据修改后的《系统设计文档》整理DDL和DML语句,并由人工记录DDL和DML语句,然后再次进入测试阶段取出人工记录的DDL和DML语句执行;如果未调整,则进入上线阶段。在上线阶段,首先将《系统设计文档》与开发(或测试)库进行人工比对,整理出DDL和DML语句,然后在线上库中执行所述DDL和DML语句,最后完成上线工作。从上述图I可以看出,在开发、测试和上线的各个阶段,每次调整数据库设计都需要变更数据库,而每次变更数据库都需要根据《系统设计文档》和开发(或测试)数据库人工整理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语句的自动生成,避免研发过程中的数据库变更在最后上线发布环节中遗漏,有效提高发布过程的效率和质量。


图I是现有技术中的研发流程示意图2是本申请实施例所述一种数据库变更管理方法的流程图;图3是本申请实施例所示的一种系统架构图;图4是本申请另一实施例所述的研发流程示意图;图5是本申请实施例中项目开发前快照数据初始化的时序图;图6是本申请实施例中的快照比对时序图;图7是本申请实施例中DDL、DML语句的生成时序图;图8是本申请实施例所述一种数据库变更管理装置的结构图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本申请作进一步详细的说明。本申请通过数据库快照的方式实现对数据库变更的管理。本申请首先保存了数据库数据的快照,并实现了快照数据的管理;然后在开发(或测试)阶段完成数据库设计的调整后,根据快照与开发(或测试)库数据的比对,计算找出二者间的差异;再根据这些差异,自动生成DDL、DML语句。 下面通过实施例对本申请的内容进行详细说明。参照图2,是本申请实施例所述一种数据库变更管理方法的流程图。步骤201,对数据库中的原始数据进行快照得到快照数据;数据库中的原始数据是指数据库未变更之前的数据。本申请实施例中,可以对数据库中的元数据(metadata)和应用初始化配置数据进行快照并保存,得到对元数据(metadata)和应用初始化配置数据的静态描述。其中,所述元数据在这里特指在数据库管理系统中对数据库对象(表、字段、视图、存储过程等)的描述。在数据库中,通过查询元数据可以获取数据对象的详细信息,比如表名、表描述、字段名、字段类型、字段长度、字段描述等。对数据库变更之前的元数据(metadata)和应用初始化配置数据进行快照之后,若数据库发生变更,则在需要的时候可以执行步骤202至204。若数据库发生多次变更,则在每次变更后需要的时候循环执行以下步骤步骤202,对数据库变更后的数据进行快照得到最新快照数据;当数据库设计进行了调整使得数据库数据发生了变更,此时可以对变更后的元数据(metadata)和应用初始化配置数据进行快照,得到最新的快照数据。步骤203,将所述最新快照数据与上一次的快照数据进行比对得到比对结果,如果比对结果不一致,则用所述最新快照数据替换上一次的快照数据进行保存;其中,所述比对是指通过计算找出数据间的差异。如果是第一次变更,则所述上一次的快照数据是指对原始数据进行快照得到快照数据,即将第一次变更后的快照数据与原始数据的快照进行比对;如果是第二次变更,则所述上一次的快照数据就是指第一次比对后最终保存的快照数据,即将第二次变更后的快照数据与第一次比对后最终保存的快照进行比对;依此类推,第N次变更后,所述上一次的快照数据是指第N-I次比对后最终保存的快照数据,即将第N次变更后的快照数据与第N-I次比对后最终保存的快照进行比对。
每次比对之后,如果二者存在差异,即不一致,则在人工确认的情况下,会用最新快照数据覆盖掉上一次的快照数据进行保存,以便用于下一次的快照比对。而且,每次的比对结果还会记录两次快照数据的这种差异。在实际应用中,也存在多次比对之后才经人工确认,用最新快照数据覆盖掉上一次保存的快照数据的情况。当然,在某些应用情况下,即使数据库未发生变更,也可以对数据库进行快照,然后将当前得到的快照数据与上一次的快照数据进行比对,此时比对结果即为一致,则仍保留上一次的快照数据。具体的比对过程主要包括将最新快照数据中的元数据(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,是本申请实施例所示的一种系统架构图。所述系统主要包括数据快照-数据库,数据快照-服务器,开发库I和开发库2,技术人员客户端。在所述系统中,数据快照-服务器用于根据技术人员客户端发送的指令对开发库I或开发库2中的数据进行快照,然后将快照数据保存到数据快照-数据库中。上述图2和图3所示实施例的内容可以应用到多次迭代研发流程中。第一次迭代的时候是开发库和空的快照(不存在快照)比对,后面的所有迭代都是和上一次迭代的快照做比对。例如,有一个新项目,第一次迭代开发的时候,数据快照-数据库里是没有数据的,然后第一次迭代上线之后,会有一次数据快照-数据库迭代版本确认的操作,这个确认操作会记录上一个迭代快照的历史信息,并重新生成快照;然后在第二次迭代的时候,开发库的快照都是和上一次迭代的快照做比对了。为了与现有技术中图I所示的研发流程进行对比,下面通过图4所示使用本申请内容的研发流程进行对比说明。参照图4,是本申请另一实施例所述的研发流程示意图。整个研发流程同样分为开发、测试和上线三个阶段。
首先在项目开发之前,按照图5所示流程使用快照比对工具对数据库中的原始数据进行快照,即从数据库读取原始数据并创建快照,将快照数据保存到快照数据库。参照图5,是本申请实施例中项目开发前快照数据初始化的时序图。I.技术人员通过操作客户端向快照比对工具发送数据初始化命令;2.快照比对工具从开发数据库中读取开发数据库结构数据;其中,所述开发数据库结构数据包括上述的元数据(metadata)和应用初始化配置数据;3.快照比对工具将开发数据库结构数据保存到快照数据库;4.快照比对工具向技术人员客户端返回命令执行结果。初始化结束后,进入开发阶段。在开发阶段,仍需人工完成的工作主要包括根据《系统设计文档》整理DDL、DML语句,在开发库中执行所述DDL和DML语句,执行完毕后,判断数据库设计是否调整,如果进行了调整,则直接在开发库中变更表结构或做数据记录的增、删、改操作即可,然后重新在开发库中执行所述DDL和DML语句,同时可线下修改所述《系统设计文档》,如果未调整,则进入测试阶段。其中,根据《系统设计文档》整理DDL、DML语句主要包括以下工作在数据库设计文档中,对数据库表结构的描述一般是二维表格的形式,即不是可以直接在数据库中执行的DDL、DML语句。其中包含数据库表名、数据库字段描述列表,字段描述列表中包含字段名、字段类型、字段长度、字段含义、字段备注说明。人工整理DDL、DML语句分为如下几种情况创建新的数据库表;修改数据库表结构(修改字段类型、字段长度、字段含义、字段备注说明);插入数据库表记录;修改数据库表记录;删除数据库表记录;创建数据库索引;修改数据库索引;删除数据库索引;
创建数据库序列(Oracle);修改数据库序列(Oracle);删除数据库序列(Oracle)。例如创建新的数据库表的情况,在设计文档中描述如下数据库表名tc_taocode
权利要求
1.一种数据库变更管理方法,其特征在于,包括对数据库中的原始数据进行快照得到快照数据;对数据库变更后的数据进行快照得到最新快照数据;将所述最新快照数据与上一次的快照数据进行比对得到比对结果,如果比对结果不一致,则用所述最新快照数据替换上一次的快照数据进行保存;依据所述比对结果自动生成数据库语句。
2.根据权利要求I所述的方法,其特征在于,所述对数据库中的原始数据进行快照得到快照数据,包括从数据库读取原始数据并创建快照;将快照数据保存到快照数据库。
3.根据权利要求I所述的方法,其特征在于,将所述最新快照数据与上一次的快照数据进行比对得到比对结果,包括将最新快照数据中的元数据与上一次快照数据中的元数据进行比对,得到元数据比对结果;将最新快照数据中的应用初始化配置数据与上一次快照数据中的应用初始化配置数据进行比对,得到应用初始化配置数据比对结果。
4.根据权利要求3所述的方法,其特征在于所述数据库语句包括DDL数据定义语句和DML数据操作语句。
5.根据权利要求4所述的方法,其特征在于依据所述元数据比对结果自动生成DDL数据定义语句;依据所述应用初始化配置数据比对结果自动生成DML数据操作语句。
6.一种数据库变更管理装置,其特征在于,包括数据快照模块,用于对数据库中的原始数据进行快照得到快照数据,并用于对数据库变更后的数据进行快照得到最新快照数据,并输出快照数据给所述快照比对模块;快照比对模块,用于将所述最新快照数据与所述数据快照库中上一次的快照数据进行比对得到比对结果,如果比对结果不一致,则用所述最新快照数据替换上一次的快照数据保存到所述数据快照库中;语句生成模块,用于依据所述比对结果自动生成数据库语句。
7.根据权利要求6所述的装置,其特征在于,所述快照比对模块包括元数据比对子模块,用于将最新快照数据中的元数据与上一次快照数据中的元数据进行比对,得到元数据比对结果;配置数据比对子模块,用于将最新快照数据中的应用初始化配置数据与上一次快照数据中的应用初始化配置数据进行比对,得到应用初始化配置数据比对结果。
8.根据权利要求7所述的装置,其特征在于所述数据库语句包括DDL数据定义语句和DML数据操作语句。
9.根据权利要求8所述的装置,其特征在于,所述语句生成模块包括DDL语句生成子模块,用于依据所述元数据比对结果自动生成DDL数据定义语句;DML语句生成子模块,用于依据所述应用初始化配置数据比对结果自动生成DML数据操作语句。
全文摘要
本申请提供了一种数据库变更管理方法及装置,以解决人工管理存在的问题。所述方法包括对数据库中的原始数据进行快照得到快照数据;对数据库变更后的数据进行快照得到最新快照数据;将所述最新快照数据与上一次的快照数据进行比对得到比对结果,如果比对结果不一致,则用所述最新快照数据替换上一次的快照数据进行保存;依据所述比对结果自动生成数据库语句。本申请可以更高效、准确地完成数据库DDL、DML语句的自动生成,避免研发过程中的数据库变更在最后上线发布环节中遗漏,有效提高发布过程的效率和质量。
文档编号G06F17/30GK102929878SQ20111022709
公开日2013年2月13日 申请日期2011年8月9日 优先权日2011年8月9日
发明者殷诗章 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1