数据分散并发方法和装置制造方法

文档序号:6507885阅读:152来源:国知局
数据分散并发方法和装置制造方法
【专利摘要】本发明涉及一种数据分散并发方法和装置。该数据分散并发方法,包括:获取数据及所述数据的主键;根据所述主键分配相应的子键;根据所述子键将所述数据路由至相应的队列,并对所述队列中的数据进行写操作。上述数据分散并发方法和装置,通过数据的主键分配相应的子键,然后对将每个子键的数据路由至相应的队列,对队列中的数据进行写操作,因同一主键下存在多个子键,每个子键只有一个写操作的地方,多个子键同时写操作,各子键不影响,提高了数据并发写的成功率,且保证了数据的及时性。
【专利说明】数据分散并发方法和装置

【技术领域】
[0001]本发明涉及互联网应用技术,特别是涉及一种数据分散并发方法和装置。

【背景技术】
[0002]事件提醒是一种全方位的生活提醒应用,包括游戏提醒、生日提醒、资讯提醒等。提醒的数据是以时间点为主键,假设某主键是T,即在T时间发生的提醒都会往T这个记录中写数据,但存储设备为了一致性做了防并发保护,同时只能一个数据写成功,其余都失败。然而同时提醒数据有及时性的要求,所以不会失败后重试。
[0003]发明人经过研究发现,传统的事件提醒因存储设备的防并发保护,导致并发时写数据成功率低。


【发明内容】

[0004]基于此,有必要针对并发时写数据成功率低的问题,提供一种能提高并发时写数据成功率的数据分散并发方法。
[0005]此外,还有必要提供一种能提高并发时写数据成功率的数据分散并发装置。
[0006]一种数据分散并发方法,包括:
[0007]获取数据及所述数据的主键;
[0008]根据所述主键分配相应的子键;
[0009]根据所述子键将所述数据路由至相应的队列,并对所述队列中的数据进行写操作。
[0010]一种数据分散并发装置,包括:
[0011]获取模块,用于获取数据及所述数据的主键;
[0012]分配模块,用于根据所述主键分配相应的子键;
[0013]写存储模块,用于根据所述子键将所述数据路由至相应的队列,并将所述队列中的数据进行写操作。
[0014]上述数据分散并发方法和装置,通过数据的主键分配相应的子键,然后对将每个子键的数据路由至相应的队列,对队列中的数据进行写操作,因同一主键下存在多个子键,每个子键只有一个写操作的地方,多个子键同时写操作,各子键不影响,提高了数据并发写的成功率,且保证了数据的及时性。

【专利附图】

【附图说明】
[0015]图1为一个实施例中数据分散并发方法的流程图;
[0016]图2为该根据主键分配相应的子键的步骤的流程图;
[0017]图3为对该队列中的数据进行写操作的步骤的流程图;
[0018]图4为另一个实施例中数据分散并发方法的流程图;
[0019]图5为一个实施例中数据分散并发装置的结构框图;
[0020]图6为图5中分配模块的内部结构框图;
[0021]图7为图5中写存储模块的内部结构框图;
[0022]图8为另一个实施例中数据分散并发装置的结构框图。

【具体实施方式】
[0023]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0024]如图1所示,为一个实施例中数据分散并发方法的流程图。该数据分散并发方法,包括:
[0025]步骤102,获取数据及该数据的主键。
[0026]具体的,该数据为各种需要发出提醒的数据,如生日提醒、资讯提醒等。数据的主键是指具体的提醒的时间,如2013年8月13日10时10分。
[0027]步骤104,根据该主键分配相应的子键。
[0028]具体的,将主键细化分成多个子键,为数据分配相应的子键。主键是提醒数据存储系统的索引,用于管理子键。
[0029]在一个实施例中,如图2所示,该根据主键分配相应的子键的步骤包括:
[0030]步骤202,判断是否存在该主键的分组标识,若存在,执行步骤204,若不存在,执行步骤206。
[0031]具体的,根据主键申请请求,无状态路由到服务器,判断服务器上是否存在该主键的分组标识。无状态路由到服务器是指按照每台服务器的负载及连接成功率均衡分配网络请求到相应的服务器。分组标识可为分组号,该分组标识是唯一的。
[0032]步骤204,判断是否有该分组标识下的子键,若有,执行步骤210,若否,执行步骤208。
[0033]步骤206,为该主键分配分组标识,再执行步骤208。
[0034]步骤208,生成该分组标识下的子键,再执行步骤214。
[0035]步骤210,判断该子键的数据记录数是否大于或等于预设值,若是,执行步骤212,若否,执行步骤214。
[0036]具体的,该子键下可预先设置最大数据记录数即预设值。该预设值可根据存储设备的大小和一个子键的内数据的检索效率确定。
[0037]步骤212,在该分组标识下将该子键数增加1,然后执行步骤214。
[0038]步骤214,将该子键下的数据记录数增加1,并返回该子键。
[0039]具体的,若在分组标识下将子键数增加I后,在该更新后的子键下的数据记录数增加1,并返回该更新后的子键。若判断出子键的数据记录数小于预设值时,将该子键下的数据记录数增加1,并返回该子键。
[0040]此外,在判断出该子键的数据记录数大于或等于预设值时,可重新为该主键分配相应的子键。
[0041]步骤106,根据该子键将该数据路由至相应的队列,并对该队列中的数据进行写操作。
[0042]具体的,将具有相同子键的数据路由至相同的队列中。可按照子键的哈希算法将一些子键的队列放置到同一台机器完成,保证一个子键只有一个写操作的地方。
[0043]在一个实施例中,如图3所示,对该队列中的数据进行写操作的步骤包括:
[0044]步骤302,启动写进程。
[0045]步骤304,锁定一个队列。
[0046]具体的,将一个队列锁定,只能对该队列进行写操作。
[0047]步骤306,从该锁定的队列中读数据。
[0048]具体的,按照队列中的顺序对数据进行读取。
[0049]步骤308,判断该队列是否为空,若是,则执行步骤310,如否,执行步骤312。
[0050]步骤310,遍历下一个队列,返回步骤304。
[0051 ] 具体的,可按照次序依次访问每个队列。
[0052]步骤312,将该队列中的数据进行写操作。
[0053]通过对队列逐一遍历读取其中数据,然后进行写操作。
[0054]上述数据分散并发方法,通过数据的主键分配相应的子键,然后对将每个子键的数据路由至相应的队列,对队列中的数据进行写操作,因同一主键下存在多个子键,每个子键只有一个写操作的地方,多个子键同时写操作,各子键不影响,提高了数据并发写的成功率,且保证了数据的及时性。
[0055]如图4所示,为另一个实施例中数据分散并发方法的流程图。该数据分散并发方法,包括:
[0056]步骤402,获取数据及该数据的主键。
[0057]步骤404,判断该数据是否为新增数据,若是,执行步骤410,若否,执行步骤406。
[0058]具体的,可通过调用新增数据接口判断该数据是否为新增数据。此外,可通过数据的哈希值比较,判断数据是否为新增数据。
[0059]步骤406,判断该数据是否为修改数据,若是,则执行步骤408,若否,执行步骤412。
[0060]具体的,可通过调用修改数据接口判断该数据是否为修改数据。
[0061]步骤408,更新提醒,然后执行步骤410。
[0062]具体的,更新提醒包括删除旧提醒和增加新提醒。
[0063]步骤410,根据该主键分配相应的子键,然后执行步骤414。
[0064]步骤412,删除该数据,然后执行步骤414。
[0065]步骤414,根据该子键将该数据路由至相应的队列,并对该队列中的数据进行写操作。
[0066]上述数据分散并发方法,对获取的数据进行判断,可区分出新增数据、修改数据等,若不为新增数据和修改数据,不需分配子键,节省系统资源。
[0067]如图5所示,为一个实施例中数据分散并发装置的结构框图。该数据分散并发装置,包括获取模块520、分配模块540和写存储模块560。
[0068]其中,获取模块520用于获取数据及该数据的主键。具体的,该数据为各种需要发出提醒的数据,如生日提醒、资讯提醒等。数据的主键是指具体的提醒的时间,如2013年8月13日10时10分。
[0069]分配模块540用于根据该主键分配相应的子键。具体的,将主键细化分成多个子键,为数据分配相应的子键。主键是提醒数据存储系统的索引,用于管理子键。
[0070]如图6所示,该分配模块540包括判断子模块541、自增子模块542、分配子模块543、生成子模块544。
[0071]其中,判断子模块541用于判断是否存在该主键的分组标识,若存在,则进一步判断是否有该分组标识下的子键。
[0072]自增子模块542用于在该分组标识下有子键时,将该子键下的记录数增加I。
[0073]分配子模块543用于返回该子键。
[0074]生成子模块544用于在该分组标识下无子键时,生成该分组标识下的子键。
[0075]该自增子模块542还用于在生成该分组标识下的子键后,将该子键下的记录数增加I ;该分配子模块543还用于返回该生成的子键。
[0076]该生成子模块544还用于在判断不存在该主键的分组标识,为该主键分配分组标识,并生成该分组标识下的子键;该自增子模块542还用于将该生成的子键下的数据记录数增加I ;该分配子模块543还用于返回该生成的子键。
[0077]该判断子模块541还用于在该判断该分组标识下有子键的步骤之后,判断该子键的数据记录数是否大于或等于预设值;该自增子模块542还用于在该数据记录数大于或等于预设值时,在该分组标识下将该子键数增加1,并在该更新后的子键下的数据记录数增加I ;该分配子模块543还用于返回该更新后的子键;该自增子模块542还用于在该数据记录数小于预设值时,将该子键下的数据记录数增加1,该分配子模块543还用于返回该子键。
[0078]写存储模块560用于根据该子键将该数据路由至相应的队列,并将该队列中的数据进行写操作。
[0079]如图7所示,该写存储模块560包括启动子模块561、锁定子模块562、读取子模块563、检测子模块564、遍历子模块565和写子模块566。
[0080]其中,启动子模块561用于启动写进程;
[0081]锁定子模块562用于锁定一个队列;
[0082]读取子模块563用于从该锁定的队列中读数据;
[0083]检测子模块564用于判断该队列是否为空;
[0084]遍历子模块565用于在判断出该队列为空时,遍历下一个队列;
[0085]该锁定子模块562还用于重新锁定该遍历的队列;
[0086]写子模块566用于在该队列不为空时,将该队列中的数据进行写操作。
[0087]上述数据分散并发装置,通过数据的主键分配相应的子键,然后对将每个子键的数据路由至相应的队列,对队列中的数据进行写操作,因同一主键下存在多个子键,每个子键只有一个写操作的地方,多个子键同时写操作,各子键不影响,提高了数据并发写的成功率,且保证了数据的及时性。
[0088]如图8所示,为另一个实施例中数据分散并发装置的结构框图。该数据分散并发装置,除了包括获取模块520、分配模块540和写存储模块560,还包括判断模块530、更新模块532和删除模块534。
[0089]其中,判断模块530用于在该获取数据及该数据的主键之后,判断该数据是否为新增数据;
[0090]分配模块540还用于在该数据为新增数据时根据该主键分配相应的子键;
[0091]判断模块530还用于在该数据不为新增数据时,进一步判断该数据是否为修改数据;
[0092]更新模块532用于在该数据为修改数据时,更新提醒;
[0093]该分配模540还用于在该数据为修改数据时,根据该主键分配相应的子键;
[0094]删除模块534用于在该数据不为修改数据时,删除该数据。
[0095]上述数据分散并发装置,对获取的数据进行判断,可区分出新增数据、修改数据等,若不为新增数据和修改数据,不需分配子键,节省系统资源。
[0096]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random AccessMemory, RAM)等。
[0097]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种数据分散并发方法,包括: 获取数据及所述数据的主键; 根据所述主键分配相应的子键; 根据所述子键将所述数据路由至相应的队列,并对所述队列中的数据进行写操作。
2.根据权利要求1所述的数据分散并发方法,其特征在于,所述根据主键分配相应的子键的步骤包括: 判断是否存在所述主键的分组标识,若存在,则进一步判断是否有所述分组标识下的子键,若有,则将所述子键下的记录数增加1,并返回所述子键,若无,则生成所述分组标识下的子键,将所述生成的子键下的记录数增加1,并返回所述生成的子键。
3.根据权利要求2所述的数据分散并发方法,其特征在于,所述根据主键分配相应的子键的步骤还包括: 判断不存在所述主键的分组标识,则为所述主键分配分组标识,并生成所述分组标识下的子键,将所述子键下的数据记录数增加1,并返回所述生成的子键。
4.根据权利要求2所述的数据分散并发方法,其特征在于,在所述判断所述分组标识下有子键的步骤之后,还包括: 判断所述子键的数据记录数是否大于或等于预设值,若是,则在所述分组标识下将所述子键数增加1,并在所述更新后的子键下的数据记录数增加1,并返回所述更新后的子键,若否,则将所述子键下的数据记录数增加1,并返回所述子键。
5.根据权利要求1所述的数据分散并发方法,其特征在于,对所述队列中的数据进行写操作的步骤包括: 启动写进程; 锁定一个队列; 从所述锁定的队列中读数据; 判断所述队列是否为空,若是,则遍历下一个队列,并重新锁定所述遍历的队列,若否,则将所述队列中的数据进行写操作。
6.根据权利要求1所述的数据分散并发方法,其特征在于,在所述获取数据及所述数据的主键之后,所述根据所述主键分配相应的子键之前,还包括: 判断所述数据是否为新增数据,若是,则根据所述主键分配相应的子键,若否,则进一步判断所述数据是否为修改数据,若是,则更新提醒,并根据所述主键分配相应的子键,若否,则删除所述数据。
7.一种数据分散并发装置,其特征在于,包括: 获取模块,用于获取数据及所述数据的主键; 分配模块,用于根据所述主键分配相应的子键; 写存储模块,用于根据所述子键将所述数据路由至相应的队列,并将所述队列中的数据进行写操作。
8.根据权利要求7所述的数据分散并发装置,其特征在于,所述分配模块包括: 判断子模块,用于判断是否存在所述主键的分组标识,若存在,则进一步判断是否有所述分组标识下的子键; 自增子模块,用于在所述分组标识下有子键时,将所述子键下的记录数增加1, 分配子模块,用于返回所述子键; 生成子模块,用于在所述分组标识下无子键时,生成所述分组标识下的子键; 所述自增子模块还用于在生成所述分组标识下的子键后,将所述子键下的记录数增加1,所述分配子模块还用于返回所述生成的子键。
9.根据权利要求8所述的数据分散并发装置,其特征在于,所述生成子模块还用于在判断不存在所述主键的分组标识,为所述主键分配分组标识,并生成所述分组标识下的子键;所述自增子模块还用于将所述生成的子键下的数据记录数增加I ;所述分配子模块还用于返回所述生成的子键。
10.根据权利要求8所述的数据分散并发装置,其特征在于,所述判断子模块还用于在所述判断所述分组标识下有子键的步骤之后,判断所述子键的数据记录数是否大于或等于预设值;所述自增子模块还用于在所述数据记录数大于或等于预设值时,在所述分组标识下将所述子键数增加1,并在所述更新后的子键下的数据记录数增加I;所述分配子模块还用于返回所述更新后的子键;所述自增子模块还用于在所述数据记录数小于预设值时,将所述子键下的数据记录数增加I,所述分配子模块还用于返回所述子键。
11.根据权利要求7所述的数据分散并发装置,其特征在于,所述写存储模块包括: 启动子模块,用于启动写进程; 锁定子模块,用于锁定一个队列; 读取子模块,用于从所述锁定的队列中读数据; 检测子模块,用于判断所述队列是否为空; 遍历子模块,用于在判断出所述队列为空时,遍历下一个队列; 所述锁定子模块还用于重新锁定所述遍历的队列; 写子模块,用于在所述队列不为空时,将所述队列中的数据进行写操作。
12.根据权利要求7所述的数据分散并发装置,其特征在于,所述装置还包括: 判断模块,用于在所述获取数据及所述数据的主键之后,判断所述数据是否为新增数据; 所述分配模块还用于在所述数据为新增数据时根据所述主键分配相应的子键; 所述判断模块还用于在所述数据不为新增数据时,进一步判断所述数据是否为修改数据; 更新模块,用于在所述数据为修改数据时,更新提醒; 所述分配模块还用于在所述数据为修改数据时,根据所述主键分配相应的子键; 删除模块,用于在所述数据不为修改数据时,删除所述数据。
【文档编号】G06F9/44GK104378400SQ201310357205
【公开日】2015年2月25日 申请日期:2013年8月15日 优先权日:2013年8月15日
【发明者】林洁文, 蔡晓鹏, 祝雄锋, 胡戊, 刘洋 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1