#mongodb真的非常适合游戏开发
从我的游戏生涯来说,用过mysql做数据库,用过redis做数据库,用过mongodb。mysql当然是最老的一批数据库方案,当时mongodb还没流行,现在而言mongo应该占据了游戏开放的主流数据库。
###mysql对比mongodb主要缺点有两点:
1.增加数据字段需要修改数据库
2.不支持分片集群
我想用过mysql的都知道第一点,每次更新,需要修改数据库结构,非常的麻烦,而且常常容易出错;
有的项目用mysql做了一个曲线救国的策略,就是把数据序列化成一个字符串,或者是二进制存到mysql里面,读取之后再反序列化。这就是在用关系型数据库,做nosql用,而且还没有nosql好用,既然这样为何不直接用mongodb;
至于第二点,对于大数据,mysql的做法基本就是分库分表,但没有mongodb分片集群,天然对于海量数据的支持那么好;
###redis对比mongodb
这里的redis,并不是缓存,而是用作主存。为什么会这样用,主要是快,reids的快,我想没人会反对吧,对于游戏高并发的场景下,很多时候无法应对压力,设计者们,投机取巧的直接使用redis做主存。redis的主要问题在于数据持久化,和内存占用。针对游戏而言,活跃玩家并不多,尤其是开服时间久了之后,大量的僵尸账号,而redis全部使用内存,浪费大量的内存资源。
redis的持久化分为RDB和AOF或者混合,RDB会丢数据,AOF性能差。不过就redis的稳定性而言,还是非常不错的,通过集群部署,基本没有宕机,所以用redis做主存的方案还是有人用。
###还有其他的数据库,比如sqlserver,oracle等,都跟mysql属于同一类型的关系型数据库,基本问题也都一致。