CN105787011A - 排名更新方法及装置 - Google Patents

排名更新方法及装置 Download PDF

Info

Publication number
CN105787011A
CN105787011A CN201610098421.1A CN201610098421A CN105787011A CN 105787011 A CN105787011 A CN 105787011A CN 201610098421 A CN201610098421 A CN 201610098421A CN 105787011 A CN105787011 A CN 105787011A
Authority
CN
China
Prior art keywords
ranking
user
user profile
list
correspondence
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.)
Granted
Application number
CN201610098421.1A
Other languages
English (en)
Other versions
CN105787011B (zh
Inventor
刘晗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201610098421.1A priority Critical patent/CN105787011B/zh
Publication of CN105787011A publication Critical patent/CN105787011A/zh
Application granted granted Critical
Publication of CN105787011B publication Critical patent/CN105787011B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/08Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种排名更新方法和装置。所述排名更新方法包括:接收客户端发送的排名更新请求;所述排名更新请求包括待更新的第一名次和第二名次;从排名表中获取所述第一名次及其所对应的第一用户信息和所述第二名次及其所对应的第二用户信息,并保存在事务数据表中;对所述排名表中的所述第一名次所对应的第一用户信息和所述第二名次所对应的第二用户信息进行交换;当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次所对应的用户信息和所述第二名次所对应的用户信息。采用本发明实施例,能够避免排名的重复和混乱,保证排名更新的原子性和可靠性。

Description

排名更新方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种排名更新方法和装置。
背景技术
在现有技术中,对数据库中的排行榜进行更新的操作通常采用内存交换更新和数据库交换更新两种形式。其中,内存交换更新的做法是直接替换内存中两个玩家的排名信息。内存交换在实现上比较简单,但是需要在进程内存中维护整个排行榜数据表,并定时写回数据库,该方式仅适用于规模比较小的排行榜,当排行榜内玩家数量过大时,该方法将消耗大量内存,同时整个排行榜存在于某一个进程中,玩家访问排行榜的时候都要访问这个进程,容易产生单点故障。根据实际的压力测试,当排行榜中玩家的数量达到200000以上,或并发访问频率达到100次/秒的时候,进程占用的CPU会出现明显的飙升,同时整个排行榜在定时写回数据库的时候,由于数据量过大,也会造成数据库的卡顿。而数据库交换更新的做法是使用事务来操作这两个排名的数据,以保证这两个数据在操作的过程中不会受到其他操作的影响而发生改变,其可扩展性相对于内存交换更强。
发明内容
由于mongo数据库本身并不支持事务的特性,采用mongo数据库进行交换更新时,如果对两条数据分别进行操作,则有可能在操作完一条数据的时候,另一条数据已经发生了变化,或者在操作完一条数据的时候,游戏进程意外终止,使另一条数据的操作未完成,从而导致数据库中的数据不一致,使排行榜中的排名出现重叠和混乱。
本发明实施例提出一种排名更新方法和装置,能够避免排名的重复和混乱,保证排名更新的原子性和可靠性。
本发明实施例提供的一种排名更新方法,具体包括:
接收客户端发送的排名更新请求;所述排名更新请求包括待更新的第一名次和第二名次;
从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息,并保存在事务数据表中;
对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换;
当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息。
进一步地,所述排名更新请求还包括所述第一名次对应的第一用户数据和所述第二名次对应的第二用户数据;
所述从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息,并保存在事务数据表中,具体包括:
从所述排名表中获取所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息;
将所述第一用户数据与所述第一用户信息进行对比,并将所述第二用户数据与所述第二用户信息进行对比;
在所述第一用户数据与所述第一用户信息都对应于同一用户,且所述第二用户数据与所述第二用户信息也都对应于同一用户时,将所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息保存在所述事务数据表中。
进一步地,所述对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换,具体包括:
将所述排名表中的所述第一名次对应的第一用户信息替换为所述第二用户信息;
将所述排名表中的所述第二名次对应的第二用户信息替换为所述第一用户信息。
进一步地,所述当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息,具体包括:
当检测到所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息中的至少一个替换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息,使所述第一名次仍对应所述第一用户信息,且使所述第二名次仍对应所述第二用户信息。
进一步地,在所述当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息之后,还包括:
删除所述事务数据表中所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息。
进一步地,在所述对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换之前,还包括:
对所述排名表中的所述第一名次及其对应的第一用户信息进行加锁处理;
对所述排名表中的所述第二名次及其对应的第二用户信息进行加锁处理。
进一步地,在所述当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息之后,还包括:
对所述排名表中的所述第一名次及其对应的第一用户信息进行解锁处理;
对所述排名表中的所述第二名次及其对应的第二用户信息进行解锁处理。
相应地,本发明实施例还提供了一种排名更新装置,具体包括:
更新请求接收模块,用于接收客户端发送的排名更新请求;所述排名更新请求包括待更新的第一名次和第二名次;
数据保存模块,用于从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息,并保存在事务数据表中
用户信息交换模块,用于对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换;以及,
用户信息回滚模块,用于当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息。
进一步地,所述排名更新请求还包括所述第一名次对应的第一用户数据和所述第二名次对应的第二用户数据;
所述数据保存模块具体包括:
用户信息获取单元,用于从所述排名表中获取所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息;
用户信息对比单元,用于将所述第一用户数据与所述第一用户信息进行对比,并将所述第二用户数据与所述第二用户信息进行对比;以及,
数据保存单元,用于在所述第一用户数据与所述第一用户信息都对应于同一用户,且所述第二用户数据与所述第二用户信息也都对应于同一用户时,将所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息保存在所述事务数据表中。
进一步地,所述用户信息交换模块具体包括:
第一替换单元,用于将所述排名表中的所述第一名次对应的第一用户信息替换为所述第二用户信息;以及,
第二替换单元,用于将所述排名表中的所述第二名次对应的第二用户信息替换为所述第一用户信息。
进一步地,所述用户信息回滚模块具体用于当所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息中的至少一个替换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息,使所述第一名次仍对应所述第一用户信息,且使所述第二名次仍对应所述第二用户信息。
进一步地,所述排名更新装置还包括:
数据删除模块,用于删除所述事务数据表中所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息。
进一步地,所述排名更新装置还包括:
第一加锁模块,用于对所述排名表中的所述第一名次及其对应的第一用户信息进行加锁处理;以及,
第二加锁模块,用于对所述排名表中的所述第二名次及其对应的第二用户信息进行加锁处理。
进一步地,所述排名更新装置还包括:
第一解锁模块,用于对所述排名表中的所述第一名次及其对应的第一用户信息进行解锁处理;以及,
第二解锁模块,用于对所述排名表中的所述第二名次及其对应的第二用户信息进行解锁处理。
实施本发明实施例,具有如下有益效果:
本发明实施例提供的排名更新方法及装置,能够通过在事务数据表中记录交换更新操作相关的名次数据,在交换更新操作出现错误时,可以借助事务数据表对已经发生变化的名次数据进行回滚,从而将名次数据恢复成交换更新操作开始前的状态,保证数据库中数据的一致,从而避免了排名表中的排名出现重复和混乱,保证排名更新的原子性和可靠性。另外,通过对需要进行交换更新操作的排名数据进行加锁处理,使这些排名数据不会被其他进程操作,保证排名更新的稳定性和隔离性。
附图说明
图1是本发明提供的排名更新方法的一个实施例的流程示意图;
图2是本发明提供的排名更新装置的一个实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明提供的排名更新方法的一个实施例的流程示意图,包括步骤S11至S14,具体如下:
S11:接收客户端发送的排名更新请求;所述排名更新请求包括待更新的第一名次和第二名次;
S12:从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息,并保存在事务数据表中;
S13:对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换;
S14:当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息。
需要说明的是,排名表保存在mongo数据库中,为各个名次及其用户信息的对应关系表。事务数据表用于记录未完成的交换更新操作,包含各个交换更新操作的唯一识别码和在该交换更新操作中需要进行交换的两个名次及其分别所对应的用户信息。
当第一用户和第二用户的排名需要进行交换更新时,接收客户端发送的排名更新请求,该排名更新请求中包括需要进行交换的两个名次,即第一名次和第二名次。在接收该排名更新请求后,根据其中的第一名次和第二名次从位于mongo数据库的排名表中获取第一名次对应的第一用户信息和第二名次对应的第二用户信息,并将第一名次、第一用户信息、第二名次和第二用户信息相对应地保存在事务数据表中,同时在事务数据表中生成本次交换更新操作的唯一识别码,以区分不同事务。然后,交换排名表中第一名次和第二名次中的用户信息进行更新,使第一名次所对应的用户信息为第二用户信息,第二名次所对应的用户信息为第一用户信息。
但是,在第一名次和第二名次对应的用户信息交换失败时,需对本次交换操作进行回滚,将第一名次和第二名次的对应关系回滚为事务数据表中的对应关系,即使第一名次对应第一用户信息,且使第二名次对应第二用户信息。其中,若第一名次对应的用户信息交换为第二用户信息,而第二名次对应的用户信息仍为第二用户信息,则从事务数据表中获取第一名次对应的第一用户信息,并回滚排名表中第一名次对应的用户信息,使第一名次对应的用户信息为第一用户信息;若第二名次对应的用户信息交换为第一用户信息,而第一名次对应的用户信息仍为第一用户信息,则从事务数据表中获取第二名次对应的第二用户信息,并回滚排名表中第二名次对应的用户信息,使第二名次对应的用户信息为第二用户信息。通过回滚操作将交换失败的名次数据恢复成交换更新操作开始前的状态,保证数据库中数据的一致,从而避免了排名表中的排名出现重复和混乱,提高排名更新的原子性和可靠性。
进一步地,所述排名更新请求还包括所述第一名次对应的第一用户数据和所述第二名次对应的第二用户数据;
所述从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息,并保存在事务数据表中,具体包括:
从所述排名表中获取所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息;
将所述第一用户数据与所述第一用户信息进行对比,并将所述第二用户数据与所述第二用户信息进行对比;
在所述第一用户数据与所述第一用户信息都对应于同一用户,且所述第二用户数据与所述第二用户信息也都对应于同一用户时,将所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息保存在所述事务数据表中。
需要说明的是,当第一用户和第二用户的排名需要进行交换更新时,接收客户端发送的排名更新请求,排名更新请求包括第一名次、第一名次对应的第一用户数据、第二名次和第二名次对应的第二用户数据,其中,用户数据一般为用户识别码。根据排名更新请求检查位于mongo数据库的排名表中的第一名次所对应的第一用户信息是否为第一用户数据,以及第二名次所对应的第二用户信息是否为第二用户数据,即检测排名表中待更新的名次所对应的用户识别码是否为客户端发送过来的用户识别码。若是,则说明排名表还未更新,从排名表中获取第一名次、第一名次所对应的用户信息、第二名次和第二名次所对应的用户信息,并保存在事务数据表中,同时在事务数据表中生成本次更新操作的唯一的识别码;若不是,则说明排名表已经更新,不再进行后续更新操作。
进一步地,所述对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换,具体包括:
将所述排名表中的所述第一名次对应的第一用户信息替换为所述第二用户信息;
将所述排名表中的所述第二名次对应的第二用户信息替换为所述第一用户信息。
需要说明的是,在对排名表中的第一名次和第二名次所对应的用户信息进行交换时,首先将第一名次及其所对应的第一用户信息和第二名次及其所对应的第二用户信息读取到内存中,并在内存中删除其中的第一名次和第二名次。随后,将内存中的第一用户信息写入排名表的第二名次中,使第二名次所对应的用户信息替换为第一用户信息,并将内存中的第二用户信息写入排名表的第一名次中,使第一名次所对应的用户信息替换为第二用户信息。
进一步地,所述当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息,具体包括:
当检测到所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息中的至少一个替换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息,使所述第一名次仍对应所述第一用户信息,且使所述第二名次仍对应所述第二用户信息。
需要说明的是,在进行交换后,对该交换操作进行检测,若检测到交换成功,则说明本次交换更新成功,若检测到交换失败,则需对本次交换操作进行回滚。其中,若替换第一名次所对应的用户信息成功,而替换第二名次所对应的用户信息失败,则从事务数据表中获取第一用户的信息并根据该信息替换第一名次中的用户信息,使第一名次中的用户信息为第一用户信息;若替换第一名次所对应的用户信息失败,而替换第二名次所对应的用户信息成功,则从事务数据表中获取第二用户的信息并根据该信息替换第二名次中的用户信息,使第二名次中的用户信息为第二用户信息;若替换第一名次所对应的用户信息和替换第二名次所对应的用户信息均失败,则第一名次和第二名次对应的用户信息与事务数据表中的相一致,无需再次回滚,可直接进行后续操作。
进一步地,在所述当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息之后,还包括:
删除所述事务数据表中所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息。
需要说明的是,在本次交换更新操作完成后,需删除事务数据表中本次交换更新操作的相关数据。
进一步地,在所述对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换之前,还包括:
对所述排名表中的所述第一名次及其对应的第一用户信息进行加锁处理;
对所述排名表中的所述第二名次及其对应的第二用户信息进行加锁处理。
需要说明的是,在对排名表中的第一名次和第二名次所对应的用户信息进行交换之前,为了防止正在操作的第一名次及其对应的数据和第二名次及其对应的数据被其他进程操作,对第一名次及其所对应的用户信息和第二名次及其所对应的用户信息进行加锁操作。该加锁操作通过对表中相应的数据设置一个字段的方式来实现。具体地,在排名表中的第一名次及其所对应的用户信息和第二名次及其所对应的用户信息所在的行中增加加锁属性,并将该加锁属性赋值为本次更新操作在事务数据表中的唯一识别码。该加锁操作具有排他性,同一个名次数据在同一时刻只能被加一次锁。
在加锁操作后,对该加锁操作进行检测,若检测到第一名次及其所对应的用户信息和第二名次及其所对应的用户信息的加锁操作中有一个失败,则对已加锁的数据进行解锁操作,且不再执行本次更新操作。通过对第一名次和其所对应的用户信息和第二名次和其所对应的用户信息进行加锁处理,使第一名次和其所对应的用户信息和第二名次和其所对应的用户信息不会被其他进程操作,从而保证了更新过程数据的正确性。
进一步地,在所述当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息之后,还包括:
对所述排名表中的所述第一名次及其对应的第一用户信息进行解锁处理;
对所述排名表中的所述第二名次及其对应的第二用户信息进行解锁处理。
需要说明的是,在对第一名次对应的用户信息和第二名次对应的用户信息进行交换更新操作后,需对第一名次及其所对应的用户信息和第二名次及其所对应的用户信息进行解锁操作,删除排名表中的第一名次及其所对应的用户信息和第二名次及其所对应的用户信息所在的行中的锁属性,并且删除本次更新操作在事务数据表中的记录。
本发明实施例提供的排名更新方法,能够通过在事务数据表中记录交换更新操作相关的名次数据,在交换更新操作出现错误时,可以借助事务数据表对已经发生变化的名次数据进行回滚,从而将名次数据恢复成交换更新操作开始前的状态,保证数据库中数据的一致,从而避免了排名表中的排名出现重复和混乱,保证排名更新的原子性和可靠性。另外,通过对需要进行交换更新操作的排名数据进行加锁处理,使这些排名数据不会被其他进程操作,保证排名更新的稳定性和隔离性。
相应地,本发明还提供一种排名更新装置,能够实现上述实施例中的排名更新方法的所有流程。
参见图2,是本发明提供的排名更新装置的一个实施例的结构示意图,具体如下:
更新请求接收模块21,用于接收客户端发送的排名更新请求;所述排名更新请求包括待更新的第一名次和第二名次;
数据保存模块22,用于从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息,并保存在事务数据表中
用户信息交换模块23,用于对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换;以及,
用户信息回滚模块24,用于当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息。
进一步地,所述排名更新请求还包括所述第一名次对应的第一用户数据和所述第二名次对应的第二用户数据;
所述数据保存模块具体包括:
用户信息获取单元,用于从所述排名表中获取所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息;
用户信息对比单元,用于将所述第一用户数据与所述第一用户信息进行对比,并将所述第二用户数据与所述第二用户信息进行对比;以及,
数据保存单元,用于在所述第一用户数据与所述第一用户信息都对应于同一用户,且所述第二用户数据与所述第二用户信息也都对应于同一用户时,将所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息保存在所述事务数据表中。
进一步地,所述用户信息交换模块具体包括:
第一替换单元,用于将所述排名表中的所述第一名次对应的第一用户信息替换为所述第二用户信息;以及,
第二替换单元,用于将所述排名表中的所述第二名次对应的第二用户信息替换为所述第一用户信息。
进一步地,所述用户信息回滚模块具体用于当所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息中的至少一个替换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息,使所述第一名次仍对应所述第一用户信息,且使所述第二名次仍对应所述第二用户信息。
进一步地,所述排名更新装置还包括:
数据删除模块,用于删除所述事务数据表中所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息。
进一步地,所述排名更新装置还包括:
第一加锁模块,用于对所述排名表中的所述第一名次及其对应的第一用户信息进行加锁处理;以及,
第二加锁模块,用于对所述排名表中的所述第二名次及其对应的第二用户信息进行加锁处理。
进一步地,所述排名更新装置还包括:
第一解锁模块,用于对所述排名表中的所述第一名次及其对应的第一用户信息进行解锁处理;以及,
第二解锁模块,用于对所述排名表中的所述第二名次及其对应的第二用户信息进行解锁处理。
本发明实施例提供的排名更新装置,能够通过在事务数据表中记录交换更新操作相关的名次数据,在交换更新操作出现错误时,可以借助事务数据表对已经发生变化的名次数据进行回滚,从而将名次数据恢复成交换更新操作开始前的状态,保证数据库中数据的一致,从而避免了排名表中的排名出现重复和混乱,保证排名更新的原子性和可靠性。另外,通过对需要进行交换更新操作的排名数据进行加锁处理,使这些排名数据不会被其他进程操作,保证排名更新的稳定性和隔离性。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

Claims (14)

1.一种排名更新方法,其特征在于,包括:
接收客户端发送的排名更新请求;所述排名更新请求包括待更新的第一名次和第二名次;
从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息,并保存在事务数据表中;
对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换;
当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息。
2.如权利要求1所述的排名更新方法,其特征在于,所述排名更新请求还包括所述第一名次对应的第一用户数据和所述第二名次对应的第二用户数据;
所述从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息,并保存在事务数据表中,具体包括:
从所述排名表中获取所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息;
将所述第一用户数据与所述第一用户信息进行对比,并将所述第二用户数据与所述第二用户信息进行对比;
在所述第一用户数据与所述第一用户信息都对应于同一用户,且所述第二用户数据与所述第二用户信息也都对应于同一用户时,将所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息保存在所述事务数据表中。
3.如权利要求1所述的排名更新方法,其特征在于,所述对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换,具体包括:
将所述排名表中的所述第一名次对应的第一用户信息替换为所述第二用户信息;
将所述排名表中的所述第二名次对应的第二用户信息替换为所述第一用户信息。
4.如权利要求3所述的排名更新方法,其特征在于,所述当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息,具体包括:
当检测到所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息中的至少一个替换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息,使所述第一名次仍对应所述第一用户信息,且使所述第二名次仍对应所述第二用户信息。
5.如权利要求1所述的排名更新方法,其特征在于,在所述当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息之后,还包括:
删除所述事务数据表中所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息。
6.如权利要求1至5任一项所述的排名更新方法,其特征在于,在所述对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换之前,还包括:
对所述排名表中的所述第一名次及其对应的第一用户信息进行加锁处理;
对所述排名表中的所述第二名次及其对应的第二用户信息进行加锁处理。
7.如权利要求6所述的排名更新方法,其特征在于,在所述当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息之后,还包括:
对所述排名表中的所述第一名次及其对应的第一用户信息进行解锁处理;
对所述排名表中的所述第二名次及其对应的第二用户信息进行解锁处理。
8.一种排名更新装置,其特征在于,包括:
更新请求接收模块,用于接收客户端发送的排名更新请求;所述排名更新请求包括待更新的第一名次和第二名次;
数据保存模块,用于从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息,并保存在事务数据表中
用户信息交换模块,用于对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换;以及,
用户信息回滚模块,用于当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息。
9.如权利要求8所述的排名更新装置,其特征在于,所述排名更新请求还包括所述第一名次对应的第一用户数据和所述第二名次对应的第二用户数据;
所述数据保存模块具体包括:
用户信息获取单元,用于从所述排名表中获取所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息;
用户信息对比单元,用于将所述第一用户数据与所述第一用户信息进行对比,并将所述第二用户数据与所述第二用户信息进行对比;以及,
数据保存单元,用于在所述第一用户数据与所述第一用户信息都对应于同一用户,且所述第二用户数据与所述第二用户信息也都对应于同一用户时,将所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息保存在所述事务数据表中。
10.如权利要求8所述的排名更新装置,其特征在于,所述用户信息交换模块具体包括:
第一替换单元,用于将所述排名表中的所述第一名次对应的第一用户信息替换为所述第二用户信息;以及,
第二替换单元,用于将所述排名表中的所述第二名次对应的第二用户信息替换为所述第一用户信息。
11.如权利要求10所述的排名更新装置,其特征在于,所述用户信息回滚模块具体用于当所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息中的至少一个替换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息,使所述第一名次仍对应所述第一用户信息,且使所述第二名次仍对应所述第二用户信息。
12.如权利要求8所述的排名更新装置,其特征在于,所述排名更新装置还包括:
数据删除模块,用于删除所述事务数据表中所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息。
13.如权利要求8至12任一项所述的排名更新装置,其特征在于,所述排名更新装置还包括:
第一加锁模块,用于对所述排名表中的所述第一名次及其对应的第一用户信息进行加锁处理;以及,
第二加锁模块,用于对所述排名表中的所述第二名次及其对应的第二用户信息进行加锁处理。
14.如权利要求13任一项所述的排名更新装置,其特征在于,所述排名更新装置还包括:
第一解锁模块,用于对所述排名表中的所述第一名次及其对应的第一用户信息进行解锁处理;以及,
第二解锁模块,用于对所述排名表中的所述第二名次及其对应的第二用户信息进行解锁处理。
CN201610098421.1A 2016-02-23 2016-02-23 排名更新方法及装置 Active CN105787011B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610098421.1A CN105787011B (zh) 2016-02-23 2016-02-23 排名更新方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610098421.1A CN105787011B (zh) 2016-02-23 2016-02-23 排名更新方法及装置

Publications (2)

Publication Number Publication Date
CN105787011A true CN105787011A (zh) 2016-07-20
CN105787011B CN105787011B (zh) 2019-02-22

Family

ID=56402844

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610098421.1A Active CN105787011B (zh) 2016-02-23 2016-02-23 排名更新方法及装置

Country Status (1)

Country Link
CN (1) CN105787011B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107229701A (zh) * 2017-05-25 2017-10-03 腾讯科技(深圳)有限公司 排名更新方法、装置和计算机设备
CN113704280A (zh) * 2021-08-26 2021-11-26 上海哔哩哔哩科技有限公司 数据列表更新方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103178989A (zh) * 2013-02-18 2013-06-26 中兴通讯股份有限公司 访问热度统计方法及装置
CN103309997A (zh) * 2013-06-25 2013-09-18 上海航天测控通信研究所 一种数据库合并的内外网并行运行系统及其数据库合并方法
US20140040022A1 (en) * 2012-05-17 2014-02-06 Trophy Stack, Inc. Method of ranking and displaying certified content
CN103729391A (zh) * 2012-10-12 2014-04-16 株式会社特博睿 能够重新启动事务的客户端装置和数据库服务器及方法
US20150273320A1 (en) * 2014-03-31 2015-10-01 Kabam, Inc. Placeholder items that can be exchanged for an item of value based on user performance

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140040022A1 (en) * 2012-05-17 2014-02-06 Trophy Stack, Inc. Method of ranking and displaying certified content
CN103729391A (zh) * 2012-10-12 2014-04-16 株式会社特博睿 能够重新启动事务的客户端装置和数据库服务器及方法
CN103178989A (zh) * 2013-02-18 2013-06-26 中兴通讯股份有限公司 访问热度统计方法及装置
CN103309997A (zh) * 2013-06-25 2013-09-18 上海航天测控通信研究所 一种数据库合并的内外网并行运行系统及其数据库合并方法
US20150273320A1 (en) * 2014-03-31 2015-10-01 Kabam, Inc. Placeholder items that can be exchanged for an item of value based on user performance

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
王时绘等: "交换排序算法", 《软件导刊》 *
邵顺增: "稳定快速排序算法研究", 《计算机应用与软件》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107229701A (zh) * 2017-05-25 2017-10-03 腾讯科技(深圳)有限公司 排名更新方法、装置和计算机设备
CN107229701B (zh) * 2017-05-25 2018-07-03 腾讯科技(深圳)有限公司 排名更新方法、装置和计算机设备
CN113704280A (zh) * 2021-08-26 2021-11-26 上海哔哩哔哩科技有限公司 数据列表更新方法及装置

Also Published As

Publication number Publication date
CN105787011B (zh) 2019-02-22

Similar Documents

Publication Publication Date Title
CN107122410A (zh) 一种缓存更新方法及装置
CN103678556B (zh) 列式数据库处理的方法和处理设备
CN106462586B (zh) 基于记录的多版本并发控制的一致性读取的方法和系统
US10409864B2 (en) Transaction control block for multiversion concurrency commit status
US20190129894A1 (en) Database Transaction Processing Method, Client, and Server
US6668304B1 (en) Transaction support on logical disks
CN102331993B (zh) 分布式数据库的数据迁移方法和分布式数据库迁移系统
US7702660B2 (en) I/O free recovery set determination
JP5733124B2 (ja) データ管理装置、データ管理システム、データ管理方法、及びプログラム
US20150293966A1 (en) System and Method for Massively Parallel Processing Database
US20130110883A1 (en) Lock-free transactional support for large-scale storage systems
US8862561B1 (en) Detecting read/write conflicts
US10191851B2 (en) Method for distributed transaction processing in flash memory
CN106062707A (zh) 使能混合事务存储器系统中的最大并发性
Junqueira et al. Lock-free transactional support for large-scale storage systems
CN102098344B (zh) 一种缓存管理中同步版本方法和装置及其缓存管理系统
KR20170132338A (ko) 파일 시스템에 대한 체크포인트
CN106095613B (zh) 用于使用wal的数据库回滚的方法和设备
US20190121793A1 (en) Data updating method and device for a distributed database system
CN105787011A (zh) 排名更新方法及装置
US10565184B2 (en) Method and system for committing transactions in a semi-distributed manner
CN105653539A (zh) 索引分布式存储的实现方法和装置
CN104285215A (zh) 用于跟踪指令高速缓冲存储器中的附加数据权限的方法和设备
KR20140047448A (ko) 트랜잭션 재시작 가능한 클라이언트 장치와 데이터베이스 서버 및 방법
CN107391041A (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
GR01 Patent grant
GR01 Patent grant