数据库升级的方法及装置与流程

文档序号:11134105阅读:1198来源:国知局
数据库升级的方法及装置与制造工艺

本申请涉及数据通信技术领域,尤其涉及数据库升级的方法及装置。



背景技术:

随着信息技术的发展,充分有效地管理和利用各类数据信息愈来愈重要。因此,数据库在各个方面得到了广泛的应用。同时随着互联网的快速发展,人们愈来愈依赖于各类软件提供的各种服务,为了满足用户的需求,通常需要对软件进行升级,以增加新的功能,或者修复问题等。那么,在升级软件的过程中,将不可避免地对该软件的数据库进行升级。

现有技术中,在升级数据库时,通过对比新、旧数据库,根据对比结果,在旧数据库中创建新数据中增加的数据表;对于新、旧数据库中都存在的数据表,首先在旧数据库中创建一个具有新表名的新数据表,再将旧数据库的该数据表中的数据插入到新数据表中,最后,将旧数据库中的该数据表重命名,并且重命名为原表名;对于仅旧数据库中存在的数据表,则采取忽略方式。

在上述数据库升级过程中,一方面,由于频繁地修改旧数据库,将增加旧数据库损坏的风险,若旧数据库损坏,将导致无法查看数据库配置,从而导致无法更新数据库的配置,导致升级后的数据库无法正常使用;另一方面,当将旧数据表中的数据直接插入到新数据表中时,有可能会引起用户配置丢失,无法准确完成数据库升级;又一方面,由于对仅旧数据库中存在的数据表采取忽略方式,在数据库升级完成后,将导致存在无意义的数据,浪费存储空间。



技术实现要素:

有鉴于此,本申请提供一种数据库升级的方法及装置,以实现高效、准确地升级数据库,并且有效地避免浪费存储空间。

具体地,本申请是通过如下技术方案实现的:

根据本申请实施例的第一方面,提供一种数据库升级的方法,所述方法包括:

根据新数据库版本信息建立新数据库;

根据预设算法,计算得出所述新数据库的第一摘要值,以及旧数据库的第二摘要值;

当所述第一摘要值与所述第二摘要值不相同时,从所述新数据库中确定目标数据表,所述目标数据表为所述新数据库中存在的与所述旧数据库中的数据表具有相同表名的数据表;

确定所述目标数据表中的目标列,所述目标列为所述目标数据表中存在的与所述目标数据表对应的旧数据表中具有相同列名的列;

对所述目标列进行升级;

使用所述新数据库替换所述旧数据库。

可选的,所述预设算法包括:MD5算法,或,安全哈希算法。

可选的,所述对所述目标列进行升级,包括:

在确定一个所述目标数据表中的目标列之后,根据所述目标列组装升级语句;

继续确定下一个所述目标数据表中的目标列,根据所述下一个所述目标数据表中的目标列继续组装所述升级语句,直至确定完所有目标数据表中的目标列;

对每个所述目标数据表中的目标列执行所述升级语句。

可选的,所述升级语句包括:插入insert或者替换replace语句。

可选的,所述方法还包括:

当未对所述目标数据表中新增列的属性设置预设默认值时,将所述新增列的属性设置为允许为空NULL,所述新增列为在所述目标数据表中存在的,且在所述目标数据表对应的旧数据表中不存在的列。

根据本申请实施例的第二方面,本申请提供一种数据库升级的装置,所述装置包括:

数据库建立模块,用于根据新数据库版本信息建立新数据库;

摘要值计算模块,用于根据预设算法,计算得出所述新数据库的第一摘要值,以及旧数据库的第二摘要值;

表确定模块,用于当所述第一摘要值与所述第二摘要值不相同时,从所述新数据库中确定目标数据表,所述目标数据表为所述新数据库中存在的与所述旧数据库中的数据表具有相同表名的数据表;

列确定模块,用于确定所述目标数据表中的目标列,所述目标列为所述目标数据表中存在的与所述目标数据表对应的旧数据表中具有相同列名的列;

升级模块,用于对所述目标列进行升级;

替换模块,用于使用所述新数据库替换所述旧数据库。

可选的,所述预设算法包括:MD5算法,或,安全哈希算法。

可选的,所述升级模块,包括:

组装子模块,用于在确定一个所述目标数据表中的目标列之后,根据所述目标列组装升级语句;

确定子模块,用于继续确定下一个所述目标数据表中的目标列,根据所述下一个所述目标数据表中的目标列继续组装所述升级语句,直至确定完所有目标数据表中的目标列;

执行子模块,用于对每个所述目标数据表中的目标列执行所述升级语句。

可选的,所述升级语句包括:插入insert或者替换replace语句。

可选的,所述装置还包括:

