加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

MongoDB何以赢得游戏行业青睐

发布时间:2020-04-24 09:47:35 所属栏目:传媒 来源:站长网
导读:始于2019年年底的这场新冠疫情改变了我们的生活方式,让大家居家的时间明显多了起来。居家隔离期间,游戏成为了很多人排遣寂寞的一种方式,由此带来了游戏市场的异常火爆。有媒体报道,今年春节期间某款游戏单日营收超过20亿元。实际上,即使没有疫情,游

始于2019年年底的这场新冠疫情改变了我们的生活方式,让大家居家的时间明显多了起来。居家隔离期间,游戏成为了很多人排遣寂寞的一种方式,由此带来了游戏市场的异常火爆。有媒体报道,今年春节期间某款游戏单日营收超过20亿元。实际上,即使没有疫情,游戏行业也是一个利润丰厚、潜力巨大的市场。此前有研究机构预测2020年游戏市场营收将达到1600亿美元,现在加上疫情的因素,这个数字肯定只增不减。

游戏市场虽然潜力巨大,前景看好,但是竞争也非常激烈。游戏市场比拼的是谁能更快速地开发出游戏,谁的游戏让玩家体验更佳,谁的更新速度快,这就对游戏的开发、运营提出非常大的挑战。显然,要做好这一切涉及诸多方面,而一个好用的数据库产品无疑将为游戏的开发和后期的运营奠定良好的基础,MongoDB正是这样一款数据库产品。

MongoDB何以赢得游戏行业青睐

很多知名游戏采用了MongoDB数据库

难以满足的游戏数据处理需求

数据库是游戏软件的核心组件,游戏玩家的各种信息(个人属性、装备、社交信息等)、运营数据、游戏场景数据等都需要借助数据库来保存。过去游戏软件主要采用传统的关系数据库,但传统关系型数据库并不总能很好地满足这个行业的需求。

游戏市场竞争激烈、变化快,有机构调查手机游戏平均寿命为6个月,网络游戏也不超过一年。这就要求游戏的开发要尽可能快,同时,为了保持游戏玩家的新鲜感,游戏上线后还需要不断增加新的功能、新的玩法。这些需求落实到数据库层面就要求数据库对开发人员友好,方便修改和调用,以尽可能节省开发时间。

其次,游戏上线后到底有多少玩家有很大不确定性,要准确预测非常困难。一般规律是,游戏新上线后会迎来一轮高峰,随后会逐渐下降,但也有可能因为某个事件或者某个原因重新热起来,甚至成为“爆款”。这带来的问题是:资源如果准备多了却没有足够玩家上线,造成浪费;准备少了,游戏会卡顿或者要排队,影响玩家体验。这个需求落实到数据库层面,就需要数据库具有高可扩展性,在上线人数太多资源不够时能快速扩容,人数少时能快速缩容,而且要是无缝的,以节省成本。

传统数据库在满足上述两大需求时存在不足。传统数据库具有严格表结构,表结构一旦定义后如果更改非常困难,还可能涉及应用程序的修改,这会带来很多隐患。传统数据库一种常见的表结构是给游戏的每一种武器、每个物品、每一类元素建一个表,表之间通过ID关联,比较清晰。但是,遇到游戏变更要加表、变更表时就比较麻烦。而且,随着表数量越来越多,数据库的整体性能也会降低。

另外,传统数据库大多数是集中式架构,如果数据量太大需要扩容,往往需要分库分表,这通常要修改程序,或者采用Oracle RAC这样的高端数据库软件,虽然能部分解决大数据量的问题,但成本高,同时可扩展的数据容量也受限。

除了传统数据库之外,也有些游戏直接抛弃了数据库,采用数据序列化技术,把数据变成一个二级制的数据块保存在数据库中,所有数据的处理都在内存完成,好处是性能非常高,但所有操作都依赖程序逻辑来完成,开发和维护成本都非常高。

传统数据库在游戏市场的这些不足给了MongoDB以机会,MongoDB也抓住这一机会,迅速在游戏市场站稳脚跟,并持续开疆拓土。

MongoDB:游戏行业的福音

MongoDB能进入游戏市场是因为其有很多特质非常适合游戏软件,比如自由的表结构、高扩展性等,能实现海量数据的存储、高效地读写以及大数据量的分析。

MongoDB被称为是最像关系型数据库的非关系型数据库,其具有强大的查询功能以及较完善的索引机制,方便对数据进行类似关系型数据库的各种操作。而且,作为文档型数据库的代表,MongoDB采用的是BSON文件格式,非常接近对象模型,对开发人员十分友好。

更为重要的是,MongoDB不像关系型数据库对表结构有着严格的行和列的规定,MongoDB的schema-free的特性允许随时新增字段,允许数据库中的表(集合)内包含不同结构的文档,从而减少了不同表(集合)之间的关联。MongoDB这一特性对于游戏软件非常重要。因为游戏需求变化快,需要快速迭代,不断加入新功能,常常导致需要修改数据模型。

MongoDB另一个被游戏行业非常看重的特性是其动态扩展能力和高可用性。作为大数据时代诞生的新一代数据库,MongoDB从诞生之初就是面向大数据应用场景,其分布式架构天生地具有快速的水平扩展能力,非常适合海量数据的各种应用场景。同时,MongoDB的分片技术已在很多生产环境中得到验证,用户只需要选一个合适的片键(shard key)即可。顺便一提的是,从MongoDB 4.2开始,管理人员可以直接修改片键的值,MongoDB会自动根据新的片键值将文档移动新的片上。这既保证了原子性又大大简化了操作。

而在高可用性方面,MongoDB也为游戏软件的可靠运行提供了充分的支持。MongoDB的复制集是一个相当成熟的高可用架构,它通过一主多备来保证服务的可用性:当主宕机后还存活的备用节点会自动选举出新的主节点,在某个节点宕机时自动进行切换,保证游戏服务不中断。

除了上面所说的这些特点,MongoDB还有一些功能给游戏开发人员带来了很大方便。比如,今天的游戏一般都有“寻找附件玩家”这种社交功能,用MongoDB就很容易实现。MongoDB支持二维空间索引,利用空间索引可以方便地实现在地图上查找距离最近的玩家这类功能。还有,游戏中经常会要实现一些装备定时免费或者道具自动过期,这些通过MongoDB的TTL索引(TTL索引支持文档在一定时间之后自动过期删除)可以轻而易举的实现。

此外,运营也是游戏软件成功的关键。运营数据主要以日志为主,通常数据量非常大,MongoDB提供的MapReduce功能可以完成一些比较复杂的统计和聚合操作,为大数据的分析提供了强有力的保证。不仅如此,MongoDB官方还提供了Hadoop、Spark等连接件,通过该连接件,Spark等可以直接将MongoDB当成HDFS使用,避免了资源的浪费,提高了整个系统的使用率。

综上所述,这些功能大大简化了游戏开发人员和运维人员的工作,加快游戏软件上市脚步,提高运营效率。

云服务Atlas加持,助力全球化部署

除了MongoDB数据库本身的这些特性之外,游戏服务商还可以进一步从MongoDB的Atlas云服务来获取对游戏部署和运营最大程度的支持。Atlas是MongoDB 2016年发布的托管云服务,由MongoDB负责运营,在AWS、谷歌云(GCP)、微软的Azure上都有提供。今天,Atlas是MongoDB发展最快的一个业务,也是MongoDB现在的主要收入来源之一。云服务天生的优势是方便全球化部署,再加上Atlas本身的诸多特性,使得Atlas很受那些需要全球化部署的游戏服务商的认可。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读