用于切换数据库的方法和装置的制造方法
【技术领域】
[0001]本申请涉及数据处理领域,更具体地涉及一种在同一分布式应用下切换数据库的方法和装置。
【背景技术】
[0002]随着大数据时代的到来,大数据处理已经越来越受到关注。在目前的分布式应用中,由于数据量或者访问量的不断增加,数据库的容量和吞吐量需要不断扩大,因此需要对数据库进行扩容,即,将某个应用从使用旧数据库切换成使用新数据库来完成数据处理。在此扩容过程中,不可避免地可能出现数据同步、停机切换、容灾、脏数据校验和处理等问题。
[0003]在目前的现有技术中,关于如何针对某个应用切换数据库,主要有两种解决方案。一种是停机切换,即,使得待切换数据库的应用暂时停止对用户提供服务,而利用这段时间将旧数据库中的数据映射到新数据库中并根据该映射关系调试针对该应用的服务器与新数据库之间的调用和衔接关系。之后再恢复该应用对用户提供服务。这种方案会影响用户对应用服务的使用,导致用户使用体验差。
[0004]另一种是针对使用旧数据库的应用,新建一个使用新数据库的应用,保持两个应用同步,使得二者同时支撑该应用的业务。在无需停机的情况下,在保持将旧数据库的数据实时同步到新数据库的同时,将用户的数据处理请求从使用旧数据库的应用上逐渐切换到使用新数据库的应用上,最后完全由使用新数据库的应用来处理用户的数据处理请求,此时使得原应用停止服务,新应用对外提供服务,从而实现数据库的最终切换。由于这种方案需要重新建立新的应用,包含全新代码的编写和测试等,所以需要耗费很高的人力成本和时间成本。并且往往在开发和使用了新的应用之后很短的时间内,由于数据量或者访问量的剧增导致数据库再次需要扩容,而此时这种需要高人力成本和时间成本的方案显然就会影响系统效益成本而不适用。并且,在这种方案中,尽管无需停机,但由于是在两个相对独立的应用系统之间进行数据交换,因此数据交换的复杂度高,所需的时间长,导致在整个切换数据库的过程中用户都能够感知到速度的下降,影响用户的使用体验。
[0005]为此,需求一种新的切换数据库的技术,使得在不影响用户使用或者用户感知不到的情况下实现快速且平滑地切换数据库。
【发明内容】
[0006]本申请的目的就在于提供一种切换数据库的技术,使得在不影响用户使用或者用户感知不到的情况下实现快速且平滑地切换数据库,以克服上述现有技术中的问题。
[0007]具体而言,根据本申请实施例的一个方面,提供一种用于切换数据库的方法,其特征在于,包括:将第一数据库中的数据映射到第二数据库中;将针对一应用的服务器划分为第一服务部分和第二服务部分,使得第一服务部分使用第一数据库来针对用户的数据处理请求执行数据处理,并且第二服务部分使用第二数据库来针对用户的数据处理请求执行数据处理;以及在保持将第一数据库的数据实时同步到第二数据库的情况下,将用户的数据处理请求逐渐从第一服务部分切换到第二服务部分,以最终完全由第二服务部分针对用户的数据处理请求执行数据处理。
[0008]根据本申请实施例的另一个方面,提供一种用于切换数据库的装置,其特征在于,包括:映射模块,用于将第一数据库中的数据映射到第二数据库中;划分模块,用于将针对一应用的服务器划分为第一服务部分和第二服务部分,使得第一服务部分使用第一数据库来针对用户的数据处理请求执行数据处理,并且第二服务部分使用第二数据库来针对用户的数据处理请求执行数据处理;以及切换模块,用于在保持将第一数据库的数据实时同步到第二数据库的情况下,将用户的数据处理请求逐渐从第一服务部分切换到第二服务部分,以最终完全由第二服务部分针对用户的数据处理请求执行数据处理。
[0009]与现有技术相比,根据本申请的技术方案,能够在不影响用户使用或者用户感知不到的情况下实现快速且平滑地切换数据库。
【附图说明】
[0010]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0011]图1是根据本申请一个实施例的用于切换数据库的方法的流程图;
[0012]图2示出了根据本申请一个具体实施例的用于切换数据库的实现架构的示意图;
[0013]图3是根据本申请一个具体实施例的用于将数据处理请求逐渐从第一服务部分切换到第二服务部分的方法的流程图;以及
[0014]图4是根据本申请一个实施例的用于切换数据库的装置的结构框图。
【具体实施方式】
[0015]本申请的主要思想就在于,通过在同一分布式应用下,将该应用的服务器划分成第一服务部分和第二服务部分,第一服务部分使用旧数据库来执行数据处理,第二服务部分使用新数据库来执行数据处理,然后通过同一应用下的两个服务部分间的数据交换来逐渐将用户的数据处理请求从使用旧数据库处理切换成使用新数据库处理,从而完成数据库的最终切换。需要指出的是,本文中所述的服务器可以对应于一个独立的服务器,也可以对应于一个服务器集群。类似地,第一服务部分或第二服务部分可以对应于一个独立服务器中的部分处理资源,也可以对应于一个服务器集群中的一个或多个服务器。
[0016]与现有技术中通过新建应用的方式来切换数据库相比,本申请的方案可以避免新建应用并且可以避免在两个相对独立的应用间进行数据交换,而只需要通过同一应用中的两个服务部分间的简单的数据交换,就可以完成数据库的切换。由此可以节约开发成本,并且可以减少切换时间,从而实现在不影响用户使用或用户感知不到的情况下快速且平滑地切换数据库,提高用户使用体验。
[0017]为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0018]参照图1,图1示出了根据本申请一个实施例的用于切换数据库的方法100的流程图。
[0019]如图1所示,在步骤SllO处,将第一数据库中的数据映射到第二数据库中。
[0020]具体而言,对于任一应用服务器(S卩,针对某一应用的服务器)而言,当需要扩大数据库的容量时,需要在不影响正常处理用户数据请求的情况下,从使用旧数据库(第一数据库)处理用户数据请求的状态切换为使用扩容后的新数据库(第二数据库)处理用户数据请求的状态。根据本申请的实施例,可以将第一数据库中的数据实时同步到第二数据库中,并在第一数据库和第二数据库的数据之间建立映射关系。
[0021]然后在步骤S120处,将应用服务器划分成第一服务部分和第二服务