数据迁移方法及系统的制作方法
【专利摘要】本申请提供了一种数据迁移方法,包括以下步骤:拦截应用服务器所接收的数据迁移请求,并获取数据迁移请求中所包含的数据迁移双方的识别号;判断应用服务器内存中是否包含所述数据迁移双方识别号的内存锁,若有,则分别为两个识别号申请各自的内存锁,反之,则创建所述两个识别号的内存锁;利用申请到的内存锁锁定对应识别号,将数据迁移请求发送给数据库,等待数据库处理本次数据迁移请求;获取数据库对本次数据迁移请求处理完成的指令,解除内存锁对数据迁移双方识别号的锁定,释放内存锁。本申请还提供了一种实现前述方法的数据迁移系统。本申请的数据迁移方法及系统,能够对大量并发的连接请求进行处理,提高了系统和数据库的稳定性。
【专利说明】数据迁移方法及系统【技术领域】
[0001]本申请涉及计算机数据处理【技术领域】,特别是涉及一种数据迁移方法及系统。
【背景技术】
[0002]随着网络技术的发展,网络中存储的数据通常因为网络操作需要进行数据迁移。例如,从一个数据库迁移到另一数据库。在某些情况下,进行数据迁移时,迁移双方的记录需要对应修改,例如,某个数据从数据库迁出后,该数据库需要删除该数据,或者修改该数据,而接收该数据的数据库,则需要增加该数据或者修改该数据对应的原数据。为了避免出现错误,当某条记录中的数据正在被使用时,需要对该记录进行锁定,只有当本次使用完成后,该记录的数据才能被再次使用。
[0003]在某些网络操作中,在短时间内某一记录可能出现大量等待对其中数据进行迁移的操作,目前,业界常见的数据迁移管理主要是通过数据库的数据库锁来实现。每次数据迁移进行之前,首先需要获取数据库连接,再通过锁定语句锁住数据迁移双方的记录中的数据。如果单条记录在短时间内需要进行大量次数的数据迁移时,该记录因为正在被使用而被锁定,那么该记录后续等待的数据迁移请求则会占用大量的数据库连接,只有按照顺序逐一完成该记录所有的数据迁移请求后,才能释放被占用的数据库连接。因为单个记录数据迁移次数过大,可能出现等待数据迁移的队列越来越长,占用的数据库的连接数也会不断增加,如果整个过程持续时间较长,则可能出现可以使用的数据库连接数越来越少,导致数据库压力过大而出现不稳定,最终出现系统崩溃等情况。
【发明内容】
[0004]本申请提供一种数据迁移方法及系统,能够解决占用数据库连接过多导致数据库不稳定以及系统崩溃的问题。
[0005]为了解决上述问题,本 申请公开了一种数据迁移方法,包括以下步骤:
[0006]拦截应用服务器所接收的数据迁移请求,并获取所述数据迁移请求中所包含的数据迁移双方的识别号;
[0007]判断应用服务器内存中是否包含所述数据迁移双方识别号的内存锁,若有,则分别为所述两个识别号申请各自的内存锁,反之,则创建所述两个识别号的内存锁;
[0008]利用申请到的内存锁锁定对应识别号,将所述数据迁移请求发送给数据库,等待数据库处理本次数据迁移请求;
[0009]获取数据库对本次数据迁移请求处理完成的指令,解除内存锁对所述数据迁移双方识别号的锁定,释放内存锁。
[0010]进一步地,所述分别为所述两个识别号申请各自的内存锁包括:
[0011]获取所述识别号对应的内存锁的当前使用状态,若正在被使用,则等待,若未被使用,则申请获取该内存锁。
[0012]进一步地,所述分别为所述两个识别号申请各自的内存锁还包括:[0013]统计所述识别号申请对应的内存锁的等待时间,若超过等待时间阈值,则拒绝本次数据迁移请求。
[0014]进一步地,所述数据库处理本次数据迁移请求包括:
[0015]获取本次数据迁移请求中数据迁移双方识别号的数据库锁;
[0016]采用数据库锁对所述数据迁移双方识别号进行锁定;
[0017]根据迁移数值对双方识别号中的数据进行更改并保存;
[0018]解除数据库锁对数据迁移双方识别号的锁定。
[0019]进一步地,所述识别号与对应的内存锁采用映射表的形式存储在应用服务器内存中。
[0020]进一步地,所述分别为所述两个识别号申请各自的内存锁之后还包括:
[0021]判断申请所述识别号对应的内存锁并处于等待状态的数据迁移请求数量是否超过申请阈值,若是,则拒绝本次数据迁移请求反之,则继续等待直到获取内存锁。
[0022]为了解决上述问题,本申请还公开了一种数据迁移系统,包括:
[0023]拦截模块,用于拦截应用服务器所接收的数据迁移请求,并获取所述数据迁移请求中所包含的数据迁移双方的识别号;
[0024]内存锁获取模块,用于判断应用服务器内存中是否包含所述数据迁移双方识别号的内存锁,若有,则分别为所述两个识别号申请各自的内存锁,反之,则创建所述两个识别号的内存锁;
[0025]锁定模块,用于利用申请到的内存锁锁定对应识别号,将所述数据迁移请求发送给数据库,等待数据库处理本次数据迁移请求;
[0026]释放模块,用于获取数据库对本次数据迁移请求处理完成的指令,解除内存锁对所述数据迁移双方识别号的锁定,释放内存锁。
[0027]进一步地,所述内存锁获取模块包括:
[0028]内存锁使用状态获取单元,用于获取所述识别号对应的内存锁的当前使用状态,若正在被使用,则等待,若未被使用,则申请获取该内存锁。
[0029]进一步地,所述内存锁获取模块还包括:
[0030]等待时间统计单元,用于统计所述识别号申请对应的内存锁的等待时间,若超过等待时间阈值,则拒绝本次数据迁移请求。
[0031]进一步地,所述系统还包括:
[0032]映射表建立模块,用于在应用服务器内存中建立映射表来存储识别号与对应的内存锁。
[0033]进一步地,所述系统还包括:
[0034]数据迁移请求数量统计模块,用于判断申请所述识别号对应的内存锁并处于等待状态的数据迁移请求数量是否超过申请阈值,若是,则拒绝本次数据迁移请求。
[0035]与现有技术相比,本申请包括以下优点:
[0036]本申请的数据迁移方法及系统,通过设立的内存锁来对同一识别号并发的数据迁移请求进行处理。因为该同一识别号的内存锁每次只能供一个数据迁移请求使用,那么其余的并发数据迁移请求则需要等待前一数据迁移请求使用完后才能获取。也即,每一个数据迁移请求都需要在内存中进行排列等待,逐个获取内存锁后,才能够通过应用服务器建立与数据库的连接。因此,即使有大量并发的数据迁移请求,也都需要在应用服务器内存中等待,逐一被放行,从而减少了对数据库连接的占用量,提高了数据库的稳定性。另外,即使出现大量并发的数据迁移请求导致应用服务器内存无法承受的时候,也可以通过增加应用服务器的数量的方式来解决,并不会对数据库造成影响,从而大大提高了系统的稳定性,避免系统崩溃。
[0037]其次,除了采用增加应用服务器或者应用服务器内存的方式来提高对并发数据迁移请求的处理能力外,本申请还采用直接对应用服务器中的内存锁进行配置的方式来提高系统处理能力。即设置每一个内存锁所允许并发数据迁移请求的数量,如果超过设定值,则直接拒绝后续的数据迁移请求,直到等待的数据迁移请求小于设定值后才能再次接受新的数据迁移请求申请内存锁。通过此种方式,无需增加应用服务器数量,或者应用服务器内存的容量,可以减少不必要的成本,同时可以保证数据库的连接不被大量的并发数据迁移请求占用,提高数据库以及系统的稳定性。
[0038]另外,对于内存锁和识别号的关联关系,采用映射表的形式存储在应用服务器中,无论是获取单个识别号的内存锁,还是对内存锁或者识别号进行修改、删除等操作,都不会影响整个映射表。在每次数据迁移请求中,增加一个内存锁,其所增加的额外处理时间的时长可以缩短到微秒级,这个时间对于整个数据迁移处理流程来说可以忽略不计。同时,在单个识别号并发数据迁移请求数量较多时,因为减少了对数据库连接的占用,可以提高数据库的响应速度,从而可以大大缩短整个数据迁移处理流程的时间,提高了系统的响应速度。
[0039]当然,实施本申请的任一产品不一定需要同时达到以上所述的所有优点。
【专利附图】
【附图说明】
[0040]图1是本申请的数据迁移实现的系统架构图;
[0041]图2是本申请的数据迁移方法实施例一的流程图;
[0042]图3是本申请的数据迁移方法实施例二的流程图;
[0043]图4是本申请的数据迁移方法效果比较图;
[0044]图5是本申请的数据迁移系统实施例一的结构示意图;
[0045]图6是本申请的数据迁移系统实施例二的结构示意图。
【具体实施方式】
[0046]为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本申请作进一步详细的说明。
[0047]本申请的数据迁移方法及系统用于对用户通过客户端向应用服务器提交的数据迁移请求进行处理,将大量并发的数据迁移请求通过内存锁的方式拦截在应用服务器中,避免占用过多的数据库连接,从而提高系统的响应速度以及稳定性。本申请的数据迁移系统可以设置在应用服务器内部,也可以作为独立模块,采用与应用服务器数据交互的方式实现数据迁移。
[0048]参照图1,示出实现本申请的数据迁移的系统架构图。数据迁移系统作为独立模块设置于应用服务器和数据库之间,对并发的数据迁移请求进行处理。下面对本申请的数据迁移方法及系统进行详细的说明。[0049]参照图2,示出本申请的一种数据迁移方法实施例一,包括以下步骤:
[0050]步骤101,拦截应用服务器所接收的数据迁移请求,并获取所述数据迁移请求中所包含的数据迁移双方的识别号。
[0051]当用户通过客户端提交数据迁移请求后,后台应用服务器会接收该数据迁移请求,并通过与数据库建立连接的方式访问数据库,在数据库中实现数据迁移。其中,数据迁移请求中会包含数据迁移双方的识别号、迁移数值等数据。本申请的数据迁移系统通过在应用服务器中对数据迁移请求进行拦截,从而可以获取数据迁移双方的识别号。
[0052]步骤102,判断应用服务器内存中是否包含所述数据迁移双方识别号的内存锁,若有,则分别为所述两个识别号申请各自的内存锁,反之,则创建所述两个识别号的内存锁。
[0053]内存锁是指在应用服务器内存中对数据迁移识别号进行锁定的对象,每一识别号在一个应用服务器中唯一对应一个内存锁,每个内存锁每次只能被一个数据迁移请求使用。当获取到一个识别号后,首先判断内存中是否包含有该识别号唯一对应的内存锁,若没有,则需要利用内存锁创建模块为该识别号创建一个内存锁,若有,则为该识别号申请其唯一对应的内存锁。一般来说,如果一个识别号已经进行过数据迁移,那么应用服务器内存中则会有其唯一对应的内存锁,如果一个识别号是初次进行数据迁移,那么应用服务器内存中则可能内有该识别号对应的内存锁,此时,则需要为该识别号创建内存锁。
[0054]因为同一个识别号可能会在同一时间被提交用于多次数据迁移(即单个识别号并发数据迁移请求数量较多),那么,就可能出现多个数据迁移请求中都包含有该识别号。因为内存锁只有一个,此时,就需要多个数据迁移请求中的该识别号来争抢内存锁。即,需要对内存锁进行申请。
[0055]具体的,申请过程可以采用队列的形式,即根据数据迁移请求发生时间的先后顺序逐一等待。具体的,可以设置内存锁状态,例如,使用和未使用两个状态,或者锁定和未锁定,具体的可以根据实际情况来设定,只要能够表示内存锁是否可用即可。为某一个识别号申请内存锁的具体过程如下:
[0056]获取所述识别号对应的内存锁的当前使用状态,若正在被使用,则等待,若未被使用,则申请获取该内存锁。
[0057]可以理解,为了避免等待时间过长,而在客户端没有响应,优选地,可以设置等待时间阈值,统计所述识别号申请对应的内存锁的等待时间,若超过等待时间阈值,则拒绝本次数据迁移请求。可以直接向客户端返回错误或者提示客户端响应超时等等。
[0058]另外,因为数据迁移请求中会包含数据迁移双方的识别号,可能会出现一个识别号申请到内存锁,而另外一个识别号未申请到内存锁的情况。为了保证数据迁移操作的顺利完成,需要两个识别号都申请到内存锁后才能进行后续操作。因此,若仅有一个识别号申请到内存锁,另外一个识别号申请时等待时间过长,也可以采用前述的返回错误的方式进行处理,即,只要两个识别号任何一个申请时的等待时间超过阈值,则返回错误。
[0059]步骤103,利用申请到的内存锁锁定对应识别号,将所述数据迁移请求发送给数据库,等待数据库处理本次数据迁移请求。
[0060]在数据迁移请求中的双方识别号都申请到内存锁,并被内存锁锁定后,此时,可以按照正常流程,应用服务器向数据库请求建立连接,等待数据库处理本次数据迁移请求,即进行数据迁移操作。[0061]此时,如果数据库连接正在被占用,则需要等待,如果没有,则可以直接进行数据迁移操作。数据库处理本次数据迁移请求的具体过程为:
[0062]获取本次数据迁移请求中数据迁移双方识别号的数据库锁;
[0063]采用数据库锁对数据迁移双方的识别号进行锁定;
[0064]然后根据迁移数值对双方识别号中的数据进行更改并保存;
[0065]最后解除数据库锁对数据迁移双方的识别号的锁定。
[0066]至此,数据库对本次数据迁移请求的处理完成。其中,数据库锁与内存锁类似,与识别号一一对应,如果没有,则创建后再使用。
[0067]例如,在实际处理过程,假设数据迁移请求是转账请求,识别号是指转账双方的账号,迁移数值是指转账金额,那么前述过程可以通过如下方式描述:
[0068]如果a账号需要转账100元给b账号,那么处理过程为:首先利用a账号对应的数据库锁对a账号进行锁定,以及b账号对应的数据库锁对b账号进行锁定;然后,在a账号中的账户余额减去100元,在b账号的账户余额中加上100元,并对修改后的数据进行保存;在对双方账号数据修改并保存后,数据库会解除对数据库锁对a账号和b账号的锁定,并释放各自的数据库锁,若其他转账请求中包含有a账号或b账号,则可以在a账号或b账号对应的数据库锁被释放后使用。
[0069]步骤104,在数据库对本次数据迁移请求处理完成后,解除内存锁对所述数据迁移双方识别号的锁定,释放内存锁。
[0070]解除内存锁对双方识别号的锁定后,可以修改内存锁的使用状态,即释放内存锁,从而将内存锁分配给正在等待的数据迁移请求中的识别号。
[0071]可以理解,前述数据迁移方法中,通过设立的内存锁来对同一识别号并发的数据迁移请求进行处理。因为该同一识别号的内存锁每次只能供一个数据迁移请求使用,那么其余的并发数据迁移请求则需要等待前一数据迁移请求使用完后才能获取。也即,每一个数据迁移请求都需要在内存中进行排列等待,逐个获取内存锁后,才能够通过应用服务器建立与数据库的连接。因此,即使有大量并发的数据迁移请求,也都需要在应用服务器内存中等待,逐一被放行,从而减少了对数据库连接的占用量,提高了数据库的稳定性。另外,即使出现大量并发的数据迁移请求导致应用服务器内存无法承受的时候,也可以通过增加应用服务器的数量的方式来解决,并不会对数据库造成影响,从而大大提高了系统的稳定性,避免系统崩溃。
[0072]优选地,除了采用增加应用服务器或者应用服务器内存的方式来提高对并发数据迁移请求的处理能力外,还可以直接对应用服务器中的内存锁进行配置,即设置每一个内存锁所允许并发数据迁移请求的数量,如果超过设定值,则直接拒绝后续的数据迁移请求,直到等待的数据迁移请求小于设定值后才能再次接受新的数据迁移请求申请内存锁。
[0073]参照图3,示出本申请的数据迁移方法实施例二,在实施例一的步骤102和步骤103之间还可以包括以下步骤:
[0074]步骤301,判断申请所述识别号对应的内存锁并处于等待状态的数据迁移请求数量是否超过申请阈值,若是,则拒绝本次数据迁移请求,反之,则继续等待直到获取内存锁。
[0075]通过此种方式,无需增加应用服务器数量,或者应用服务器内存的容量,可以减少不必要的成本,同时可以保证数据库的连接不被大量的并发数据迁移请求占用,提高数据库以及系统的稳定性。
[0076]优选地,对于前述的数据迁移方法实施例一和二,对于内存锁和识别号的关联关系,可以采用映射表的形式存储,例如每个识别号的内存锁使用支持并发的哈希映射来保存,这样,无论是获取单个识别号的内存锁,还是对内存锁或者识别号进行修改、删除等操作,都不会影响整个映射表。映射表中可以只保存正在进行数据迁移处理的少量识别号即可。在每次数据迁移请求中,增加一个内存锁,其所增加的额外处理时间的时长可以缩短到微秒级,这个时间对于整个数据迁移处理流程来说可以忽略不计。同时,在单个识别号并发数据迁移请求数量较多时,因为减少了对数据库连接的占用,可以提高数据库的响应速度,从而可以大大缩短整个数据迁移处理流程的时间,提高了系统的响应速度。
[0077]下面,结合具体实例对前述方法进行详细说明。本实例中,数据迁移为转账操作,此处的识别号即为账号。假设某一应用共有四个应用服务器和一个数据库,通过应用服务器建立与数据库的连接来将转账请求传递给数据库,并由数据库进行转账处理。
[0078]假设某个账号(账号c)同时有四十个并发转账请求,也即在很短时间内或者同时,共有四十个账号都需要与账号c进行转账操作。可以是别的账号转账给账号C,也可以是账号C转账给别的账号,或者二者兼有。本实例中,以四十个账号同时提出了向账号C进行转账请求为例进行说明。如果按照之前的转账处理方式,那么四个应用服务器则可能同时向数据库提交建立连接的请求,并发送各自从客户端接收到的转账请求。因为四十个转账请求中都包含有账号C,而数据库中对于账号C只有一个数据库锁,也即每次只能处理一个转账请求,剩下的转账请求则需要逐一等待,这些等待的转账请求会占用数据库连接。如果后续继续出现包含有账号C的并发转账请求,那么必然会出现大量占用数据库连接的情况,从而可能导致数据库压力增大,甚至出现崩溃。
[0079]如果采用本申请的数据迁移方法,通过在各应用服务器内存中设置内存锁,假设四十个转账请求通过负载均衡的方式平均分配到了四个应用服务器中,那么每个应用服务器中会接收十个转账请求。假设每个应用服务器中都已经包含了转账双方的账号的内存锁。此时,每个应用服务器中的十个转账请求都会申请获取转账双方账号的内存锁,因为账号C在每个应用服务器中只有一个内存锁,在内存锁未被使用的情况下,十个转账请求中只有一个能够获取到账号C的内存锁,其余九个则需要排队等待。此时,每个应用服务器只能为一个转账请求建立与数据库的连接,那么,占用的数据库连接数最多为四个。可以看出,本申请的转账方法通过在应用服务器中设置内存锁的方式,将排队等待的过程转移到了应用服务器内存中,从而大大减少了单个账号并发请求时给数据库带来的压力。利用应用服务器内存处理并发请求,即使内存无法承受并发请求带来的压力,也可以通过增加应用服务器内存或者增加应用服务器的方法,从而增加了系统的稳定性和抗压能力。
[0080]参照图4,示出了单个识别号并发数据迁移请求数量与系统平均响应时间的关系表,其中,纵坐标表示系统平均响应时间,单位为毫秒(ms),横坐标表示单个识别号并发数据迁移请求数量,单位为个。实线表示采用内存锁与数据库锁结合的数据,虚线表示只采用数据库锁的数据。可以看出,在单个识别号并发数据迁移请求数量较少时,采用内存锁与数据库锁结合相较于只采用数据库锁来说,会增加系统的响应时间,但是二者的响应时间差值较小,因此可以认为影响不大。但是,随着单个识别号并发数据迁移请求数量的增加,采用内存锁与数据库锁结合的方式可以大大降低系统的响应时间,且并发数据迁移请求数量越多,其所能降低的系统响应时间越多。也即,本申请的数据迁移方法对于单个识别号并发数据迁移请求数量较多时,具有较为明显的效果。
[0081]参照图5,示出本申请的数据迁移系统实施例一,包括拦截模块10、内存锁获取模块20、锁定模块30和释放模块40。数据迁移系统可以设置在应用服务器内部,也可以作为独立的模块,采用与应用服务器进行数据交互的方式来实现数据迁移。
[0082]拦截模块10,用于拦截应用服务器所接收的数据迁移请求,并获取所述数据迁移请求中所包含的数据迁移双方的识别号。
[0083]内存锁获取模块20,用于判断应用服务器内存中是否包含所述数据迁移双方识别号的内存锁,若有,则分别为所述两个识别号申请各自的内存锁,反之,则创建所述两个识别号的内存锁。
[0084]优选地,内存锁获取模块包括内存锁使用状态获取单元,用于获取所述识别号对应的内存锁的当前使用状态,若正在被使用,则等待,若未被使用,则申请获取该内存锁。
[0085]可以理解,该内存锁获取模块还可以包括等待时间统计单元,用于统计所述识别号申请对应的内存锁的等待时间,若超过等待时间阈值,则拒绝本次数据迁移请求。
[0086]锁定模块30,用于利用申请到的内存锁锁定对应识别号,将所述数据迁移请求发送给数据库,等待数据库处理本次数据迁移请求。
[0087]释放模块40,用于获取数据库对本次数据迁移请求处理完成的指令,解除内存锁对所述数据迁移双方识别号的锁定,释放内存锁。
[0088]优选地,该系统还包括映射表建立模块,用于在应用服务器内存中建立映射表来存储识别号与对应的内存锁。
[0089]参照图6,示出本申请的数据迁移系统实施例二,该系统还包括数据迁移请求数量统计模块60,用于判断申请所述识别号对应的内存锁并处于等待状态的数据迁移请求数量是否超过申请阈值,若是,则拒绝本次数据迁移请求,反之,则继续等待直到获取内存锁。
[0090]本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0091]本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0092]以上对本申请所提供的数据迁移方法及系统进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
【权利要求】
1.一种数据迁移方法,其特征在于,包括以下步骤: 拦截应用服务器所接收的数据迁移请求,并获取所述数据迁移请求中所包含的数据迁移双方的识别号; 判断应用服务器内存中是否包含所述数据迁移双方识别号的内存锁,若有,则分别为所述两个识别号申请各自的内存锁,反之,则创建所述两个识别号的内存锁; 利用申请到的内存锁锁定对应识别号,将所述数据迁移请求发送给数据库,等待数据库处理本次数据迁移请求; 获取数据库对本次数据迁移请求处理完成的指令,解除内存锁对所述数据迁移双方识别号的锁定,释放内存锁。
2.如权利要求1所述的数据迁移方法,其特征在于,所述分别为所述两个识别号申请各自的内存锁包括: 获取所述识别号对应的内存锁的当前使用状态,若正在被使用,则等待,若未被使用,则申请获取该内存锁。
3.如权利要求2所述的数据迁移方法,其特征在于,所述分别为所述两个识别号申请各自的内存锁还包括: 统计所述识别号申请对应的内存锁的等待时间,若超过等待时间阈值,则拒绝本次数据迁移请求。
4.如权利要求1所述的数据迁移方法,其特征在于,所述数据库处理本次数据迁移请求包括:` 获取本次数据迁移请求中数据迁移双方识别号的数据库锁; 采用数据库锁对所述数据迁移双方识别号进行锁定; 根据迁移数值对双方识别号中的数据进行更改并保存; 解除数据库锁对数据迁移双方识别号的锁定。
5.如权利要求1所述的数据迁移方法,其特征在于,所述识别号与对应的内存锁采用映射表的形式存储在应用服务器内存中。
6.如权利要求1至5任一项所述的数据迁移方法,其特征在于,所述分别为所述两个识别号申请各自的内存锁之后还包括: 判断申请所述识别号对应的内存锁并处于等待状态的数据迁移请求数量是否超过申请阈值,若是,则拒绝本次数据迁移请求反之,则继续等待直到获取内存锁。
7.一种数据迁移系统,其特征在于,包括: 拦截模块,用于拦截应用服务器所接收的数据迁移请求,并获取所述数据迁移请求中所包含的数据迁移双方的识别号; 内存锁获取模块,用于判断应用服务器内存中是否包含所述数据迁移双方识别号的内存锁,若有,则分别为所述两个识别号申请各自的内存锁,反之,则创建所述两个识别号的内存锁; 锁定模块,用于利用申请到的内存锁锁定对应识别号,将所述数据迁移请求发送给数据库,等待数据库处理本次数据迁移请求; 释放模块,用于获取数据库对本次数据迁移请求处理完成的指令,解除内存锁对所述数据迁移双方识别号的锁定,释放内存锁。
8.如权利要求7所述的数据迁移系统,其特征在于,所述内存锁获取模块包括: 内存锁使用状态获取单元,用于获取所述识别号对应的内存锁的当前使用状态,若正在被使用,则等待,若未被使用,则申请获取该内存锁。
9.如权利要求8所述的数据迁移系统,其特征在于,所述内存锁获取模块还包括: 等待时间统计单元,用于统计所述识别号申请对应的内存锁的等待时间,若超过等待时间阈值,则拒绝本次数据迁移请求。
10.如权利要求7所述的数据迁移系统,其特征在于,所述系统还包括: 映射表建立模块,用于在应用服务器内存中建立映射表来存储识别号与对应的内存锁。
11.如权利要求7至10任一项所述的数据迁移系统,其特征在于,所述系统还包括: 数据迁移请求数量统计模块,用于判断申请所述识别号对应的内存锁并处于等待状态的数据迁移请求数量是否超过`申请阈值,若是,则拒绝本次数据迁移请求。
【文档编号】G06F17/30GK103514164SQ201210201198
【公开日】2014年1月15日 申请日期:2012年6月15日 优先权日:2012年6月15日
【发明者】李铮 申请人:阿里巴巴集团控股有限公司