一种合服的方法和装置的制造方法_3

文档序号:9217206阅读:来源:国知局
进行加锁、提取并写入第三数据库中具体包括以下子步骤:
[0055]步骤S2042:服务器通过合服工具从第一数据库或第二数据库中读取一条记录。
[0056]数据库中的数据都是以数据表的形式存储的,而数据表的每行为一条记录,本实施例中在读取数据时,以数据表为单位逐行的读取数据,也就相当于逐条读取记录。
[0057]步骤S2044:服务器通过合服工具对读取的当前记录加锁。
[0058]当服务器通过合服工具从第一数据库或第二数据库中读取记录时,对读取的当前记录加锁,以禁止修改当前记录。
[0059]步骤S2046:当加锁完成后,服务器通过合服工具提取当前记录,提取完成后将当前记录进行解锁,在解锁的同时将提取的当前记录写入第三数据库中,返回步骤S2046。
[0060]通过上述步骤S2042至步骤S2046只是对一条记录进行加锁、提取、写入第三数据库,在当前记录写入第三数据库中后,服务器还要通过合服工具再对下一条待读取的记录加锁,因此要继续返回步骤S2042,循环重复执行步骤S2042至步骤S2046,直至第一数据库与第二数据库中的记录全部写入第三数据库中。
[0061]采用本实施例中的提取方法,先读取记录,再对读取的记录进行加锁,加锁完成后再提取记录,每提取完一条记录就将锁释放,即将记录进行解锁,因此在提取记录的过程中不会发生死锁导致记录不可读的情况。
[0062]本实施例中在逐条加锁、提取写入记录时,采用从第一数据库中提取一条记录写入第三数据库中后,在从第二数据库中提取一条记录这样的交叉提取的方式进行的记录的提取,最终将第一数据库与第二数据库中的记录全部写入第三数据库中。
[0063]步骤S206:服务器当修改第一数据库与第二数据库中的记录时,为修改过的每条记录生成对应的修改标识。
[0064]在从第一数据库与第二数据库中提取记录写入第三数据库的过程中,由于第一数据库与第二数据库在正常运行,部分活跃的网络游戏玩家会继续在此期间进行网络游戏,那么这部分活跃的网络游戏玩家所对应的记录在数据库中就会有修改。服务器为了区分修改与未修改的记录,当修改第一数据库与第二数据库中的记录时,为修改过的每条记录生成对应的修改标识。
[0065]需要说明的是,本实施例中是为每条修改的记录都生成修改的标识,本领域技术人员还以通过相关配置,将服务器配置为以网络游戏玩家即用户为单位,为每个用户设定一个标识,当该用户所对应的记录在数据库中有修改时即用户登录进行游戏操作时,将该用户的标识后面生成一个修改标识,这样就可以区分用户对应的记录是否发生过修改。
[0066]当然在设定修改标识时,还可以采用在修改标识后加后缀的方式,来定义修改标识的生成时间,就能够通过修改标识获知该修改是在什么时间发生的,进一步通过修改标识搜索某一时间周期内发生修改的记录或用户。本申请中设置修改标识的目的是:区分修改与未修改的记录以及各条记录修改的时间,对于具体的实现的方式本申请不作具体的限制,本领域技术人员可以根据实际需求选择合适的方式来实现上述区分。但是所有运用到本申请所要求保护的将修改与未修改的记录进行区分,以及区分各条记录修改的时间的构思的方案均应属于本申请所要求保护的范围。
[0067]需要说明的是,步骤S206并不局限于在步骤S204之后执行,在执行步骤S204和S202的同时、或执行步骤S202之前,服务器也可以执行步骤S206。只要数据库中的记录发生修改服务器就会执行步骤S206。
[0068]本实施例中的合服过程分为两个部分:一个部分正如步骤S202至步骤S206所描述的内容,是将第一数据库与第二数据库中的记录全部写入第三数据库的部分,该部分是在数据库运行过程中进行的,为线上合服部分;该部分在尽可能不增加数据库负载的情况下,缓慢的将两个数据库中的数据转移到一个新的数据库即第三数据库中。另一个部分就是下面所要详细描述的步骤S208与步骤S210,该部分是对第三数据库进行修复,对第三数据库进行修复时需要停服进行。
[0069]步骤S208:当停服时,服务器通过合服工具搜索第一数据库与第二数据库中在设定时间周期内生成的修改标识,获取与搜索到的修改标识对应的记录。
[0070]其中,时间周期可以由本领域技术人员根据实际情况进行设定,在设定时间周期时,只要能保证替换后的第三数据库中的记录都是最新记录即可。例如:如果从开始合服至停服时间周期为5天,那么可以将时间周期设定为5天或者更长,如7天。在步骤S206中服务器已经为修改过的每条记录生成对应的修改标识,那么通过这些修改标识,仅搜索7天内生成的修改标识,获取与搜索到的标识对应的记录即可。
[0071]步骤S210:服务器通过合服工具搜索第三数据库中与获取的记录相对应的原始记录,使用从第一数据库和第二数据库中获取的记录替换第三数据库中对应的原始记录。
[0072]在获取到第一数据库与第二数据库中在设定时间周期内发生修改的记录后,服务器通过合服工具搜索第三数据库中与获取的修改后的记录相对应的原始记录;其中,原始记录为在未修改前写入第三数据库中的记录。
[0073]对第三数据库中的原始记录进行搜索时,一种优选的方法是,通过每条记录对应的标识来进行搜索;定义在第一数据库与第二数据库中的每条记录都对应一个原始标识,那么将记录写入第三数据库的同时将原始标识也会对应写入第三数据库中;当第一数据库与第二数据库中的记录发生修改时,一种方案是,不改变其原始标识,只是在原始标识后生成修改标识,另一种方案是将原始标识进行替换,但是通过修改标识依然可以获知其所对应的原始标识。那么通过修改的记录对应的原始标识就可以对第三数据库中的原始记录进行搜索。
[0074]在搜索完成后,将所有搜索到的原始记录对应替换成修改后的记录。通过这样的替换,就完成了第三数据库的更新,保证了第三数据库中都是最新的记录。
[0075]本实施例中的合服工具其作用不再是像传统的合服工具那样,操作于全部的数据库数据,而是仅操作于最近一段时间有过修改的网络游戏玩家数据,在第三数据库上对这部分网络游戏玩家数据进行修复,以完成整个合服过程。
[0076]通过本实施例提供的合服的方法,在从第一数据库与第二数据库中提取记录将提取的记录写入第三数据库的操作是在线进行的,并且从第一数据库与第二数据库中提取记录是在不增加数据库的负载的基础上进行的,既不影响网络游戏玩家进行网络游戏的操作,又能够将记录全部写入第三数据库中;仅有对第三数据库中的部分数据进行替换是停服进行的,采用本实施例提供的合服的方法,相比现有的合服方法整个合服操作都要停服进行,缩短了停服的时间。也就相当于,通过本实施例提供的合服方法,缩短了游戏玩家不能进行游戏操作的时间,因而降低了对网络游戏的收益的影响,进而降低了网络游戏的运营成本。
[0077]实施例三
[0078]参照图3,示出了本发明实施例三中的一种合服的装置的结构框图。
[0079]本实施例的合服的装置包括:连接模块302,用于通过合服工具连接第一数据库、第二数据库以及第三数据库;提取模块304,用于在第一数据库与第二数据库运行过程中,通过合服工具按照预先设定的提取规则,逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入第三数据库中;直至第一数据库与第二数据库中的记录全部写入第三数据库中;替换模块306,用于当停服时,通过合服工具仅对第三数据库中满足替换规则的记录进行替换;其中,满足替换规则的记录为在设定时间周期内在第一数据库与第二数据库中有过修改的记录。
[0080]优选地,提取模块304逐条将第一数据库与第二数据库中的记录进行的加锁、提取并写入第三数据库中时:当从第一数据库或第二数据库中读取记录时,对读取的当前记录加锁,以禁止修改当前记录;加锁完成后提取当前记录,提取完成后将当前记录进行解锁,在解锁的同时将提取的当前记录写入第三数据库中;并在当前记录写入第三数据库中后,再调用加锁子模块对下一条待读取的记录加锁。
[0081]优选地,第一数据库与第二数据库中均存储有多个网络游戏玩家的在线信息;提取模块304通过合服工具按照预先设定的提取规则,逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入第三数据库中时:当第一数据库与第二数据库中的网络游戏玩家在线信息指示在线的网络游戏玩家的数量小于设定阈值时,通过合服工具连续地、逐条将第一数据库与第二数据库中的记录进行加锁、提取并写入所述第三数据库中;和/或,当第一数据库与第二数据库中的网络游戏
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1