MongoDB相关概念
业务应用场景
MongoDB主要针对以下场景:
- High Performance - 对数据库高并发读写的需求。
- Huge Storage - 对海量数据的高效存储和访问的需求。
- High Scalability && High Availability - 对数据库的高可扩展性和高可用性的需求。
具体场景分析:
- 社交场景,使用MongoDB存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。
- 游戏场景,使用MongoDB存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效存储和访问。
- 物流场景,使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能订单多有的变更读取出来。
- 物联网场景,使用MongoDB存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。
- 视频直播,使用MongoDB存储用户信息,点赞互动信息等。
总结:MongoDB更加适合在数据量大
、写入操作频繁(读写都很繁琐)
、价值较低的数据,对事务性要求不高
时使用。
技术选型:
在架构选型上,除了上述是三个特点外,还可以考虑以下的一些问题:
- 应用不需要事务及复杂join支持
- 新应用,需求会变,数据模型无法确定,想快速迭代开发
- 应用需要20000~30000以上的读写QPS(更高也可以)
- 应用需要TB甚至PB级别的数据存储
- 应用发展迅速,需要能快速水平扩展
- 应用要求存储的数据不丢失
- 应用需求99.999%高可用
- 应用需要大量的地理位置查询、文本查询
上述条件达成2个及以上,建议无脑选择MongoDB,相对于MySQL可以用更低的成本解决问题(包括学习、开发、运维等成本)。
MongoDB简介
MongoDB是一个基于分布式文件存储 [1] 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。