一种数据库更新方法及装置与流程

文档序号:11918592阅读:253来源:国知局
一种数据库更新方法及装置与流程
本发明涉及数据库更新
技术领域
,尤其涉及一种数据库更新方法及装置。
背景技术
:在信息化社会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。数据库是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手段。随着信息不断的增加,如何及时更新数据库中的数据成为业界关注的问题。相关技术中,产生新的数据后,会用该新的数据更新数据库中的数据。更新方式有两种,一种是全量替换,一种是增量更新,其中全量替换通常需要将完整数据发送给数据库更新,这样必然导致浪费网络流量;增量更新例如是仅将新的数据发送给数据库更新。发明人在对这两种方式更新方式进行研究的过程中发现,如果更新过程出现异常,导致更新中断,则需要从头重新开始更新,这导致数据库更新效率降低。故此,需要一种新的数据库更新方法。技术实现要素:本发明实施例提供了一种数据库更新方法及装置,用以解决目前存在的由于数据库更新过程中出现异常,便从头开始更新,导致数据库更新效率低的问题。本发明实施例提供了一种数据库更新方法,包括:在预先生成的断点库中,获取更新进度为未完成的数据单元断点位置;用预先下载的待更新数据中的数据单元,更新数据库中所述数据单元断点位置对应的数据单元;根据所述数据单元断点位置对应的数据单元的更新情况,更新所述断点库中所述数据单元断点位置对应的更新进度。进一步地,本发明实施例还提供了一种数据库更新装置,包括:查询模块,用于在预先生成的断点库中,获取更新进度为未完成的数据单元断点位置;数据库更新模块,用于用预先下载的待更新数据中的数据单元,更新数据库中所述数据单元断点位置对应的数据单元;数据单元进度更新模块,用于根据所述数据单元断点位置对应的数据单元的更新情况,更新所述断点库中所述数据单元断点位置对应的更新进度。本发明有益效果如下:本发明实施例提供的技术方案中支持断点更新,即若更新过程中断,则只对更新进度为未完成的数据单元继续进行更新,之前成功更新的数据将无需重新更新,因此,本申请相对于现有技术中一旦更新过程中断就得从头开始更新的相比,本发明实施例可以提高数据库的更新效率。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1所示为本发明实施例一中所述数据库更新方法的流程示意图;图2a所示为本发明实施例二中所述数据区域的示意图;图2b所示为本发明实施例二中所述数据块的示意图;图2c所示为本发明实施例二中所述数据单元的示意图;图3所示为本发明实施例二中所述数据库更新装置的结构示意图。具体实施方式本发明实施例提供了一种数据库更新方法,在本发明实施例所述技术方案中,在预先生成的断点库中,获取更新进度为未完成的数据单元断点位置;用预先下载的待更新数据中的数据单元,更新数据库中所述数据单元断点位置对应的数据单元;根据所述数据单元的更新情况,更新所述断点库中记录的所述数据单元对应的数据单元断点位置的更新进度。由此,本发明实施例提供的技术方案中支持断点更新,即若更新过程中断,则只对更新进度为未完成的数据单元继续进行更新,之前成功更新的数据将无需重新更新,因此,本申请相对于现有技术中一旦更新过程中断就得从头开始更新的相比,本发明实施例可以提高数据库的更新效率。为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。实施例一:如图1所示,其为本发明实施例一中所述数据库更新方法的流程示意图,所述数据库更新方法可包括以下步骤:步骤101:在预先生成的断点库中,获取更新进度为未完成的数据单元断点位置。其中,在一个实施例中,更新进度可以包括表示未开始更新的未开始更新状态(该状态可以用Init表示)、表示正在更新的更新中状态(该状态可以用Pro表示)、以及表示已经完成更新的更新完成状态(该状态可以用Com表示)。当然,根据实际需要,具体实施时可以增加和减少更新状态,例如更新状态可以仅包括更新完成状态和未更新状态,或者更新状态可以根据更新的流程包括中间的状态,例如在更新中状态中可能包括读取数据、合成数据的过程等,那么可以将更新中状态细分为读数据状态和合成数据状态等以增加更新进度。具体实施时,可以根据实际需要设定,本发明实施例对此不做赘述。步骤102:用预先下载的待更新数据中的数据单元,更新数据库中所述数据单元断点位置对应的数据单元。步骤103:根据所述数据单元断点位置对应的数据单元的更新情况,更新所述断点库中所述数据单元断点位置对应的更新进度。其中,在一个实施例中,待更新数据包括至少一个数据区域;针对每个数据区域,该数据区域包括至少一个数据块;针对每个数据块,该数据块包括至少一个数据单元。并且,在待更新数据中每个数据区域均有自己的数据区域标识。同样,每个数据块均有自己的数据块标识、每个数据单元均有自己的数据单元标识。这样,数据单元隶属于数据块,数据块隶属于数据区域。具体实施时可以根据待更新数据的自身的特点建立断点库。例如可以根据数据区域标识、数据块标识以及数据单元标识,识别所述待更新数据中的各数据区域、各数据块以及各数据单元。其中,一个数据区域对应一个数据区域断点位置、一个数据块对应一个数据块断点位置、一个数据单元对应一个数据单元断点位置。具体实施时,可以用数据区域标识表示数据区域断点位置、数据块标识表示数据块断点位置、数据单元标识表示数据单元断点位置。这样,所述断点库中可以包括数据区域断点表、数据块断点表和数据单元断点表这三个断点表,其中:数据区域断点表中包括各数据区域断点位置及对应的更新进度;数据块断点表中包括各数据块断点位置及对应的更新进度;数据单元断点表中包括各数据单元的断点位置及对应的更新进度。当然,需要说明的是,数据单元断点位置可以不仅限于用数据单元标识来表示,本发明对此不做限定。例如,具体实施时,可以根据预设编号规则,对各数据单元进行编号,然后用编号表示数据单元断点位置。同理,数据块断点位置以及数据区域断点位置的表示方法本发明也不做限定。这里,以一具体实施例说明断点库中各断点表的建立方法:例如,在基于UpdateRegion的更新模式中,待更新数据可以包括至少一个UpdateRegion(即 数据区域),一个UpdateRegion包含至少一个BuildingBlock(即数据块),一个BuildingBlock包含至少一个Table(即数据单元),Table可以是数据库更新的最小单位,也是增量更新的最小单位。由此,断点库中则有三个断点表,一个断点表中包括至少一个UpdateRegion对应的数据区域断点位置及对应的更新进度(该断点表以后简称为UrTable);一个断点表中包括至少一个BuildingBlock对应的数据块断点位置及对应的更新进度(该断点表以后简称为BbTable);最后一个表中包括至少一个Table对应的数据单元断点位置及对应的更新进度(该断点表以后简称为TbTable)。在初始时,各断点表中的更新进度均处于未开始更新状态。当然,需要说明的是,一个Table中包含至少一条记录,那么每一条记录也可以作为数据库更新的最小单位。若Table还可以继续划分,那么还可以将数据单元划分为比Table更小的粒度。具体实施时,对待更新数据划分的粒度越小,数据库更新则可以越接近非回溯的形式。但是断点库中维护的断点表也越多,维护的数据也越多,故此,具体实施时,可以根据实际需要划分待更新数据,并建立断点库,本发明实施例对此不做限定。这样,将待更新数据按照层次划分(即数据区域、数据块和数据单元等),可以使数据库更新过程分解成具有层次的子过程,也便于根据各个层次进行数据库更新。其中,在一个实施例中,断点库中若包括数据区域断点表、数据块断点表和数据单元断点表,步骤101(即在预先生成的断点库中,获取更新进度为未完成的数据单元断点位置),可具体包括以下步骤:步骤B1:从数据区域断点表中,获取更新进度为未完成的数据区域断点位置。步骤B2:在数据块断点表中,查询所述数据区域断点位置对应的数据块断点位置,并获取其中更新进度为未完成的数据块断点位置。步骤B3:在数据单元断点表中,查询获取到的数据块断点位置对应的数 据单元断点位置,并获取其中更新进度为未完成的数据单元断点位置。继续上面的例子,假设数据区域断点位置为U1的UpdateRegion对应的数据块断点位置分别为B1、B2、B3、B4的4个BuildingBlock,而数据块断点位置为B1的BuildingBlock对应的数据单元断点位置分别为M1、M2的两个Table、数据块断点位置为B3的BuildingBlock对应的数据单元断点位置分别为T1、T2、T3的三个Table,且Table为数据库更新的最小单位。依据上述假设条件,查询断点的过程为:首先在数据区域断点表(即UrTable)中查询更新进度为未完成的数据区域断点位置(即查询更新进度不为Com状态的数据区域断点位置)。若从UrTable中查询到的更新进度为未完成的数据区域断点位置为U1,且该数据区域断点位置的更新进度为Init,则说明该数据区域断点位置对应的数据区域未开始更新,对应该数据区域断点位置的数据单元即为断点位置(例如M1为数据单元断点位置)。若从UrTable中查询到的数据区域断点位置为U1,且该数据区域的更新进度为Pro,则继续从数据块断点表(即BbTable)中,查询U1对应的数据块断点位置B1、B2、B3、B4中,更新进度为未完成的数据块断点位置。若查询到的数据块断点位置为B2,且B2的更新进度为Init,则说明该数据块断点位置对应的数据块未开始更新,则可以选择T1为数据单元断点位置;若B2的更新进度为Pro,则继续从数据单元断点表(即TbTable)中,查询与B2对应的数据单元断点位置中更新进度为未完成的数据单元断点位置。这样,从数据区域断点表到数据单元断点表的顺序依次查询断点表,可以快速确定哪些数据区域或数据块存在断点。当然,具体实施时,也可以按照从数据单元断点表到数据区域断点表的顺序依次查询断点表,本发明实施例对此不做限定。其中,在一个实施例中,若数据库中包括数据块断点表时,该数据块断点表需要根据数据块的更新进度进行更新,以保证断点库信息的准确性。对此,本发明实施例可执行为判断同一数据块断点位置对应的所有数据单元断点位 置在数据单元断点表中对应的更新进度是否均为更新完成,若是,则将所述数据块断点位置在所述数据块断点表中对应的更新进度更新为更新完成。其中,在一个实施例中,若数据库中包括数据区域断点表时,该数据区域断点表需要根据数据区域的更新进度进行更新,以保证断点库信息的准确性。对此,本发明实施例可执行为判断同一数据区域断点位置对应的所有数据块断点位置在数据块断点表中对应的更新进度是否均为更新完成,若是,则将所述数据区域断点位置在所述数据区域断点表中对应的更新进度更新为更新完成。其中,在一个实施例中,在存储时,上述的数据单元可以是存储的最小单位,即一个数据单元可以是一个独立的文件。当然,在具体实施时,上述数据单元的划分可以是逻辑上的划分,而存储时并非一个数据单元对应一个独立的文件,例如可以是一个数据块存储为一个文件。继续上面的例子,一个UpdateRegion是一个文件夹,该文件夹下包括至少一个文件,其中一个文件就是一个BuildingBlock。那么Table就是逻辑上的划分,至少一个Table共存于一个BuildingBlock(即一个文件中)。故此,所述待更新数据中可能包括至少一个文件、所述文件可能包括至少一个数据块和至少一个数据单元。若数据库更新过程中断,可以执行以下2种操作之一或组合,以保证数据库更新的完整性和准确性,为便于描述,以下操作简称为“数据库中断后处理操作”:1)、假若一个数据块存储为一个文件,在数据库更新过程中若更新中断,则可能已更新至数据库中的文件已失效(即该文件丢失或损坏),这导致部分的更新操作将无效。本发明实施例为了重新进行无效的更新操作,保证良好的完成数据库更新,可执行以下操作:判断更新进度为未完成的数据块断点位置在所述数据库中对应的文件是否有效;若无效,则将所述数据块断点位置在所述数据单元断点表中对应的所有数据单元断点位置对应的更新进度标记为未完成。2)、其中,在一个实施例中,数据库更新过程中断,则有可能发生针对数 据库的操作事务未提交,这样,需要回滚操作事务,对此,本发明实施例中可执行为:判断是否有针对所述数据库的操作事务未提交;若是,则对所述数据库进行回滚操作。其中,在一个实施例中,若数据单元以数据表的形式存储,数据库更新过程中断时,数据单元断点位置对应的数据表可能无效,为了便于根据数据单元断点位置对数据库进行更新,保证数据库更新的完整性和准确性,则步骤102(即用预先下载的待更新数据中的数据单元,更新数据库中所述数据单元断点位置对应的数据单元)可包括以下步骤:步骤A1:判断所述数据库中所述数据单元断点位置对应的数据表是更新时新建的,还是对旧数据表进行的更新。步骤A2:如果是更新时新建的,则删除所述数据表,用预先下载的待更新数据中所述数据单元断点位置对应的数据单元新建数据表。步骤A3:如果是对旧数据表进行的更新,则用所述旧数据表的备份替换所述数据库中的数据表,用预先下载的待更新数据中所述数据单元断点位置对应的数据单元,对替换到所述数据库中的旧数据表进行更新。其中,在一个实施例中,数据库通常情况下在为用户提供服务,如果更新正在提供服务的数据库,那么该数据库将中断服务,故此,为保证能够继续为用户提供服务,也避免数据库更新过程中造成的数据库损坏无法修复,本发明实施例中,步骤101中进行更新操作的数据库,是提供服务的数据块的备份数据库。在完成更新后,将更新后的数据库替换提供服务器的数据库,这样数据库的更新流程结束。其中,在一个实施例中,开始更新时,可以根据断点库建立任务列表,任务列表中包括待更新数据中的各数据单元对应的数据单元断点位置及对应的更新进度。数据库更新时,可以先根据该任务列表进行更新。当数据库更新过程中断,可以由断点位置的任务构成第一子任务列表,由断点位置之后的未开始更新的任务构成第二子任务列表。以便于根据第一子任务列表进行数据库中 断后处理操作,例如回滚事务。此时,为避免继续更新数据库中根据上述两个子任务列表进行更新,可以根据上述两个子任务列表中的待更新数据重建一个新的任务列表,并根据重建的所述任务列表,更新数据库。例如:综上,本发明实施例中,通过建立断点库,使得数据库可以支持断点更新。相对于相关技术中数据库更新中断后,只能从头开始,可以提高数据库更新效率。此外,本发明实施例中,根据待更新数据建立断点表,并根据断点表,进行数据库更新,可以使得数据库更新过程分解为具有层次的过程。便于根据层次实现对数据库更新的控制。此外,本发明实施例中,通过数据库中断后处理操作,可以提高数据库更新的完整性和准确性。实施例二以更新电子地图数据库为例,对本发明实施例中数据库更新方法进行说明:例如,数据区域是电子地图中按照行政区域划分的数据,待更新数据中包括北京地区以及上海地区的电子地图数据。且每个数据区域的存储形式为一个文件夹。例如图2a所示的文件夹UR_11表示北京地区的电子地图数据;UR_12表示上海地区的电子地图数据。如图2b所示,为文件夹UR_11中包括的文件后缀为.NDS的至少一个文件。其中,一个.NDS表示一个数据块,各.NDS文件按照功能划分。例如,名称为BMD的.NDS文件表示地图显示相关数据;名称为ROUTING的.NDS文件表示道路数据相关数据。其中,每个.NDS文件中包括至少一个数据表(每个数据表为一个数据单元),例如如图2c所示为名称为ROUTING的.NDS文件内包括的各数据表。那么,数据区域断点表可以如表1所示:其中BJ表示北京地区断点位置,SH表示上海地区断点位置;其中更新进度包括Init(未开始更新状态)、Pro(更新中状态)以及Com(更新完成状态)。其中,Init和Pro均属于更新进度未完 成。表1数据区域断点表数据区域断点位置更新进度BJProSHCom数据块断点表可以如表2所示:BMD表示道路数据相关断点位置、POI表示POI相关信息断点位置、TRAFFIC表示实时交通相关信息断点位置;表2中与表1中相同字符的含义相同,在此不再赘述。表2数据块断点表数据单元断点表可以如表3所示:T1-T4表示不同的数据单元断点位置;且表3中与表2中相同字符的含义相同,在此不再赘述。表3数据单元断点表需要说明的是,上述表1、表2、表3仅用来说明本发明实施例,并不用于限定本发明实施例,具体实施时,可以根据实际需求,设计各断点表。那么,根据上述条件可知,本发明实施例可实施为首先在表1中查找出更新进度为未完成的数据区域断点位置为BJ,然后在表2中,BJ对应的数据块断点位置中可确定更新进度为未完成的数据块断点位置可为属于BJ的POI1,这之后,在表3中POI1对应的数据单元断点位置中可以确定更新进度为未完成的数据单元断点位置可为T3(1)。然后,用待更新数据中的数据单元,更新数据库中所述T3(1)对应的数据表。并,根据T3(1)对应的数据单元的更新情况,更新表3中T3(1)的更新进度。之后,可以返回在表1中查找出更新进度为未完成的数据区域断点位置的步骤,也可以根据表3继续更新T3(1)后面更新进度为未完成的T4(1)对应的数据单元直至所有数据单元的更新进度均为已完成为止。其中,在确定出数据单元断点位置为T3(1)之后,可以进行实施例一中所述的数据库中断后处理操作,以保证对数据库更新的完整性和准确性,具体的,包括:1)、判断更新进度为未完成的数据块断点位置(即POI1)在数据库中对应的文件(即属于北京地区文件夹下的POI.NDS文件)是否有效;若无效,则将POI1对应的所有数据单元断点位置对应的更新进度标记为未完成(即将T2(1)、T3(1)对应的更新进度均标记为Init。2)、判断是否有针对所述数据库的操作事务未提交;若是,则对所述数据库进行回滚操作。本发明实施例实现对电子地图数据库的断点更新,例如A.NDS文件更新成功之后,若在更新B.NDS文件时发生更新中断,则之前更新的A.NDS文件 将不受影响,若B.NDS若没有失效,则更新时只需要更新其中的部分数据表即可,由于数据表数据量很小,使得断点更新接近非回溯的形式,相对于现有技术中一旦更新过程中断,便从头开始更新,本发明实施例可以提高电子地图数据库的更新效率。实施例三基于相同的发明构思,本发明实施例还提供一种数据库更新装置,如图3所示,该装置包括:查询模块301,用于在预先生成的断点库中,获取更新进度为未完成的数据单元断点位置;数据库更新模块302,用于用预先下载的待更新数据中的数据单元,更新数据库中所述数据单元断点位置对应的数据单元;数据单元进度更新模块303,用于根据所述数据单元断点位置对应的数据单元的更新情况,更新所述断点库中所述数据单元断点位置对应的更新进度。其中,在一个实施例中,数据单元隶属于数据块,数据块隶属于数据区域,则所述断点库中包括数据区域断点表、数据块断点表和数据单元断点表,所述查询模块,具体包括:数据区域断点位置获取单元,用于从数据区域断点表中,获取更新进度为未完成的数据区域断点位置;数据块断点位置获取单元,用于在数据块断点表中,查询所述数据区域断点位置对应的数据块断点位置,并获取其中更新进度为未完成的数据块断点位置;数据单元断点位置获取单元,用于在数据单元断点表中,查询获取到的数据块断点位置对应的数据单元断点位置,并获取其中更新进度为未完成的数据单元断点位置。其中,在一个实施例中,所述装置进一步包括:数据块进度更新模块,用于判断同一数据块断点位置对应的所有数据单元 断点位置在数据单元断点表中对应的更新进度是否均为更新完成,若是,则将所述数据块断点位置在所述数据块断点表中对应的更新进度更新为更新完成。其中,在一个实施例中,所述装置进一步包括:数据区域进度更新模块,用于判断同一数据区域断点位置对应的所有数据块断点位置在数据块断点表中对应的更新进度是否均为更新完成,若是,则将所述数据区域断点位置在所述数据区域断点表中对应的更新进度更新为更新完成。其中,在一个实施例中,一个数据块存储为一个文件,所述装置还包括:文件效用判断模块,用于判断更新进度为未完成的数据块断点位置在所述数据库中对应的文件是否有效;进度修改模块,用于若文件效用判断模块的判断结果为无效,则将所述数据块断点位置在所述数据单元断点表中对应的所有数据单元断点位置对应的更新进度标记为未完成。其中,在一个实施例中,所述装置还包括:未提交事务判断模块,用于判断是否有针对所述数据库的操作事务未提交;回滚模块,用于若所述未提交事务判断模块的判断结果为是,则对所述数据库进行回滚操作。其中,在一个实施例中,所述数据单元以数据表的形式存储,所述数据库更新模块,具体包括:判断单元,用于判断所述数据库中所述数据单元断点位置对应的数据表是更新时新建的,还是对旧数据表进行的更新;数据表新建单元,用于如果是更新时新建的,则删除所述数据表,用预先下载的待更新数据中所述数据单元断点位置对应的数据单元新建数据表;旧数据表更新单元,用于如果是对旧数据表进行的更新,则用所述旧数据表的备份替换所述数据库中的数据表,用预先下载的待更新数据中所述数据单 元断点位置对应的数据单元,对替换到所述数据库中的旧数据表进行更新。本发明实施例提供的数据库更新装置支持断点更新,即若更新过程中断,则则只对更新进度为未完成的数据单元继续进行更新,之前成功更新的数据将无需重新更新,因此,本申请相对于现有技术中一旦更新过程中断就得从头开始更新的相比,本发明实施例可以提高数据库的更新效率。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、装置(装置)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理装置的处理器以产生一个机器,使得通过计算机或其他可编程数据处理装置的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理装置以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理装置上,使得在计算机或其他可编程装置上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程装置上执行的指令提供用于实现在流程图一个 流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1