属性设置模块:用于当未对所述目标数据表中新增列的属性设置预设默认值时,将所述新增列的属性设置为NULL,所述新增列为所述目标数据表中存在的,且在所述目标数据表对应的旧数据表中不存在的列。

由上述实施例可见,通过预设算法,计算得出新数据库与旧数据库各自的摘要值,比较该两个摘要值是否一致,即可以快速确定新数据库与旧数据库的结构是否完全相同;在该两个摘要值不一致时,可以确定新数据库与旧数据库的结构不完全相同,此时,继续确定新数据库中存在的待升级的目标数据表,在目标数据表中继续确定待升级的目标列,对目标列进行升级,升级完成后,使用新数据库替换旧数据库,即完成了数据库的升级。由于在数据库升级过程中,较少的修改旧数据库,从而有效地降低了旧数据库损坏的风险,提高了数据库升级的准确性;并且,上述过程中,由于仅对目标列进行升级,从而可以有效地提高数据库升级的效率。

附图说明

图1A,示例了本申请数据库升级的方法的一个实施例流程图;

图1B为旧数据库结构的一种示例;

图1C为新数据库结构的一种示例;

图2示例了本申请数据库升级的方法的另一个实施例流程图;

图3为本申请数据库升级的装置所在网络设备的一种硬件结构图;

图4示例了本申请数据库升级的装置的一个实施例框图;

图5示例了本申请数据库升级的装置的另一个实施例框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

本申请中,列举下述实施例说明本申请提供的数据库升级的方法。

请参见图1A,示例了本申请数据库升级的方法的一个实施例流程图,图1B为旧数据库结构的一种示例,图1C为新数据库结构的一种示例,图1A所示的方法可以包括以下步骤:

步骤S101:根据新数据库版本信息建立新数据库。

以软件升级过程中,对该软件的数据库进行升级为例:网络设备可以从该软件集成商服务器中获取软件升级包,该软件升级包中可以包括该软件对应的新数据库版本信息。从而,网络设备则可以根据新数据库版本信息建立新数据库,例如,建立如图1C所示的数据库。具体是如何根据新数据库版本信息建立新数据库的,可以参见现有技术中的描述,本申请对此不再详细赘述。

步骤S102:根据预设算法,计算得出所述新数据库的第一摘要值,以及旧数据库的第二摘要值。

在本申请中,可以按照预设算法,分别计算得出新数据库结构与旧数据库结构各自的摘要值,该摘要值可以表示数据库结构的摘要信息,当两个数据库的结构不完全相同时,那么,该两个数据库结构的摘要值也不相同。为了描述方便,可以将新数据库的摘要值称为第一摘要值,旧数据库的摘要值称为第二摘要值。

在一实施例中,所述预设算法可以包括MD5(Message-Digest Algorithm 5,消息摘要算法第五版)算法,或者安全哈希算法。具体如何根据该两种算法计算得出数据库结构的摘要值,可以参见现有技术中的描述,本申请对此不再详细赘述。

可以理解的是,上述实施例所提的算法仅仅作为举例,本申请对此并不作限制。

步骤S103:当所述第一摘要值与所述第二摘要值不相同时,从所述新数据库中确定目标数据表,所述目标数据表为所述新数据库中存在的与所述旧数据库中的数据表具有相同表名的数据表。

当新数据库的第一摘要值与旧数据库的第二摘要值不相同时,即可以认为新数据库与旧数据库的结构不完全相同。

在确定新数据库与旧数据库的结构不完成相同时,在本申请中,首先可以依次获取新数据库中的每个新数据表,根据该新数据表的表名查找旧数据库,当在旧数据库中查找到具有该表名的旧数据表时,可以将该新数据表作为待升级的目标数据表。

例如,在图1C所示例的新数据库中,获取到的新数据表包括“学生信息表”、“课程信息表”、“成绩表”、“系别信息表”,依次根据该4个新数据表的表名查找图1B所示例的旧数据库,根据查找结果,可以将图1C所示例的新数据表“学生信息表”、“课程信息表”、“成绩表”作为待升级的目标数据表。

步骤S104:确定所述目标数据表中的目标列,所述目标列为所述目标数据表中存在的与所述目标数据表对应的旧数据表中具有相同列名的列。

首先说明,在本申请中,为了描述方便,可以将旧数据库中的存在的,与步骤S103中确定的目标数据表具有相同表名的数据表称为该目标数据表对应的旧数据表,例如,可以将图1B所示例的“学生信息表”称为图1C所示例的“学生信息表”所对应的旧数据表。

在确定新数据库中的目标数据表之后,根据该目标数据表中的列查找该目标数据表对应的旧数据表,若在旧数据表中查找到与该目标数据表中的列具有相同列名的列时,则可以将该目标数据表中的列作为待升级的目标列。

