MongoDB的适用场景
- 网站数据:MongoDB非常适合实时插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
- 缓存:由于性能很高,Mongo也适合作为信息存储的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层数据资源过载。
- 大尺寸、低价值的数据:使用传统的关系型数据库存储一些大尺寸低价值数据时比较浪费资源,在此之前,很多程序员往往选择使用传统文件存储的方式。
- 高伸缩性的场景:Mongo非常适合由数十台或数百台服务器组成的数据库,Mongo的线路图中已经包含对MapReduce引擎的内置支持以及集群高可用的解决方案。
- 用于对象及JSON数据的存储:Mongo的BSON数据格式非常适合文档化的存储及查询。
MongoDB的行业应用场景
- 游戏场景:使用MongoDB存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便直接查询、更新。
- 物流场景:使用MongoDB存储订单信息,订单状态在运行过程中会不断更新,以MongoDB内嵌数据的形式来存储,一次查询就能将订单所有的变更信息读出来。
- 社交场景:使用MongoDB存储用户信息,以及用户发布的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。
- 物联网场景:使用MongoDB存储所有接入的智能设备,以及设备汇报的日志信息,并对这些信息进行多维度的分析。
- 直播:使用MongoDB存储用户信息、礼物信息等。
如何抉择是否使用MongoDB
首先应用对事务要求低,并且没有特别复杂的Join操作,然后对以下可选的内容需求达到2个以上(越多越好),可以考虑使用MongoDB作为数据存储。
应用特征 | Yes/No |
---|---|
应用不需要事务以及复杂的Join | 必须Yes |
新应用,需求汇编,数据模型无法确定,向快速迭代开发 | 可选 |
应用需要2000-3000以上的读写QPS(更高也可以) | 可选 |
应用需要TB甚至PB的级别的数据存储 | 可选 |
应用发展迅速,需要能快速水平扩展 | 可选 |
应用要求存储的数据不丢失 | 可选 |
应用需要99.999%的高可用 | 可选 |
应用需要大量的地理位置、文本查询 | 可选 |