1.简介

1.1使用场景

  • 游戏场景,使用MongoDB存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新(一个角色的所有信息就用一个文档存储
  • 物流场景,使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能讲订单所有的变更读取出来。(如果是Mysql进行存储的话,那频繁的去update物流信息,造成效率更低了)
  • 社交场景,使用MongoDB存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
  • 物联网场景,使用MongoDB存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
  • 视频直播,使用MongoDB存储用户信息,礼物信息等

1.2性能优越

  • 在使用场合下,千万级别的文档对象,近10G的数据,对有索引的ID查询不会比Mysql慢(众所周知Mysql的索引查询速度是很快的)
  • 而对非索引字段的查询,则是全面胜出
  • mysql实际无法胜任大量数据量下任意字段的查询,而mongodb查询性能实在牛
  • 下面可以看一组测试数据

1.3 MongoDB的优点

1.3.1 弱一致性(最终一致),更能保证用户的访问速度

不保证执行过程中数据的一致性,但是可以保证最终结果的数据一致性。因为在分布式环境下,各个节点做数据同步的时候,读到的数据不一定是最新的数据

1.3.2 文档结构的存储方式,能够更便捷的获取数据

以文档为数据结构,减少了连接查询,支持JSON语法,每个文档所存储的属性不同,文档里面还可以嵌套文档,提高查询效率

1.3.3 内置GridFS,支持大容量的存储

  • GridFS是一个出色的分布式文件系统,可以支持海量的数据存储(可以做大数据相关的操作)
  • 内置了GridFS的MongoDB,能够满足对大数据集的快速范围查询

1.3.4内置Sharding分片

1PB = 1024TB

 1.3.5 第三方支持丰富

1.4 MongoDB的缺点

1.4.1 事务支持不友好

  • 所以事务要求严格的系统(银行系统)肯定不能用它。

1.4.2 占用空间过大

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