例如,以图1C中示例的“学生信息表”,以及图1B中示例的“学生信息表”为例,根据图1C的“学生信息表”中的列查找图1B的“学生信息表”。根据查找结果,可以得出,图1C的“学生信息表”中包括的目标列为“学号”、“姓名”、“性别”、“联系方式”。

步骤S105:对所述目标列进行升级。

当执行完步骤S104,确定目标列之后,则可以对该目标列进行升级。

例如,根据图1B所示例的旧数据库中的,“学生信息表”中的“学号”、“姓名”“性别”、“联系方式”这四列的数据,更新图1C所示例的新数据库中的,“学生信息表”中的“学号”、“姓名”“性别”、“联系方式”这四列的数据。

此外,需要说明的是,在本申请中,当根据新数据库中的新数据表查找旧数据库,在旧数据库中未查找到与该新数据表具有相同表名的数据表时,可以认为该新数据表是新数据库中的新增表,可以不对新增表进行升级。从而,可以提高对数据库进行升级的效率。

例如,相较于图1B所示例的旧数据库,图1C所示例的新数据库中的“系别信息表”为新增表。那么,在数据库升级过程中可以不对该“系别信息表”进行处理。

此外,在本申请中,当根据目标数据表中的列查找该目标数据表对应的旧数据表,在旧数据表中未查找到与该目标数据表中的列具有相同列名的列时,可以认为该目标数据表中的列为新增列,可以不对新增列进行升级。从而,可以提高对数据库进行升级的效率。

例如,相较于图1B所示例的旧数据库,图1C所示例的新数据库中的“学生信息表”中的“系别”列为新增列。那么,在数据库升级过程中可以不对该“系别”列进行处理。

需要说明的是,可以将新数据库中新增列的属性设置为预设的默认值,若未对新增列的属性预设默认值,则可以将新增列的属性设置为系统默认值NULL,即允许该列的值为空,从而可以避免在对该新增列插入空数据时,导致数据库升级失败。

此外,本申请中,对于数据库结构中的触发器、索引、存储过程等,可以采取忽略的方式,即可以认为新数据库中的触发器、索引、存储过程等为标准的,正确的,在数据库升级的过程中,可以不对触发器、索引、存储过程等进行处理。从而,可以简化数据库升级的过程,使得数据库升级更为高效。

此外,在本申请中,当确定旧数据库中存在的旧数据表与新数据库中的新数据表均具有不相同的表名时,可以认为新数据库中不再需要该旧数据表,此时,可以采取忽略方式,即对旧数据库中的数据表不作处理。从而提高数据库升级的效率。

步骤S106:使用所述新数据库替换所述旧数据库。

当执行完步骤S105,在本步骤中,使用新数据库替换旧数据库,即完成数据库的升级。

由于使用新数据库替换旧数据库,从而,在数据库升级完成后,旧数据库中的数据信息将不存在,从而有效地避免浪费存储空间。

由上述实施例可见,通过预设算法,计算得出新数据库与旧数据库各自的摘要值,比较该两个摘要值是否一致,即可以快速确定新数据库与旧数据库的结构是否完全相同;在该两个摘要值不一致时,可以确定新数据库与旧数据库的结构不完全相同,此时,继续确定新数据库中存在的待升级的目标数据表,在目标数据表中继续确定待升级的目标列,对目标列进行升级,升级完成后,使用新数据库替换旧数据库,即完成了数据库的升级。由于在数据库升级过程中,较少的修改旧数据库,从而有效地降低了旧数据库损坏的风险,提高了数据库升级的准确性;并且,上述过程中,由于仅对目标列进行升级,从而可以有效地提高数据库升级的效率。

请参见图2,示例了本申请数据库升级的方法的另一个实施例流程图,该图2所示的流程在上述图1A所示流程的基础上,可以包括以下步骤:

步骤S201:根据新数据库版本信息建立新数据库。

步骤S202:根据预设算法,计算得出所述新数据库的第一摘要值,以及旧数据库的第二摘要值。

步骤S203:当所述第一摘要值与所述第二摘要值不相同时,从所述新数据库中确定目标数据表,所述目标数据表为所述新数据库中存在的与所述旧数据库中的数据表具有相同表名的数据表。

步骤S201至步骤S203的描述,可以参见上述图1A所示的步骤S101至步骤S103中的详细描述,本申请对此不再详细赘述。

步骤S204:确定其中一个所述目标数据表中的目标列,所述目标列为所述目标数据表中存在的与所述目标数据表对应的旧数据表中具有相同列名的列。

步骤S205:在确定其中一个所述目标数据表中的目标列之后,根据所述目标列组装升级语句。

步骤S206:继续确定下一个所述目标数据表中的目标列,根据所述下一个所述目标数据表中的目标列继续组装所述升级语句,直至确定完所有目标数据表中的目标列。

