游戏后端db选择

存储是整个游戏后端架构中最重要的之一,以下是一种可用于全区全服,或者分区分服的一种做法。

大家普遍使用mysql,对于分区分服,基本上没问题,普通的单实例mysql可以胜任(合服可能是个例外?);

对于全区全服,可能就有问题了,单实例的mysql,目前各云平台,包括腾讯自研的,给出的iops普遍是最高2w+,

人数特别多的时候,基本上扛不住,即使使用了redis做优化,这时候仍然要使用mysql


1)为什么以要使用mongodb?

* 场景特别适合,目前服务器是把mysql当成kv存储的,用户间的数据没有关联;

* 如果用mysql,用户数据分散到多张表,一次load要读n张表,相当耗时,如果用户数据存成一个mongodb里的文档,那么可能只需要读一次;

* mongodb的性能不差,合理使用下,与mysql相当,甚至强过mysql;

* mongodb比较方便的做到高可能(replica set),可以方便的水平扩容(shard),水平扩容


2) mongodb怎么用?

用户数据就每人一个document存到mongodb,用户数据整体是一个大集合;

其他业务数据也存成各个集合;

要特别关注单doc大小限制(16MB),要先跟策划敲定各个用户数据的大小限制,比如有n封邮件,n个道具,n条流水;


3)运营流水数据怎么记?

* 我们是使用友商的方案的,使用hadoop来存数据?

4)排行榜

* 排行榜使用redis(单实例高可用)来实现,几千万人的排行榜是没啥问题的,以5000万人计,每人32byte的uid+8byte的分数,计40byte,5000w*40 = 2Gbyte;

你可能感兴趣的:(游戏后端db选择)