CN104933065A - 一种合服的方法和装置 - Google Patents
一种合服的方法和装置 Download PDFInfo
- Publication number
- CN104933065A CN104933065A CN201410103229.8A CN201410103229A CN104933065A CN 104933065 A CN104933065 A CN 104933065A CN 201410103229 A CN201410103229 A CN 201410103229A CN 104933065 A CN104933065 A CN 104933065A
- Authority
- CN
- China
- Prior art keywords
- database
- record
- conjunction
- extracting
- write
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种合服的方法和装置,其中,合服的方法包括:通过合服工具连接第一数据库、第二数据库以及第三数据库;在第一数据库与第二数据库运行过程中,通过合服工具按照预先设定的提取规则,逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入第三数据库中;直至第一数据库与第二数据库中的记录全部写入第三数据库中;当停服时,通过合服工具仅对第三数据库中满足替换规则的记录进行替换;其中,满足替换规则的记录为在设定时间周期内在第一数据库与所述第二数据库中有过修改的记录。通过本发明,能够缩短停服的时间降低网络游戏的运营成本。
Description
技术领域
本发明涉及数据库管理技术领域,特别是涉及一种合服的方法和装置。
背景技术
合服是一种将两台在线游戏玩家数量不多的网络游戏服务器所维护的数据库进行合并,以提高网络游戏服务器的在线人数的技术手段。在进行合服操作时,不单可以将分属于不同网络游戏服务器的数据库进行合并,还可以将同一网络游戏服务器维护的两个数据库进行合并。通过合服可以将两台或多台网络游戏服务器维护的数据库通过一台网络游戏服务器进行维护,或者是减少网络游戏服务器维护的数据库个数,从而降低网络游戏服务器的运行成本。
现有的一种合服方法为:先停止网络游戏服务器的运行,再对网络游戏服务器所维护的数据库进行合并,即停服维护。这样的合服方法在合并小规模的数据库时是可以的,而随着网络游戏服务器维护的数据库的规模逐渐增大,使用现有的合服方法进行合服时,停服时间需要长达16小时。而在停服的过程中网络游戏服务器不能够处理游戏进程,那么游戏玩家就无法进行游戏操作,停服如此长的时间会给游戏玩家带来不便。同时,由于长时间停服,在此期间服务器无法处理游戏玩家购买装备等一系列为网络游戏带来收益的操作,从而影响了网络游戏的收益,变相增加了网络游戏的运营成本。
发明内容
本发明提供了一种合服的方法和装置,以解决现有的合服方法在合服时需要长时间停服,给游戏玩家带来不便以及增加网络游戏运营成本的问题。
为了解决上述问题,本发明公开了一种合服的方法,包括:通过合服工具连接第一数据库、第二数据库以及第三数据库;在所述第一数据库与所述第二数据库运行过程中,通过所述合服工具按照预先设定的提取规则,逐条将所述第一数据库与所述第二数据库中的记录进行加锁、提取并写入所述第三数据库中;直至所述第一数据库与所述第二数据库中的记录全部写入所述第三数据库中;当停服时,通过所述合服工具仅对所述第三数据库中满足替换规则的记录进行替换;其中,满足替换规则的记录为在设定时间周期内在所述第一数据库与所述第二数据库中有过修改的记录。
优选地,所述逐条将所述第一数据库与所述第二数据库中的记录进行的加锁、提取并写入所述第三数据库中步骤包括:当从所述第一数据库或所述第二数据库中读取记录时,对读取的当前记录加锁,以禁止修改当前记录;加锁完成后提取当前记录,提取完成后将当前记录进行解锁,在解锁的同时将提取的当前记录写入所述第三数据库中;并在当前记录写入所述第三数据库中后,再对下一条待读取的记录加锁。
优选地,所述第一数据库与所述第二数据库中均存储有多个网络游戏玩家的在线信息;所述通过所述合服工具按照预先设定的提取规则,逐条将所述第一数据库与所述第二数据库中的记录进行加锁、提取并写入所述第三数据库中步骤包括:当所述第一数据库与所述第二数据库中的网络游戏玩家在线信息指示在线的网络游戏玩家的数量小于设定阈值时,通过所述合服工具连续地、逐条将所述第一数据库与所述第二数据库中的记录进行加锁、提取并写入所述第三数据库中;和/或,当所述第一数据库与所述第二数据库中的网络游戏玩家在线信息指示在线的网络游戏玩家的数量大于或等于设定阈值时,按照设定的时间间隔逐条将所述第一数据库与所述第二数据库中的记录进行加锁、提取并写入所述第三数据库中。
优选地,在所述通过所述合服工具仅对所述第三数据库中满足替换规则的记录进行替换步骤之前,还包括:当修改所述第一数据库与所述第二数据库中的记录时,为修改过的每条记录生成对应的修改标识。
优选地,所述通过所述合服工具仅对所述第三数据库中满足替换规则的记录进行替换步骤包括:通过合服工具搜索所述第一数据库与所述第二数据库中在设定时间周期内生成的修改标识,获取与所述搜索到的修改标识对应的记录;搜索所述第三数据库中与获取的所述记录相对应的原始记录,使用从所述第一数据库和所述第二数据库中获取的所述记录替换所述第三数据库中对应的原始记录。
为了解决上述问题,本发明还公开了一种合服的装置,包括:连接模块,用于通过合服工具连接第一数据库、第二数据库以及第三数据库;提取模块,用于在所述第一数据库与所述第二数据库运行过程中,通过所述合服工具按照预先设定的提取规则,逐条将所述第一数据库与所述第二数据库中的记录进行加锁、提取并写入所述第三数据库中;直至所述第一数据库与所述第二数据库中的记录全部写入所述第三数据库中;替换模块,用于当停服时,通过所述合服工具仅对所述第三数据库中满足替换规则的记录进行替换;其中,满足替换规则的记录为在设定时间周期内在所述第一数据库与所述第二数据库中有过修改的记录。
优选地,所述提取模块逐条将所述第一数据库与所述第二数据库中的记录进行的加锁、提取并写入所述第三数据库中时:当从所述第一数据库或所述第二数据库中读取记录时,对读取的当前记录加锁,以禁止修改当前记录;加锁完成后提取当前记录,提取完成后将当前记录进行解锁,在解锁的同时将提取的当前记录写入所述第三数据库中;并在当前记录写入所述第三数据库中后,再调用所述加锁子模块对下一条待读取的记录加锁。
优选地,所述第一数据库与所述第二数据库中均存储有多个网络游戏玩家的在线信息;所述提取模块通过所述合服工具按照预先设定的提取规则,逐条将所述第一数据库与所述第二数据库中的记录进行加锁、提取并写入所述第三数据库中时:当所述第一数据库与所述第二数据库中的网络游戏玩家在线信息指示在线的网络游戏玩家的数量小于设定阈值时,通过所述合服工具连续地、逐条将所述第一数据库与所述第二数据库中的记录进行加锁、提取并写入所述第三数据库中;和/或,当所述第一数据库与所述第二数据库中的网络游戏玩家在线信息指示在线的网络游戏玩家的数量大于或等于设定阈值时,按照设定的时间间隔逐条将所述第一数据库与所述第二数据库中的记录进行加锁、提取并写入所述第三数据库中。
优选地,所述合服装置还包括:标识生成模块,用于在所述替换模块通过所述合服工具仅对所述第三数据库中满足替换规则的记录进行替换之前,当修改所述第一数据库与所述第二数据库中的记录时,为修改过的每条记录生成对应的修改标识。
优选地,所述替换模块包括:搜索子模块,用于通过合服工具搜索所述第一数据库与所述第二数据库中在设定时间周期内生成的修改标识,获取与所述搜索到的修改标识对应的记录;原始记录替换子模块,用于搜索所述第三数据库中与获取的所述记录相对应的原始记录,使用从所述第一数据库和所述第二数据库中获取的所述记录替换所述第三数据库中对应的原始记录。
与现有技术相比,本发明具有以下优点:
本发明提供的合服方案,服务器在第一数据库与第二数据库运行的过程中,通过合服工具逐条将两个数据库中的记录全部写入第三数据库中;仅需要停服,对第三数据库中存储的在设定时间周期内有过修改的记录进行替换,从而保证第三数据库中的记录都是最新的,例如:可以将时间周期设定为一周。本发明提供的合服方案,由于合服过程中向第三数据库写入记录的操作是在线进行的,仅有对第三数据库中的部分数据进行替换是停服进行的,因此相比现有的合服方案整个合服操作都要停服进行,缩短了停服的时间;而缩短了停服的时间也就相当于缩短了游戏玩家不能进行游戏操作的时间,因而降低了对网络游戏的收益的影响,进而降低了网络游戏的运营成本。
附图说明
图1是根据本发明实施例一的一种合服的方法的步骤流程图;
图2是根据本发明实施例二的一种合服的方法的步骤流程图;
图3是根据本发明实施例三的一种合服的装置的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
实施例一
参照图1,示出了根据本发明实施例一的一种合服的方法的步骤流程图。
本实施例的合服的方法步骤包括:
步骤S102:服务器通过合服工具连接第一数据库、第二数据库以及第三数据库。
其中,第一数据库、第二数据库以及第三数据库可以是同一台服务器上的三个数据库,也可以不是同一台服务器上三个数据库。当三个数据库不在同一台服务器上时,一般情况下,第二数据库与第三数据库在一台服务器上,第一数据库在另一台服务器上,当然第三数据库也可以与第一数据库在同一台服务器上,第二数据库在另一台服务器上。
本实施例中的合服工具安装于第一数据库所在的服务器上,合服工具包含一个进程,该进程独立于服务器中的其他进程例如游戏进程。合服工具通过该进程可以连接第一数据库、第二数据库以及第三数据库,进行记录的读取与写入操作。
步骤S104:在第一数据库与第二数据库运行过程中,服务器通过合服工具按照预先设定的提取规则,逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入第三数据库中;直至第一数据库与第二数据库中的记录全部写入第三数据库中。
本实施例中对记录的写入顺序可以由本领域技术人员根据实际需求进行设定。例如,可以设定为服务器通过合服工具先逐条将第一数据库中的记录进行加锁、提取并写入第三数据库中,待第一数据库中的全部记录写入第三数据库中后,再逐条将第二数据库中的记录进行加锁、提取并写入第三数据库中;再例如,还可以设定为服务器通过合服工具交叉着、逐条从第一数据库与第二数据库中对记录进行加锁、提取并写入第三数据库中。当然,其它的可以满足需求的设定方式也同样适用,在此不再一一列举。
本领域技术人员不但可以根据实际需求设定记录的写入顺序,还可以根据实际需求设定提取规则,例如:本领域技术人员可以设定在某一时间段内进行记录的提取,而在某一时间段内不对记录进行提取;更加详细的本领域技术人员还可以对提取每条记录时的时间间隔进行设定,如设定时间间隔为每隔1秒钟提取一条记录。再例如:本领域技术人员还可以将提取规则设定为一直连续地提取记录,在本实施例中对提取规则不作具体的限制。
步骤S106:当停服时,服务器通过合服工具仅对第三数据库中满足替换规则的记录进行替换。
其中,满足替换规则的记录为在设定时间周期内在第一数据库与第二数据库中有过修改的记录。
因为在向第三数据库中写入记录的过程中,第一数据库与第二数据库是正在运行的,而此时在第一数据库与第二数据库中存储的,已经写入第三数据库中的部分记录可能会有修改,那么为了保证合服后的第三数据库中的记录是最新的,就需要停服对第三数据库中的这部分记录进行替换,将其替换为最新的记录。
为使描述更加简明清楚,下面以举例的形式对第三数据库中的记录替换进行一下描述:
例如:有三个数据库分别为源服数据库、目标服数据库以及最终数据库,在源服数据库即第一数据库中存储有活跃的网络游戏玩家对应的数据A和B,不活跃的玩家对应的数据C和D;在目标服数据库即第二数据库中存储有活跃的网络游戏玩家对应的数据E和F,不活跃的网络游戏玩家对应的数据G和H,上述数据库中的每个数据都是由多条记录组成。那么对两个数据库进行合服时:
首先,第一阶段数据库在运行过程中,源服务器通过合服工具逐条将两个数据库中存储的数据A、B、C、D、E、F、G和H写入最终数据库即第三数据库中。假设整个写入过程用了7天,在写入完之后就进行了停服。在这7天内由于源服数据库与目标服数据库在运行,那么活跃的网络游戏玩家就会在此期间进行登录,其对应的数据A、B、E和F也就有可能在被写入最终数据库之后又被修改过,而活跃的网络游戏玩家对应的数据在最终数据库中的还是原始的数据。
因此就需要进入合服的下一阶段即第二阶段,该阶段是在停服时进行的;在该阶段中源服务器直接通过合服工具将最终数据库中的原始数据A、B、E、F均对应替换成修改后的数据,而由于不活跃的网络游戏玩家在此期间没有进行登录,那么就无需替换最终数据库中的不活跃的网络游戏玩家的原始数据C、D、G、H。
再如:在第一数据库中存储有一条标识为a用于指示用户枪支个数为10的记录,服务器将这条记录写入到了第三数据库中;而在合服还未完成前,第一数据库中的这条记录有了修改,修改为指示用户枪支个数为11,那么在停服时,服务器就会将第三数据库中存储的标识为a的记录替换成指示用户枪支个数为11的记录。
在描述完记录的替换后,再对设定的时间周期进行一下简单介绍。本实施例中对于时间周期的设定不作具体的限制,设定的时间周期可以为五天、一周或者是其他时间周期;在设定周期时,只要能够保证替换后的第三数据库中的记录都是最新的记录即可。
通过本实施例提供的合服方法,服务器在第一数据库与第二数据库运行的过程中,通过合服工具逐条将两个数据库中的记录全部写入第三数据库中;仅需要停服对第三数据库中存储的在设定周期内有过修改的记录进行替换,从而保证第三数据库中的记录都是最新的。通过本发明提供的合服方法,由于合服过程中向第三数据库写入记录的操作是在线进行的,仅有对第三数据库中的部分数据进行替换是停服进行的,因此相比现有的合服方法整个合服操作都要停服进行,缩短了停服的时间;而缩短了停服的时间也就相当于缩短了游戏玩家不能进行游戏操作的时间,因而降低了对网络游戏的收益的影响,进而降低了网络游戏的运营成本。
实施例二
参照图2,示出了根据本发明实施例二的一种合服的方法的步骤流程图。
本实施例以网络游戏服务器为例对本申请的合服的方法进行详细的描述,本实施例的合服的方法的具体步骤包括:
步骤S202:服务器通过合服工具连接第一数据库、第二数据库以及第三数据库。
第一数据库与第二数据库中均存储有多个网络游戏玩家的在线信息。通过这些在线信息可以获得各数据库在任意时刻的在线网络游戏玩家数量。
步骤S204:在第一数据库与第二数据库运行过程中,服务器通过合服工具按照预先设定的提取规则,逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入第三数据库中;直至第一数据库与第二数据库中的记录全部写入第三数据库中。
需要说明的是,提取规则可以由本领域技术人员根据实际情况进行设定。在设定提取规则时,可以通过对时间段进行划分,设定在不同的时间段按照不同的提取频率提取记录;也可以根据数据库中在线的网络游戏玩家的数量情况设定提取频率,本申请中对提取规则的设定不作具体限制。下面列举几个比较具有实用性的提取规则:
第一种提取规则:设定一个阈值,当第一数据库与第二数据库中的网络游戏玩家在线信息指示在线的网络游戏玩家的数量小于设定阈值时,通过合服工具连续地、逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入第三数据库中;当第一数据库与第二数据库中的网络游戏玩家在线信息指示在线的网络游戏玩家的数量大于或等于设定阈值时,按照设定的时间间隔逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入第三数据库中。
其中,阈值的设定可以根据实际情况进行设定,设定阈值的目的是为了区分游戏高峰时期与非高峰时期。当两个数据库中的在线游戏玩家数量大于或等于设定阈值时,则说明此时正处于游戏高峰时期,那么为了不影响游戏玩家进行游戏操作,在不增加数据库的负载的情况下设定一个时间间隔,按照这个时间间隔来逐条提取数据库中的记录。
第二种提取规则:依然是设定一个阈值,当第一数据库与第二数据库中的网络游戏玩家在线信息指示在线的网络游戏玩家的数量小于设定阈值时,通过合服工具连续地、逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入第三数据库中;而当第一数据库与第二数据库中的网络游戏玩家在线信息指示在线的网络游戏玩家的数量大于或等于设定阈值时,则停止逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入第三数据库中的操作。
第三种提取规则:不设定阈值,只设定提取每条记录的时间间隔,一直按照设定的时间间隔逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入第三数据库中。
第四种提取规则:依据经验设定游戏高峰时间段,在游戏高峰时间段内,按照设定的时间间隔逐条提取记录。例如:游戏高峰时间段可以设为晚上八点至九点,时间间隔可以设定为1秒。
上面仅是列举了几种提取规则,但本领域技术人员应该明确提取规则并不局限于此。
本实施例中就是采用上述第一种提取规则逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入第三数据库中的。采用本实施例中的提取规则在不增加数据库负载的同时,又能够保证采用较短时间完成记录的提取与写入。
本实施例中采用上述提取规则逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入第三数据库中具体包括以下子步骤:
步骤S2042:服务器通过合服工具从第一数据库或第二数据库中读取一条记录。
数据库中的数据都是以数据表的形式存储的,而数据表的每行为一条记录,本实施例中在读取数据时,以数据表为单位逐行的读取数据,也就相当于逐条读取记录。
步骤S2044:服务器通过合服工具对读取的当前记录加锁。
当服务器通过合服工具从第一数据库或第二数据库中读取记录时,对读取的当前记录加锁,以禁止修改当前记录。
步骤S2046:当加锁完成后,服务器通过合服工具提取当前记录,提取完成后将当前记录进行解锁,在解锁的同时将提取的当前记录写入第三数据库中,返回步骤S2046。
通过上述步骤S2042至步骤S2046只是对一条记录进行加锁、提取、写入第三数据库,在当前记录写入第三数据库中后,服务器还要通过合服工具再对下一条待读取的记录加锁,因此要继续返回步骤S2042,循环重复执行步骤S2042至步骤S2046,直至第一数据库与第二数据库中的记录全部写入第三数据库中。
采用本实施例中的提取方法,先读取记录,再对读取的记录进行加锁,加锁完成后再提取记录,每提取完一条记录就将锁释放,即将记录进行解锁,因此在提取记录的过程中不会发生死锁导致记录不可读的情况。
本实施例中在逐条加锁、提取写入记录时,采用从第一数据库中提取一条记录写入第三数据库中后,在从第二数据库中提取一条记录这样的交叉提取的方式进行的记录的提取,最终将第一数据库与第二数据库中的记录全部写入第三数据库中。
步骤S206:服务器当修改第一数据库与第二数据库中的记录时,为修改过的每条记录生成对应的修改标识。
在从第一数据库与第二数据库中提取记录写入第三数据库的过程中,由于第一数据库与第二数据库在正常运行,部分活跃的网络游戏玩家会继续在此期间进行网络游戏,那么这部分活跃的网络游戏玩家所对应的记录在数据库中就会有修改。服务器为了区分修改与未修改的记录,当修改第一数据库与第二数据库中的记录时,为修改过的每条记录生成对应的修改标识。
需要说明的是,本实施例中是为每条修改的记录都生成修改的标识,本领域技术人员还以通过相关配置,将服务器配置为以网络游戏玩家即用户为单位,为每个用户设定一个标识,当该用户所对应的记录在数据库中有修改时即用户登录进行游戏操作时,将该用户的标识后面生成一个修改标识,这样就可以区分用户对应的记录是否发生过修改。
当然在设定修改标识时,还可以采用在修改标识后加后缀的方式,来定义修改标识的生成时间,就能够通过修改标识获知该修改是在什么时间发生的,进一步通过修改标识搜索某一时间周期内发生修改的记录或用户。本申请中设置修改标识的目的是:区分修改与未修改的记录以及各条记录修改的时间,对于具体的实现的方式本申请不作具体的限制,本领域技术人员可以根据实际需求选择合适的方式来实现上述区分。但是所有运用到本申请所要求保护的将修改与未修改的记录进行区分,以及区分各条记录修改的时间的构思的方案均应属于本申请所要求保护的范围。
需要说明的是,步骤S206并不局限于在步骤S204之后执行,在执行步骤S204和S202的同时、或执行步骤S202之前,服务器也可以执行步骤S206。只要数据库中的记录发生修改服务器就会执行步骤S206。
本实施例中的合服过程分为两个部分:一个部分正如步骤S202至步骤S206所描述的内容,是将第一数据库与第二数据库中的记录全部写入第三数据库的部分,该部分是在数据库运行过程中进行的,为线上合服部分;该部分在尽可能不增加数据库负载的情况下,缓慢的将两个数据库中的数据转移到一个新的数据库即第三数据库中。另一个部分就是下面所要详细描述的步骤S208与步骤S210,该部分是对第三数据库进行修复,对第三数据库进行修复时需要停服进行。
步骤S208:当停服时,服务器通过合服工具搜索第一数据库与第二数据库中在设定时间周期内生成的修改标识,获取与搜索到的修改标识对应的记录。
其中,时间周期可以由本领域技术人员根据实际情况进行设定,在设定时间周期时,只要能保证替换后的第三数据库中的记录都是最新记录即可。例如:如果从开始合服至停服时间周期为5天,那么可以将时间周期设定为5天或者更长,如7天。在步骤S206中服务器已经为修改过的每条记录生成对应的修改标识,那么通过这些修改标识,仅搜索7天内生成的修改标识,获取与搜索到的标识对应的记录即可。
步骤S210:服务器通过合服工具搜索第三数据库中与获取的记录相对应的原始记录,使用从第一数据库和第二数据库中获取的记录替换第三数据库中对应的原始记录。
在获取到第一数据库与第二数据库中在设定时间周期内发生修改的记录后,服务器通过合服工具搜索第三数据库中与获取的修改后的记录相对应的原始记录;其中,原始记录为在未修改前写入第三数据库中的记录。
对第三数据库中的原始记录进行搜索时,一种优选的方法是,通过每条记录对应的标识来进行搜索;定义在第一数据库与第二数据库中的每条记录都对应一个原始标识,那么将记录写入第三数据库的同时将原始标识也会对应写入第三数据库中;当第一数据库与第二数据库中的记录发生修改时,一种方案是,不改变其原始标识,只是在原始标识后生成修改标识,另一种方案是将原始标识进行替换,但是通过修改标识依然可以获知其所对应的原始标识。那么通过修改的记录对应的原始标识就可以对第三数据库中的原始记录进行搜索。
在搜索完成后,将所有搜索到的原始记录对应替换成修改后的记录。通过这样的替换,就完成了第三数据库的更新,保证了第三数据库中都是最新的记录。
本实施例中的合服工具其作用不再是像传统的合服工具那样,操作于全部的数据库数据,而是仅操作于最近一段时间有过修改的网络游戏玩家数据,在第三数据库上对这部分网络游戏玩家数据进行修复,以完成整个合服过程。
通过本实施例提供的合服的方法,在从第一数据库与第二数据库中提取记录将提取的记录写入第三数据库的操作是在线进行的,并且从第一数据库与第二数据库中提取记录是在不增加数据库的负载的基础上进行的,既不影响网络游戏玩家进行网络游戏的操作,又能够将记录全部写入第三数据库中;仅有对第三数据库中的部分数据进行替换是停服进行的,采用本实施例提供的合服的方法,相比现有的合服方法整个合服操作都要停服进行,缩短了停服的时间。也就相当于,通过本实施例提供的合服方法,缩短了游戏玩家不能进行游戏操作的时间,因而降低了对网络游戏的收益的影响,进而降低了网络游戏的运营成本。
实施例三
参照图3,示出了本发明实施例三中的一种合服的装置的结构框图。
本实施例的合服的装置包括:连接模块302,用于通过合服工具连接第一数据库、第二数据库以及第三数据库;提取模块304,用于在第一数据库与第二数据库运行过程中,通过合服工具按照预先设定的提取规则,逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入第三数据库中;直至第一数据库与第二数据库中的记录全部写入第三数据库中;替换模块306,用于当停服时,通过合服工具仅对第三数据库中满足替换规则的记录进行替换;其中,满足替换规则的记录为在设定时间周期内在第一数据库与第二数据库中有过修改的记录。
优选地,提取模块304逐条将第一数据库与第二数据库中的记录进行的加锁、提取并写入第三数据库中时:当从第一数据库或第二数据库中读取记录时,对读取的当前记录加锁,以禁止修改当前记录;加锁完成后提取当前记录,提取完成后将当前记录进行解锁,在解锁的同时将提取的当前记录写入第三数据库中;并在当前记录写入第三数据库中后,再调用加锁子模块对下一条待读取的记录加锁。
优选地,第一数据库与第二数据库中均存储有多个网络游戏玩家的在线信息;提取模块304通过合服工具按照预先设定的提取规则,逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入第三数据库中时:当第一数据库与第二数据库中的网络游戏玩家在线信息指示在线的网络游戏玩家的数量小于设定阈值时,通过合服工具连续地、逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入所述第三数据库中;和/或,当第一数据库与第二数据库中的网络游戏玩家在线信息指示在线的网络游戏玩家的数量大于或等于设定阈值时,按照设定的时间间隔逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入第三数据库中。
优选地,本实施例中的合服的装置还包括:标识生成模块308,用于在替换模块306通过合服工具仅对第三数据库中满足替换规则的记录进行替换之前,当修改第一数据库与第二数据库中的记录时,为修改过的每条记录生成对应的修改标识。
优选地,替换模块306包括:搜索子模块3062,用于通过合服工具搜索第一数据库与第二数据库中在设定时间周期内生成的修改标识,获取与搜索到的修改标识对应的记录;原始记录替换子模块3064,用于搜索第三数据库中与获取的记录相对应的原始记录,使用从第一数据库和第二数据库中获取的记录替换所述第三数据库中对应的原始记录。
本实施例的合服的装置用于实现前述多个方法实施例中相应的合服的方法,并且具有相应的方法实施的有益效果,在此不再赘述。
本发明提供了一种使用小步慢跑进行合服的方案,该方案是一种在线合服的方案,在该方案中将合服分为两个部分,第一个部分为线上合服部分,即在尽可能不增加数据库负载的情况下,缓慢的将两个数据库的数据转移到一个新的数据库即第三数据库中,第二部分为对新的数据库进行修复的部分,即对新的数据库在停服维护期间进行一次修复即完成整个合服过程。通过本发明提供的合服的方案,仅需要停服4至6个小时即可,相比现有的合服方案,要停服长达16个小时,缩短了停服的时间。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的合服的方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种合服的方法,其特征在于,包括:
通过合服工具连接第一数据库、第二数据库以及第三数据库;
在所述第一数据库与所述第二数据库运行过程中,通过所述合服工具按照预先设定的提取规则,逐条将所述第一数据库与所述第二数据库中的记录进行加锁、提取并写入所述第三数据库中;直至所述第一数据库与所述第二数据库中的记录全部写入所述第三数据库中;
当停服时,通过所述合服工具仅对所述第三数据库中满足替换规则的记录进行替换;其中,满足替换规则的记录为在设定时间周期内在所述第一数据库与所述第二数据库中有过修改的记录。
2.根据权利要求1所述的方法,其特征在于,所述逐条将所述第一数据库与所述第二数据库中的记录进行的加锁、提取并写入所述第三数据库中步骤包括:
当从所述第一数据库或所述第二数据库中读取记录时,对读取的当前记录加锁,以禁止修改当前记录;
加锁完成后提取当前记录,提取完成后将当前记录进行解锁,在解锁的同时将提取的当前记录写入所述第三数据库中;并在当前记录写入所述第三数据库中后,再对下一条待读取的记录加锁。
3.根据权利要求1或2所述的方法,其特征在于,所述第一数据库与所述第二数据库中均存储有多个网络游戏玩家的在线信息;
所述通过所述合服工具按照预先设定的提取规则,逐条将所述第一数据库与所述第二数据库中的记录进行加锁、提取并写入所述第三数据库中步骤包括:
当所述第一数据库与所述第二数据库中的网络游戏玩家在线信息指示在线的网络游戏玩家的数量小于设定阈值时,通过所述合服工具连续地、逐条将所述第一数据库与所述第二数据库中的记录进行加锁、提取并写入所述第三数据库中;和/或,
当所述第一数据库与所述第二数据库中的网络游戏玩家在线信息指示在线的网络游戏玩家的数量大于或等于设定阈值时,按照设定的时间间隔逐条将所述第一数据库与所述第二数据库中的记录进行加锁、提取并写入所述第三数据库中。
4.根据权利要求1所述的方法,其特征在于,在所述通过所述合服工具仅对所述第三数据库中满足替换规则的记录进行替换步骤之前,还包括:
当修改所述第一数据库与所述第二数据库中的记录时,为修改过的每条记录生成对应的修改标识。
5.根据权利要求4所述的方法,其特征在于,所述通过所述合服工具仅对所述第三数据库中满足替换规则的记录进行替换步骤包括:
通过合服工具搜索所述第一数据库与所述第二数据库中在设定时间周期内生成的修改标识,获取与所述搜索到的修改标识对应的记录;
搜索所述第三数据库中与获取的所述记录相对应的原始记录,使用从所述第一数据库和所述第二数据库中获取的所述记录替换所述第三数据库中对应的原始记录。
6.一种合服的装置,其特征在于,包括:
连接模块,用于通过合服工具连接第一数据库、第二数据库以及第三数据库;
提取模块,用于在所述第一数据库与所述第二数据库运行过程中,通过所述合服工具按照预先设定的提取规则,逐条将所述第一数据库与所述第二数据库中的记录进行加锁、提取并写入所述第三数据库中;直至所述第一数据库与所述第二数据库中的记录全部写入所述第三数据库中;
替换模块,用于当停服时,通过所述合服工具仅对所述第三数据库中满足替换规则的记录进行替换;其中,满足替换规则的记录为在设定时间周期内在所述第一数据库与所述第二数据库中有过修改的记录。
7.根据权利要求6所述的装置,其特征在于,所述提取模块逐条将所述第一数据库与所述第二数据库中的记录进行的加锁、提取并写入所述第三数据库中时:
当从所述第一数据库或所述第二数据库中读取记录时,对读取的当前记录加锁,以禁止修改当前记录;
加锁完成后提取当前记录,提取完成后将当前记录进行解锁,在解锁的同时将提取的当前记录写入所述第三数据库中;并在当前记录写入所述第三数据库中后,再调用所述加锁子模块对下一条待读取的记录加锁。
8.根据权利要求6或7所述的装置,其特征在于,所述第一数据库与所述第二数据库中均存储有多个网络游戏玩家的在线信息;
所述提取模块通过所述合服工具按照预先设定的提取规则,逐条将所述第一数据库与所述第二数据库中的记录进行加锁、提取并写入所述第三数据库中时:
当所述第一数据库与所述第二数据库中的网络游戏玩家在线信息指示在线的网络游戏玩家的数量小于设定阈值时,通过所述合服工具连续地、逐条将所述第一数据库与所述第二数据库中的记录进行加锁、提取并写入所述第三数据库中;和/或,
当所述第一数据库与所述第二数据库中的网络游戏玩家在线信息指示在线的网络游戏玩家的数量大于或等于设定阈值时,按照设定的时间间隔逐条将所述第一数据库与所述第二数据库中的记录进行加锁、提取并写入所述第三数据库中。
9.根据权利要求6所述的装置,其特征在于,所述合服装置还包括:
标识生成模块,用于在所述替换模块通过所述合服工具仅对所述第三数据库中满足替换规则的记录进行替换之前,当修改所述第一数据库与所述第二数据库中的记录时,为修改过的每条记录生成对应的修改标识。
10.根据权利要求9所述的装置,其特征在于,所述替换模块包括:
搜索子模块,用于通过合服工具搜索所述第一数据库与所述第二数据库中在设定时间周期内生成的修改标识,获取与所述搜索到的修改标识对应的记录;
原始记录替换子模块,用于搜索所述第三数据库中与获取的所述记录相对应的原始记录,使用从所述第一数据库和所述第二数据库中获取的所述记录替换所述第三数据库中对应的原始记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410103229.8A CN104933065A (zh) | 2014-03-19 | 2014-03-19 | 一种合服的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410103229.8A CN104933065A (zh) | 2014-03-19 | 2014-03-19 | 一种合服的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104933065A true CN104933065A (zh) | 2015-09-23 |
Family
ID=54120233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410103229.8A Pending CN104933065A (zh) | 2014-03-19 | 2014-03-19 | 一种合服的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104933065A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105521605A (zh) * | 2015-12-09 | 2016-04-27 | 网易(杭州)网络有限公司 | 一种网络游戏服务器合并的筛选方法及装置 |
CN107172086A (zh) * | 2017-06-30 | 2017-09-15 | 北京畅游天下网络技术有限公司 | 一种登录方法、装置及系统 |
CN108932267A (zh) * | 2017-05-26 | 2018-12-04 | 北京畅游天下网络技术有限公司 | 一种数据迁移方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1295298A (zh) * | 1999-11-05 | 2001-05-16 | 数字网站公司 | 用于合并因特网服务公司的数据库的方法 |
CN101893821A (zh) * | 2009-05-22 | 2010-11-24 | 中芯国际集成电路制造(北京)有限公司 | 对数据库进行光学邻近修正的方法 |
US20110167055A1 (en) * | 2006-08-25 | 2011-07-07 | Teradata Us, Inc. | Hardware accelerated reconfigurable processor for accelerating database operations and queries |
US20120259889A1 (en) * | 2008-03-20 | 2012-10-11 | Darpan Dinker | Scalable Database Management Software on a Cluster of Nodes Using a Shared-Distributed Flash Memory |
US20120303597A1 (en) * | 2011-05-24 | 2012-11-29 | Red Lambda, Inc. | System and Method for Storing Data Streams in a Distributed Environment |
CN103294724A (zh) * | 2012-03-05 | 2013-09-11 | 百度在线网络技术(北京)有限公司 | 一种数据库结构的管理方法及系统 |
CN103348557A (zh) * | 2011-01-13 | 2013-10-09 | 迪亚能源公司 | 现场响应系统 |
-
2014
- 2014-03-19 CN CN201410103229.8A patent/CN104933065A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1295298A (zh) * | 1999-11-05 | 2001-05-16 | 数字网站公司 | 用于合并因特网服务公司的数据库的方法 |
US20110167055A1 (en) * | 2006-08-25 | 2011-07-07 | Teradata Us, Inc. | Hardware accelerated reconfigurable processor for accelerating database operations and queries |
US20120259889A1 (en) * | 2008-03-20 | 2012-10-11 | Darpan Dinker | Scalable Database Management Software on a Cluster of Nodes Using a Shared-Distributed Flash Memory |
CN101893821A (zh) * | 2009-05-22 | 2010-11-24 | 中芯国际集成电路制造(北京)有限公司 | 对数据库进行光学邻近修正的方法 |
CN103348557A (zh) * | 2011-01-13 | 2013-10-09 | 迪亚能源公司 | 现场响应系统 |
US20120303597A1 (en) * | 2011-05-24 | 2012-11-29 | Red Lambda, Inc. | System and Method for Storing Data Streams in a Distributed Environment |
CN103294724A (zh) * | 2012-03-05 | 2013-09-11 | 百度在线网络技术(北京)有限公司 | 一种数据库结构的管理方法及系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105521605A (zh) * | 2015-12-09 | 2016-04-27 | 网易(杭州)网络有限公司 | 一种网络游戏服务器合并的筛选方法及装置 |
CN105521605B (zh) * | 2015-12-09 | 2019-05-03 | 网易(杭州)网络有限公司 | 一种网络游戏服务器合并的筛选方法及装置 |
CN108932267A (zh) * | 2017-05-26 | 2018-12-04 | 北京畅游天下网络技术有限公司 | 一种数据迁移方法及系统 |
CN107172086A (zh) * | 2017-06-30 | 2017-09-15 | 北京畅游天下网络技术有限公司 | 一种登录方法、装置及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Badampudi et al. | Experiences from using snowballing and database searches in systematic literature studies | |
US11294883B2 (en) | Method for merging data into a database table by locking data identities in the database table that are also present in a temporary copy of the database table and executing update and import functions | |
CN103093038B (zh) | 一种物料清单的更新方法及装置 | |
CN104794123A (zh) | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 | |
CN101882135B (zh) | 一种兴趣点数据处理方法和装置 | |
CN104714957B (zh) | 一种表结构的变更方法及装置 | |
CN101763415B (zh) | 一种数据库的b树索引的生成方法及装置 | |
CN105205053A (zh) | 一种数据库增量日志解析方法及系统 | |
CN104933065A (zh) | 一种合服的方法和装置 | |
CN105373590A (zh) | 知识数据的处理方法及装置 | |
CN105279285A (zh) | 一种关系型数据库与非关系型数据库的同步系统及方法 | |
CN105045917A (zh) | 一种基于实例的分布式数据恢复方法和装置 | |
CN104156640A (zh) | 一种数据访问权限控制方法 | |
US20030204486A1 (en) | Managing attribute-tagged index entries | |
CN107122947A (zh) | 一种基于物料目录的物资编码生成和管理的方法 | |
CN106802928B (zh) | 电网历史数据管理方法及其系统 | |
CN112948473A (zh) | 数据仓库的数据处理方法、装置、系统及存储介质 | |
CN105446824A (zh) | 表增量获取方法及异地数据备份方法 | |
CN105095457A (zh) | 历史数据存储管理方法 | |
CN108268604A (zh) | Bom表数据转换方法、系统 | |
CN101799822A (zh) | 分层网状知识模型建模方法及知识仓库系统建立方法 | |
CN113568909B (zh) | 一种结构树的数据更新方法和系统 | |
CN115237914A (zh) | 防篡改索引结构及其构建、存储和查询方法 | |
CN104038356A (zh) | 数据路由的执行方法、配置装置和处理装置 | |
CN111143582A (zh) | 一种双索引实时更新联想词的多媒体资源推荐方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150923 |
|
RJ01 | Rejection of invention patent application after publication |