在执行完步骤S203,确定新数据库中的所有目标数据表之后,在步骤S204中,可以从所有的目标数据表中随机选择其中一个目标数据表,例如“学生信息表”,确定该目标数据表中的目标列。确定目标数据表中的目标列的过程可以参见上述步骤S104中的相关描述,本申请对此不再详细赘述。

当确定目标数据表中的目标列之后,在步骤S205中,可以根据目标列组装升级语句。

在一个可选的实现方式中,该升级语句可以包括“插入insert或者替换replace”语句,该“插入insert或者替换replace”语句可以用于指示将旧数据库中数据插入对应的新数据库的目标列中,或者使用旧数据库中的数据替换新数据库的目标列中的数据。通过该升级语句,可以有效地避免在新数据库的目标列中重复插入相同数据,有效地避免因数据库数据错误导致用户配置错误,使得数据库升级更为准确。

可以理解的是,上述仅以升级语句中包括“插入insert或者替换replace”语句为例,实际应用中还可以包括其它语句,本申请对此不作限制。

在根据目标列组装升级语句后,继续确定下一个目标数据表中的目标列,根据该目标列继续组装上述的升级语句,直至确定完所有目标数据表中的目标列,至此组装完成升级语句。

步骤S207:对每个所述目标数据表中的目标列执行所述升级语句。

对每个目标数据表中的目标列执行所述升级语句,即可以对每个目标数据表中的目标列进行数据升级与维护。

步骤S208:使用所述新数据库替换所述旧数据库。

由上述实施例可见,通过预设算法,计算得出新数据库与旧数据库各自的摘要值,比较该两个摘要值是否一致,即可以快速确定新数据库与旧数据库的结构是否完全相同;在该两个摘要值不一致时,可以确定新数据库与旧数据库的结构不完全相同,此时,继续确定新数据库中存在的待升级的目标数据表,在目标数据表中继续确定待升级的目标列,根据目标列组装升级语句,直至确定每个目标数据表的所有目标列。执行组装的升级语句,对每个目标数据表中的目标列进行升级,可以实现对新数据库中的新数据表进行批量升级,从而可以有效地提高数据库升级的效率。

与前述数据库升级的方法的实施例相对应,本申请还提供了数据库升级的装置的实施例。

本申请数据库升级的装置的实施例可以应用在网络设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在网络设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本申请数据库升级的装置所在网络设备的一种硬件结构图,除了图3所示的处理器31、内存32、网络接口33、以及非易失性存储器34之外,实施例中装置所在的网络设备通常根据该网络设备的实际功能,还可以包括其他硬件,对此不再赘述。

请参考图4,示例了本申请数据库升级的装置的一个实施例框图,该装置可以包括:数据库建立模块41、摘要值计算模块42、表确定模块43、列确定模块44、升级模块45、替换模块46。

该数据库建立模块41,可以用于根据新数据库版本信息建立新数据库;

该摘要值计算模块42,可以用于根据预设算法,计算得出所述新数据库的第一摘要值,以及旧数据库的第二摘要值;

该表确定模块43,可以用于当所述第一摘要值与所述第二摘要值不相同时,从所述新数据库中确定目标数据表,所述目标数据表为所述新数据库中存在的与所述旧数据库中的数据表具有相同表名的数据表;

该列确定模块44,可以用于确定所述目标数据表中的目标列,所述目标列为所述目标数据表中存在的与所述目标数据表对应的旧数据表中具有相同列名的列;

该升级模块45,可以用于对所述目标列进行升级;

该替换模块46,可以用于使用所述新数据库替换所述旧数据库。

在一实施例中,所述预设算法包括:MD5算法,或,安全哈希算法。

请参考图5,示例了本申请数据库升级的装置的另一个实施例框图,该图5所示的装置在上述图4所示装置的基础上,其中,升级模块45可以包括:组装子模块451、确定子模块452、执行子模块453。

其中,该组装子模块451,可以用于在确定一个所述目标数据表中的目标列之后,根据所述目标列组装升级语句;

该确定子模块452,可以用于继续确定下一个所述目标数据表中的目标列,根据所述下一个所述目标数据表中的目标列继续组装所述升级语句,直至确定完所有目标数据表中的目标列;

该执行子模块453,可以用于对每个所述目标列执行所述升级语句。

在一实施例中,所述升级语句可以包括:插入insert或者替换replace语句。

在另一实施例中,所述装置还可以包括:属性设置模块。

该属性设置模块,可以用于当未对所述目标数据表中新增列的属性设置预设默认值时,将所述新增列的属性设置为NULL,所述新增列为所述目标数据表中存在的,且在所述目标数据表对应的旧数据表中不存在的列。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1