CN103294724B - 一种数据库结构的管理方法及系统 - Google Patents
一种数据库结构的管理方法及系统 Download PDFInfo
- Publication number
- CN103294724B CN103294724B CN201210054225.6A CN201210054225A CN103294724B CN 103294724 B CN103294724 B CN 103294724B CN 201210054225 A CN201210054225 A CN 201210054225A CN 103294724 B CN103294724 B CN 103294724B
- Authority
- CN
- China
- Prior art keywords
- database
- database structure
- file
- difference
- sql
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据库结构的管理方法,包括:获取第一数据库结构和第二数据库结构;将所述第二数据库结构与所述第一数据库结构进行对比,获得差异;将所述差异生成结构差异文件;基于所述第二数据库结构与所述结构差异文件,获得所述第一数据库结构。本发明还提供一种用于该方法的系统。本发明能够实现数据库结构的跨库自动同步,易于进行数据库版本控制。
Description
技术领域
本发明涉及数据库管理领域,具体地说涉及一种数据库结构的管理方法及系统。
背景技术
数据库(DataBase,DB)是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。它是一个按数据结构来存储和管理数据的计算机软件系统。随着数据库技术的发展,数据库被广泛应用于各行各业,数据库中通常建立多个不同类型的表,通过各个表来记载不同的数据。随着信息技术的发展,数据量呈急速上升趋势。因此对数据库进行管理至关重要。
目前,对于数据库中的数据管理的技术已经相对成熟,有多种方法对数据进行管理。通过版本控制,可以方便地对数据进行查询、管理、回滚、恢复等操作。在数据库结构管理方面,由于在传统的技术中,数据库结构通常不会进行大量、快速改变,因此对于数据库结构的管理并没有得到研究人员的高度重视。随着互联网的快速发展,数据库结构的管理变得越来越重要。目前常用的数据库同步技术通常是基于同一类的数据库进行同步的,跨库同步很困难,而常用的数据库软件有多种,如果不能实现跨库同步,会直接影响到同步效果。
因此需要一种对于数据库结构的管理方法,能够实现自动灵活地数据库结构的跨库同步。
发明内容
本发明提供一种数据库结构的管理方法,用于实现数据库结构的跨库自动同步,易于进行数据库版本控制。
根据本发明的一个方面,提供一种数据库结构的管理方法,其中,包括以下步骤:
a)获取第一数据库结构和第二数据库结构;
b)将所述第二数据库结构与所述第一数据库结构进行对比,获得差异;
c)将所述差异生成结构差异文件;
d)基于所述第二数据库结构与所述结构差异文件,获得所述第一数据库结构。
根据本发明的另一个方面,提供一种用于数据库结构的管理系统,其中,包括:
获取装置,用于获取第一数据库结构和第二数据库结构;
对比装置,用于将所述第二数据库结构与所述第一数据库结构进行对比,获得差异;
生成装置,用于将所述差异生成结构差异文件;
运行装置,用于基于所述第二数据库结构与所述结构差异文件,获得所述第一数据库结构。
本发明提供的一种数据库结构的管理方法及其系统,首先,获取两个不同版本的数据库结构,并进行对比,找到两者在结构上的差异;之后将所有差异集合起来生成一个结构差异文件,这个结构差异文件优选用sql文件;由于sql语句可以通用于各种数据库软件,因此当需要在两个数据库版本中进行回滚时,可以将另一个数据库于sql文件同时运行,进而实现数据库结构的自动跨库同步。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为根据本发明的一种数据库结构的管理方法的一种具体实施方式的流程示意图;
图2为根据本发明的一种用于数据库结构的管理系统的一种具体实施方式的结构示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施例作详细描述。
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本发明。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
如图1所示,图1为根据本发明提供的一种数据库结构的管理方法的一个具体实施方式的流程示意图,包括步骤S101~S104,下面结合具体的实施例对图1所示的方法进行说明。
步骤S101,获取第一数据库结构和第二数据库结构,所述第二数据库结构可以为所述第一数据库结构的升级版本也可以是任意时间长度周期的两个时间点上的两个版本,甚至可以是不同的两个程序的数据库。首先使用数据库dump工具获取两份数据库结构,分别为第一数据库结构和与所述第一数据库结构比较的第二数据库结构。所述数据库包括但不限于:mysql、oracle、FoxPro、DB2、access或sqlserver。所获得的数据库结构例如为A.sql、B.sql文件,该文件本质上来说是一个文本文件。
获取两个数据库结构之后,继续执行步骤S102,将所述第二数据库结构与所述第一数据库结构进行对比,获得差异(Diff)。通过比较两个*.sql文件之间的差别可以获得描述每行语句变化的数据库结构差异文件。
可以使用现有技术中常用的差异技术获得两个数据库结构之间的差异,优选采用awk技术(awk是一种用于处理文本的编程语言工具。)来解析两个数据库结构之间的差异和变化。
假设第二数据库为线上数据库,第一数据库为比较数据库,即第二数据库和第一数据库分别表示为A数据库和B数据库时,采用awk技术解析两个数据库结构之间的变化如下:
从上述示例可以看出,所述差异包括:所述第二数据库结构相对于所述第一数据库结构的表结构的增加、删除和/或改变;或者所述第一数据库结构相对于所述第二数据库结构的表结构的增加、删除和/或改变。记录所有的差异,如:记录所有新增表的文件为tableaddedfile,记录所有删除表的文件为tabledeletedfile,记录所有删除行的文件为rowdeletedfile,记录所有增加行的文件为rowaddedfile和/或记录所有行更新的文件为rowupdatedfile。
步骤S103,将所述差异生成结构差异文件。即对上述的各个差异进行合并处理,并记录处理结果,以生成一个结构差异文件。由于sql语句可以适用于各种数据库结构,因此,为了满足跨库同步的目的,优选的结构差异文件为sql文件。
下面结合算法来举例说明如何对差异进行处理,另,下述线上数据库为第二数据库,线下数据库为第一数据库。
第一步,处理tableaddedfile
读出tableaddedfile的一行,得到一个数据库的表的名字,从线上数据库文件夹里得到创建这个表的sql语句,将其以这种形式输出到mergefile里,<tr><tdclass=\”change\”>增加表</td><td class=\”onlinecolumn\”>创建表所用的sql语句</td><tdclass=\”offlinecolumn\”></td></tr>,将创建表用的sql语句放入同步数据库表结构至线上数据库表结构的sql文件里。
第二步,处理tabledeletedfile
读出tabledeletedfile的一行,得到一个数据库的表的名字,从线下数据库文件夹里得到创建这个表的sql语句,将”drop table if exsits`$tablename`”的sql语句放入同步数据库表结构至线上数据库表结构的sql文件里。
第三步,处理rowdeletedfile
读出rowdeletedfile的一行,rowdeletedfile里一行的格式如下
tablename|offline_table_deleted_startline_no|
offline_table_deleted_end_line_no
用awk解析得到数据库表的名字,变化的行号,从线上数据库文件夹和线下数据库文件夹里得到创建这个表的sql语句,将其以这种形式输出到mergefile里,<tr><td class=\”change\”>删除行<br>删除的行</td><td class=\”onlinecolumn\”>线上数据库创建表所用的sql语句</td><td class=\”offlinecolumn\”>线下数据库创建表所用的sql语句</td></tr>,根据删除的row的类型,创建相应的sql语句放入同步数据库表结构至线上数据库表结构的sql文件里,如果row是`列名`...,则用alter table drop COLUMN $columnname
第四步,处理rowaddedfile
读出rowaddedfile的一行,rowaddedfile里一行的格式如下
tablename|online_table_add_startline_no|online_table_add_end_line_no
用awk解析得到数据库表的名字,变化的行号,从线上数据库文件夹和线下数据库文件夹里得到创建这个表的sql语句,将其以这种形式输出到mergefile里,<tr><td class=\”change\”>增加行<br>增加的行</td><td class=\”onlinecolumn\”>线上数据库创建表所用的sql语句</td><td class=\”offlinecolumn\”>线下数据库创建表所用的sql语句</td></tr>,根据增加的row的类型,创建相应的sql语句放入同步数据库表结构至线上数据库表结构的sql文件里,如果row是`列名`...,则用alter table add Column(变化的行)after $columnname
第五步,处理rowupdatedfile
读出rowupdatedfile的一行,rowupdatedfile里一行的格式如下
tablename|online_table_startline_no|
online_table_end_line_no|
offline_table_startline_no|offline_table_end_line_no
用awk解析得到数据库表的名字,变化的行号,从线上数据库文件夹和线下数据库文件夹里得到创建这个表的sql语句,将其以这种形式输出到mergefile里,<tr><td class=\”change\”>行变化<br>变化的行</td><td class=\”onlinecolumn\”>线上数据库创建表所用的sql语句</td><td class=\”offlinecolumn\”>线下数据库创建表所用的sql语句</td></tr>,根据增加的row的类型,创建相应的sql语句放入同步数据库表结构至线上数据库表结构的sql文件里,可看sql变化处理一节sql。
进一步地,对列变化和行变化进行处理。
如果新增列,生成的Sql语句为alter table add Column(变化的行)after $columnname。
如果删除列,生成的sql语句为alter table delete COLUMN column。
如果是列的某些属性变化,则用ALTER TABLE $tablename CHANGE COLUMN旧列的名字新列的内容。
如果新列和旧列只是大小写的变化,则认为这是列的属性变化。
由于sql语句主要是一行一行撰写,所以主要考虑每行的变化。
首先,生成主键、引擎、字段、表和/或库变化的同步Sql语句。
主键行以PRIMARY KEY开头
将现在的primary key和新的primary key进行比较,如果只是列名大小写的变化,则不作处理(因为列名大小写变化会在更改列的时候处理好,并且相应的主键的名字也会随着变化),而如果是主键里添加了新列,或者列名完全变了,则认为主键须重新改变。
删掉主键的sql语句是alter table表名drop primay key;
增加主键的sql语句是alter table user add primary key(列名)。
索引变化,索引行以KEY开头
找到索引后,再在变化的行里相同的索引名字,如果存在则比较其索引的列名(可能有多列),忽略大小写比较,如果一样,则不做变化,如果不一样则丢弃先前的索引,建立新的索引,并记录被处理过的索引名字,再遍历新的索引列表,如果该索引没有被处理过则添加该索引。
创建索引:create index索引名字on表名(列名集合);
删除索引:alter table表名drop index列名。
外键变化,foreign key约束像这样,constraint`外键约束名`FOREIGN KEY(`列名`)REFRENCES.....,以约束名去新数据库表里找对应的foregin约束,如果不存在,则将该foregin约束丢弃,如果存在,但是不同,则将旧的丢弃,添加为新的。
删除外键:alter table user drop foreign key user_ibfk_1;
添加外键:alter table user add CONSTRAINT`user_ibfk_1`FOREIGN KEY(`teacherid`)REFERENCES`teacher`(`id`)ON DELETE CASCADE ON UPDATE NO ACTION。
之后,合并所述Sql语句生成所述结构差异文件。除了有上述的差异变化,所述结构差异文件还要包括生成该结构差异文件的至少两个数据库结构的版本号以及生成时间,以便后续调用。
步骤S104,基于所述第二数据库结构与所述结构差异文件,获得所述第一数据库结构。如果将第一数据库结构标记为数据库DB 1.0,第二数据库结构标记为DB 2.0,所述结构差异文件为SQL 1-2。那么当需要从DB 2.0回滚到DB1.0时,只需同时运行DB 2.0和SQL1-2。同理,当需要从DB 1.0变化为DB 1.0时,需同时运行DB 1.0和SQL 1-2。
另外,当所述第二数据库结构为所述第一数据库结构的升级版本,并且所述第一数据库结构升级到所述第二数据库结构的过程中经历至少一个其他版本的数据库结构时,获得相邻版本的数据库结构之间的差异以及对应的至少一个所述结构差异文件,基于至少一个所述结构差异文件以及至少一个版本的数据库结构获得其他版本的数据库结构。
例如,第一数据库结构DB 1.0和第二数据库结构DB 2.0之间存在第三数据库结构DB 1.5,第一数据库结构DB 1.0和第二数据库结构DB 2.0之间的结构差异文件为SQL 1-2,第二数据库结构DB 2.0和第三数据库结构DB 1.5之间的结构差异文件为SQL 2-3,第一数据库结构DB 1.0和第三数据库结构DB 1.5之间的结构差异文件为SQL 1-3。当需要从第三数据库结构DB 1.5变化为第一数据库结构DB 1.0时,可以同时运行DB 1.5和SQL 1-3,也可以同时运行DB 1.5、SQL 2-3、DB 2.0和SQL 1-2。
参考图2,图2示出根据本发明一种用于数据库结构的管理系统20的一种具体实施方式的结构示意图。系统20包括:获取装置21、对比装置22、生成装置23和运行装置24。
获取装置21,用于获取第一数据库结构和第二数据库结构,所述第二数据库结构为所述第一数据库结构的升级版本也可以是任意时间长度周期的两个时间点上的两个版本,甚至可以是不同的两个程序的数据库。首先使用数据库dump工具获取两份数据库结构,分别为第一数据库结构和所述第一数据库结构的升级版本第二数据库结构。所述数据库包括但不限于:mysql、oracle、FoxPro、DB2、access或sqlserver。所获得的数据库结构例如为A.sql、B.sql文件,该文件本质上来说是一个文本文件。
获取两个数据库结构之后,使用对比装置22将所述第二数据库结构与所述第一数据库结构进行对比,获得差异(Diff)。
对比装置22通常采用现有技术中常用的差异技术获得两个数据库结构之间的差异,优选采用awk技术(awk是一种用于处理文本的编程语言工具。)来解析两个数据库结构之间的差异和变化。
所述差异包括:所述第二数据库结构相对于所述第一数据库结构的表结构的增加、删除和/或改变;或者所述第一数据库相对于所述第二数据库结构的表结构的增加、删除和/或改变。记录所有的差异,如:记录所有新增表的文件为tableaddedfile,记录所有删除表的文件为tabledeletedfile,记录所有删除行的文件为rowdeletedfile,记录所有增加行的文件为rowaddedfile和/或记录所有行更新的文件为rowupdatedfile。
生成装置23,用于将所述差异生成结构差异文件。即对上述的各个差异进行合并处理,并记录处理结果,以生成一个结构差异文件。由于sql语句可以适用于各种数据库结构,因此,为了满足跨库同步的目的,优选的结构差异文件为sql文件。
下面结合算法来举例说明如何对差异进行处理,另,下述线上数据库为第二数据库,线下数据库为第一数据库。
第一步,处理tableaddedfile
读出tableaddedfile的一行,得到一个数据库的表的名字,从线上数据库文件夹里得到创建这个表的sql语句,将其以这种形式输出到mergefile里,<tr><tdclass=\”change\”>增加表</td><td class=\”onlinecolumn\”>创建表所用的sql语句</td><tdclass=\”offlinecolumn\”></td></tr>,将创建表用的sql语句放入同步数据库表结构至线上数据库表结构的sql文件里。
第二步,处理tabledeletedfile
读出tabledeletedfile的一行,得到一个数据库的表的名字,从线下数据库文件夹里得到创建这个表的sql语句,将”drop table if exsits`$tablename`”的sql语句放入同步数据库表结构至线上数据库表结构的sql文件里。
第三步,处理rowdeletedfile
读出rowdeletedfile的一行,rowdeletedfile里一行的格式如下
tablename|offline_table_deleted_startline_no|
offline_table_deleted_end_line_no
用awk解析得到数据库表的名字,变化的行号,从线上数据库文件夹和线下数据库文件夹里得到创建这个表的sql语句,将其以这种形式输出到mergefile里,<tr><td class=\”change\”>删除行<br>删除的行</td><td class=\”onlinecolumn\”>线上数据库创建表所用的sql语句</td><td class=\”offlinecolumn\”>线下数据库创建表所用的sql语句</td></tr>,根据删除的row的类型,创建相应的sql语句放入同步数据库表结构至线上数据库表结构的sql文件里,如果row是`列名`...,则用alter table drop COLUMN $columnname
第四步,处理rowaddedfile
读出rowaddedfile的一行,rowaddedfile里一行的格式如下
tablename|online_table_add_startline_no|online_table_add_end_line_no
用awk解析得到数据库表的名字,变化的行号,从线上数据库文件夹和线下数据库文件夹里得到创建这个表的sql语句,将其以这种形式输出到mergefile里,<tr><td class=\”change\”>增加行<br>增加的行</td><td class=\”onlinecolumn\”>线上数据库创建表所用的sql语句</td><td class=\”offlinecolumn\”>线下数据库创建表所用的sql语句</td></tr>,根据增加的row的类型,创建相应的sql语句放入同步数据库表结构至线上数据库表结构的sql文件里,如果row是`列名`...,则用alter table add Column(变化的行)after $columnname
第五步,处理rowupdatedfile
读出rowupdatedfile的一行,rowupdatedfile里一行的格式如下
tablename|online_table_startline_no|
online_table_end_line_no|
offline_table_startline_no|offline_table_end_line_no
用awk解析得到数据库表的名字,变化的行号,从线上数据库文件夹和线下数据库文件夹里得到创建这个表的sql语句,将其以这种形式输出到mergefile里,<tr><td class=\”change\”>行变化<br>变化的行</td><td class=\”onlinecolumn\”>线上数据库创建表所用的sql语句</td><td class=\”offlinecolumn\”>线下数据库创建表所用的sql语句</td></tr>,根据增加的row的类型,创建相应的sql语句放入同步数据库表结构至线上数据库表结构的sql文件里,可看sql变化处理一节sql。
进一步地,所述生成装置23用于对列变化和行变化进行处理。
如果新增列,生成的Sql语句为alter table add Column(变化的行)after $columnname。
如果删除列,生成的sql语句为alter table delete COLUMN column。
如果是列的某些属性变化,则用ALTER TABLE $tablename CHANGE COLUMN旧列的名字新列的内容。
如果新列和旧列只是大小写的变化,则认为这是列的属性变化。
由于sql语句主要是一行一行撰写,所以主要考虑行变化。
首先,生成主键、引擎、字段、表和/或库变化的同步Sql语句。
主键行以PRIMARY KEY开头
将现在的primary key和新的primary key进行比较,如果只是列名大小写的变化,则不作处理(因为列名大小写变化会在更改列的时候处理好,并且相应的主键的名字也会随着变化),而如果是主键里添加了新列,或者列名完全变了,则认为主键须重新改变。
删掉主键的sql语句是alter table表名drop primay key;
增加主键的sql语句是alter table user add primary key(列名)。
索引变化,索引行以KEY开头
找到索引后,再在变化的行里相同的索引名字,如果存在则比较其索引的列名(可能有多列),忽略大小写比较,如果一样,则不做变化,如果不一样则丢弃先前的索引,建立新的索引,并记录被处理过的索引名字,再遍历新的索引列表,如果该索引没有被处理过则添加该索引。
创建索引:create index索引名字on表名(列名集合);
删除索引:alter table表名drop index列名。
外键变化,foreign key约束像这样,constraint`外键约束名`FOREIGN KEY(`列名`)REFRENCES.....,以约束名去新数据库表里找对应的foregin约束,如果不存在,则将该foregin约束丢弃,如果存在,但是不同,则将旧的丢弃,添加为新的。
删除外键:alter table user drop foreign key user_ibfk_1;
添加外键:alter table user add CONSTRAINT`user_ibfk_1`FOREIGN KEY(`teacherid`)REFERENCES`teacher`(`id`)ON DELETE CASCADE ON UPDATE NO ACTION。
之后,合并所述Sql语句生成所述结构差异文件。除了有上述的差异变化,所述结构差异文件还要包括生成该结构差异文件的至少两个数据库结构的版本号以及生成时间,以便后续调用。
运行装置24,用于基于所述第二数据库结构与所述结构差异文件,获得所述第一数据库结构。如果将第一数据库结构标记为数据库DB 1.0,第二数据库结构标记为DB 2.0,所述结构差异文件为SQL 1-2。那么当需要从DB 2.0回滚到DB 1.0时,只需同时运行DB 2.0和SQL 1-2。同理,当需要从DB 1.0变化为DB 1.0时,需同时运行DB 1.0和SQL 1-2。
另外,当所述第一数据库结构升级到所述第二数据库结构的过程中经历至少一个其他版本的数据库结构时,获得相邻版本的数据库结构之间的差异以及对应的至少一个所述结构差异文件,基于至少一个所述结构差异文件以及至少一个版本的数据库结构获得其他版本的数据库结构。
例如,第一数据库结构DB 1.0和第二数据库结构DB 2.0之间存在第三数据库结构DB 1.5,第一数据库结构DB 1.0和第二数据库结构DB 2.0之间的结构差异文件为SQL 1-2,第二数据库结构DB 2.0和第三数据库结构DB 1.5之间的结构差异文件为SQL 2-3,第一数据库结构DB 1.0和第三数据库结构DB 1.5之间的结构差异文件为SQL 1-3。当需要从第三数据库结构DB 1.5变化为第一数据库结构DB 1.0时,运行装置24可以同时运行DB 1.5和SQL 1-3,也可以同时运行DB 1.5、SQL 2-3、DB 2.0和SQL 1-2。
采用本发明的方法,可以进行数据库结构的版本管理,实现自动高效地数据库结构的跨库同步。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他模块或步骤。
Claims (12)
1.一种数据库结构的管理方法,其中,包括以下步骤:
a)获取第一数据库结构和第二数据库结构,其中所述第一数据库结构和所述第二数据库结构为不同类的数据库;
b)将所述第二数据库结构与所述第一数据库结构进行对比,获得差异,其中,所述差异包括两个数据库结构文件之间每行语句的变化;
c)将所述差异生成结构差异文件,其中,所述结构差异文件为SQL文件;
d)基于所述第二数据库结构与所述结构差异文件,获得所述第一数据库结构,实现数据库结构的跨库同步;
其中,当所述第二数据库结构为所述第一数据库结构的升级版本并且所述第一数据库结构升级到所述第二数据库结构的过程中经历至少一个其他版本的数据库结构时,获得相邻版本的数据库结构之间的差异以及对应的至少一个所述结构差异文件,基于至少一个所述结构差异文件以及至少一个版本的数据库结构获得其他版本的数据库结构。
2.根据权利要求1所述的方法,其中,该方法还包括以下步骤:
基于所述第一数据库结构与所述结构差异文件,获得所述第二数据库结构。
3.根据权利要求1所述的方法,其中,所述差异包括:所述第二数据库结构相对于所述第一数据库结构的表结构的增加、删除和/或改变;或者所述第一数据库相对于所述第二数据库结构的表结构的增加、删除和/或改变。
4.根据权利要求1所述的方法,其中,所述步骤c)进一步包括:
对所述差异进行处理,生成主键、索引、字段、表和/或库变化的同步Sql语句;
合并所述Sql语句生成所述结构差异文件。
5.根据权利要求1~4任意一项所述的方法,其中,所述数据库包括:mysql、oracle、FoxPro、DB2、access或sqlserver。
6.根据权利要求1~4任意一项所述的方法,其中所述结构差异文件包括生成该结构差异文件的至少两个数据库结构的版本号以及生成时间。
7.一种用于数据库结构的管理系统,其中,包括:
获取装置,用于获取第一数据库结构和第二数据库结构,其中所述第一数据库结构和所述第二数据库结构为不同类的数据库;
对比装置,用于将所述第二数据库结构与所述第一数据库结构进行对比,获得差异,其中,所述差异包括两个数据库结构文件之间每行语句的变化;
生成装置,用于将所述差异生成结构差异文件,其中,所述结构差异文件为SQL文件;
运行装置,用于基于所述第二数据库结构与所述结构差异文件,获得所述第一数据库结构,实现数据库结构的跨库同步;
其中,当所述第二数据库结构为所述第一数据库结构的升级版本并且所述第一数据库结构升级到所述第二数据库结构的过程中经历至少一个其他版本的数据库结构时,获得相邻版本的数据库结构之间的差异以及对应的至少一个所述结构差异文件,基于至少一个所述结构差异文件以及至少一个版本的数据库结构获得其他版本的数据库结构。
8.根据权利要求7所述的系统,其中,所述运行装置还用于:
基于所述第一数据库结构与所述结构差异文件,获得所述第二数据库结构。
9.根据权利要求7所述的系统,其中,所述差异包括:所述第二数据库结构相对于所述第一数据库结构的表结构的增加、删除和/或改变;或者所述第一数据库相对于所述第二数据库结构的表结构的增加、删除和/或改变。
10.根据权利要求7所述的系统,其中,所述生成装置进一步用于:
对所述差异进行处理,生成主键、索引、字段、表和/或库变化的同步Sql语句;
合并所述Sql语句生成所述结构差异文件。
11.根据权利要求7~10任意一项所述的系统,其中,所述数据库包括:mysql、oracle、FoxPro、DB2、access或sqlserver。
12.根据权利要求7~10任意一项所述的系统,其中所述结构差异文件包括生成该结构差异文件的至少两个数据库结构的版本号以及生成时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210054225.6A CN103294724B (zh) | 2012-03-05 | 2012-03-05 | 一种数据库结构的管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210054225.6A CN103294724B (zh) | 2012-03-05 | 2012-03-05 | 一种数据库结构的管理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103294724A CN103294724A (zh) | 2013-09-11 |
CN103294724B true CN103294724B (zh) | 2018-11-23 |
Family
ID=49095610
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210054225.6A Active CN103294724B (zh) | 2012-03-05 | 2012-03-05 | 一种数据库结构的管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103294724B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544303B (zh) * | 2013-10-31 | 2017-06-20 | 北京锐安科技有限公司 | 一种数据同步方法、系统和设备 |
CN104933065A (zh) * | 2014-03-19 | 2015-09-23 | 北京畅游天下网络技术有限公司 | 一种合服的方法和装置 |
US10521417B2 (en) | 2014-06-24 | 2019-12-31 | Google Llc | Processing mutations for a remote database |
CN104133674B (zh) * | 2014-07-11 | 2017-07-11 | 国家电网公司 | 一种异构系统及异构系统的模型同步方法 |
CN104216948B (zh) * | 2014-08-12 | 2017-12-05 | 上海新炬网络技术有限公司 | 一种数据模型的差异控制方法 |
CN104965735B (zh) * | 2015-06-18 | 2018-10-19 | 北京京东尚科信息技术有限公司 | 用于生成升级sql脚本的装置 |
CN106484739A (zh) * | 2015-09-01 | 2017-03-08 | 中兴通讯股份有限公司 | 数据库的结构比较方法和装置 |
CN106503019A (zh) * | 2015-09-08 | 2017-03-15 | 中兴通讯股份有限公司 | 一种获取数据库变更信息的方法和装置 |
CN106339500A (zh) * | 2016-09-09 | 2017-01-18 | 浪潮软件股份有限公司 | 一种异地数据库对比工具及方法 |
CN106599167B (zh) * | 2016-12-09 | 2020-11-20 | 苏州浪潮智能科技有限公司 | 一种支持增量升级数据库的系统和方法 |
CN106802817A (zh) * | 2016-12-29 | 2017-06-06 | 杭州迪普科技股份有限公司 | SQLite数据库的升级方法及装置 |
CN107291448A (zh) * | 2017-05-19 | 2017-10-24 | 上海瀚乾信息技术服务有限公司 | 一种软件开发项目管理系统 |
CN108804708B (zh) * | 2018-06-22 | 2023-04-07 | 平安科技(深圳)有限公司 | 业务数据表归档修正方法、装置、计算机设备和存储介质 |
CN109165214A (zh) * | 2018-06-29 | 2019-01-08 | 铜陵市世纪朝阳数码科技有限责任公司 | 一种多点信息数据录入方法 |
CN109918299A (zh) * | 2019-02-27 | 2019-06-21 | 洛阳中科汇成科技有限公司 | 一种对比数据库结构差异的方法 |
CN112817931B (zh) * | 2019-11-18 | 2024-03-29 | 大唐移动通信设备有限公司 | 一种增量版本文件的生成方法及装置 |
CN113778510A (zh) * | 2021-08-17 | 2021-12-10 | 珠海西山居移动游戏科技有限公司 | 应用程序多版本维护方法、装置及可读存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183361A (zh) * | 2006-11-13 | 2008-05-21 | 中兴通讯股份有限公司 | 一种关系数据库应用自动升级的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7610298B2 (en) * | 2006-02-01 | 2009-10-27 | Microsoft Corporation | Difference-based database upgrade |
CN101499069B (zh) * | 2008-02-02 | 2013-06-05 | 中兴通讯股份有限公司 | 内存数据库文件的更新方法及更新装置 |
CN102063491A (zh) * | 2010-12-30 | 2011-05-18 | 浪潮集团山东通用软件有限公司 | 可实现跨不同类型数据库数据备份恢复的数据结构和实现方法 |
-
2012
- 2012-03-05 CN CN201210054225.6A patent/CN103294724B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183361A (zh) * | 2006-11-13 | 2008-05-21 | 中兴通讯股份有限公司 | 一种关系数据库应用自动升级的方法 |
Non-Patent Citations (1)
Title |
---|
异构数据库之间自动同步更新的研究与实现;李杨;《中国优秀硕士学位论文全文数据库 信息科技辑》;20090815(第8期);第24-25页第4.3节、第26页第4.4.1节 * |
Also Published As
Publication number | Publication date |
---|---|
CN103294724A (zh) | 2013-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103294724B (zh) | 一种数据库结构的管理方法及系统 | |
Warren et al. | Big Data: Principles and best practices of scalable realtime data systems | |
US20220342875A1 (en) | Data preparation context navigation | |
US8166449B2 (en) | Live bidirectional synchronizing of a visual and a textual representation | |
CN102508880B (zh) | 一种文件合并方法及分解方法 | |
US20120210298A1 (en) | Locating changes in source code | |
WO2017151194A1 (en) | Atomic updating of graph database index structures | |
US20170212945A1 (en) | Branchable graph databases | |
US9406018B2 (en) | Systems and methods for semantic data integration | |
US9002873B1 (en) | Pipeline query interface | |
US20140188784A1 (en) | Systems and methods for data-warehousing to facilitate advanced business analytic assessment | |
TW201039148A (en) | Maintaining undo and redo capability across metadata merges | |
CN102893281A (zh) | 信息搜索设备、信息搜索方法、计算机程序和数据结构 | |
US8473955B2 (en) | Reducing processing overhead and storage cost by batching task records and converting to audit records | |
US20130275369A1 (en) | Data record collapse and split functionality | |
JP7509704B2 (ja) | 文書整理支援システム及びコンピュータプログラム | |
CN103473324A (zh) | 基于非结构化数据存储的多维业务属性检索装置及方法 | |
US20120192069A1 (en) | Transforming user interface actions to script commands | |
US9454557B2 (en) | Unit of work based incremental data processing | |
US9767222B2 (en) | Information sets for data management | |
EP3635580A1 (en) | Functional equivalence of tuples and edges in graph databases | |
Luther | The entity mapper: A data visualization tool for qualitative research methods | |
US20090049060A1 (en) | Method and Apparatus for Managing Database Records Rejected Due to Referential Constraints | |
Ravichandran | Big Data processing with Hadoop: a review | |
KR101679011B1 (ko) | 데이터베이스에서 데이터 이동을 처리하는 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |