[发明专利]一种网络游戏数据库分表的方法有效
申请号: | 201010622615.X | 申请日: | 2010-12-29 |
公开(公告)号: | CN102081651A | 公开(公告)日: | 2011-06-01 |
发明(设计)人: | 杨纮宇 | 申请(专利权)人: | 北京像素软件科技股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 王一斌;王琦 |
地址: | 102200 北京市昌平*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 网络游戏 数据库 方法 | ||
技术领域
本发明涉及网络技术领域,更具体地,涉及一种网络游戏数据库分表的方法。
背景技术
网络游戏上线之后,网络游戏系统产生的数据越来越多。为了保证网络游戏系统高效地读写数据库中的数据,需要对数据库中所存储的数据分表。使用哈希算法将大量数据均匀分布到多个表中,从而有效地控制单表数据量,提高读写效率。
例如:假设表总数为N,那么输入值为K的数据应该保存在序号为Hash(K)mod N的表里。K对N取模,得到K所属表,将K保存在所属表中。按照上述的哈希算法,能够有效地将网络游戏系统产生的数据均匀分布在多个表里。
另外,可以根据负载情况动态地增减表数量,再将增减表中的数据均匀分布到各个表中,这样数据库系统就拥有平滑扩容能力。将数据库负载与程序逻辑分离,为开发人员提供高效的可扩展的数据库架构。
例如:表总数N发生改变,那么通过Hash(K)mod N重新计算发生变化的表中的数据所属表。即以前存储在X号表的数据,重新计算后保存到了Y号表。
下面举例说明重新计算数据所属表。
假设有3个数据样本X,Y,Z,
Hash(X)=1,
Hash(Y)=2,
Hash(Z)=3。
有0,1,2三个表,则可用表数量为3,根据取模规则Hash(K)mod N得到:
Hash(X)mod 3=1 mod 3=1;
Hash(Y)mod 3=2 mod 3=2;
Hash(Z)mod 3=3 mod 3=0。
即数据X放在1号表,数据Y放在2号表,数据Z放在0号表。
由于0号表失效,可用表数量变为2,再次根据取模规则Hash(K)mod N得到:
Hash(X)mod 2=1 mod 2=1;
Hash(Y)mod 2=2 mod 2=0;
Hash(Z)mod 3=3 mod 2=1。
即数据X放在1号表,数据Y放在0号表,数据Z放在1号表。
可以看出数据Y和数据Z的位置在表数量N发送变化后改变,因此必须重新导入数据Y和数据Z才能建立起正确的位置信息。
可见,由于表数量发生变化引起数据分表的变化。可以估算出需要重新分表的数据量。
假设数据总量DN,当前表总量TN,需重建的数据量RN的最优取值如下:
在表数量变化为1的情况下,
RN=DN*2/TN。
在表数量变化为N,N大于1的情况下,
RN=DN*(1+N)/TN。
由上述计算公式可以得出,表数量变化为1的情况下,
当TN为3时,将重建2/3的总数据;当TN为4时,将重建2/4的总数据。
虽然重建的数据量随着表数量增加逐渐减小,但在实际应用中表总量不会太大,因此上述方法需要重建的数据量很大。
发明内容
本发明实施例提出一种网络游戏数据库分表的方法,在表数量变化的情况下,减少需要重建的数据量。
本发明实施例的技术方案如下:
一种网络游戏数据库分表的方法,该方法包括:
将网络游戏数据库设置为由取值范围限定的虚拟圆,在所述虚拟圆上包括至少一个表,其中每个表中的虚拟节点在所述虚拟圆上均匀分布;
计算待分表数据的随机数,在所述取值范围内根据所述随机数将所述待分表数据插入虚拟节点中。
在虚拟圆上增加或减少表,所述根据所述随机数将所述待分表数据插入虚拟节点中后进一步包括,重新计算所述虚拟圆中每个数据的随机数,根据再次计算得到的随机数将每个数据插入变化后表的虚拟节点中。
所述在所述取值范围内根据所述随机数将数据插入虚拟节点中包括,所述取值范围内,在所述虚拟圆上查找不小于所述随机数最近的虚拟节点,将所述待分表数据插入所述虚拟节点中。
所述取值范围是20到232。
所述每个表所包括的虚拟节点数目相同。
所述每个表包括100至200个虚拟节点。
从上述技术方案中可以看出,在本发明实施例中,将网络游戏数据库设置为由取值范围限定的虚拟圆,在所述虚拟圆上包括至少一个表,其中每个表中的虚拟节点在所述虚拟圆上均匀分布,确定每个表的虚拟节点的分布。计算待分表数据的随机数,在所述取值范围内根据所述随机数将所述待分表数据插入虚拟节点中。根据待分表数据的随机数,确定其位置进一步确定其所属表。由于,每个表中的虚拟节点都是均匀分布在虚拟圆中,经过试验在表数量变化的情况下,减少需要重新分表的数据量。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京像素软件科技股份有限公司,未经北京像素软件科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010622615.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:钢筋无接头下料加工制作生产线
- 下一篇:微型车前门间隙及整车间隙检测调整块