MongoDB应用场景
业务应用场景
传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。
“三高”需求:
- High performance - 对数据库高并发读写的需求。
- Huge Storage - 对海量数据的高效存储和访问的需求。
- High Scalability && High Availability - 对数据库的高可扩展性和高可用性的需求。
而MongoDB可应对“三高”需求。
具体的应用场景
- 社交场景,使用MongoDB存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。
- 游戏场景,使用MongoDB存储游戏用户信息,用户和装备、积分等直接以内嵌文档的形式存储、方便查询、高效存储和访问。
- 物理场景,使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
- 物流网场景,使用MongoDB存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。
- 视频直播,使用MongoDB存储用户信息,点赞互动信息等。
以上应用场景中,数据操作方面的共同特点是:
- 数据量大。
- 写入操作频繁(读写都很频繁)。
- 价值较低的数据,对事务性要求不高。(比如金钱,这些数据应尽可能选择关系型数据库操作)
对于这样的数据,我们更适合使用MongoDB来实现数据的存储。
什么使用选择MongoDB?
在架构选型上,除了上述的三个特点,如果你还在犹豫是否要选择它?可以考虑以下的一些问题:
- 应用不需要事务及复杂join 的查询(MongoDB中一般采用内嵌进行查询)。
- 新应用,需求会变,数据模型无法确定,想快速迭代开发。
- 应用需要2000-3000以上的读写QPS(更高也可以)
- 应用需要TB甚至PB级别数据存储
- 应用发展迅速,需要能快速水平扩展
- 应用需求存储的数据不丢失
- 应用需要99.999%高可用
- 应用需要大量的地理位置查询、文本查询
如果上述有1个符合,可以考虑MongoDB、2个及以上符合,选择MongoDB绝不会后悔。
思考:如果使用Mysql呢?
答:相对MySQL,MongoDB可以以更低的成本解决问题(包括学习、开发、运维等成本)