目录
MongoDB
简介
特点
MongoDB的适用场景
MongoDB的行业具体应用
如何抉择是否使用MongoDB
MongoDB
简介
MongoDB 是免费开源的跨平台 NoSQL 数据库,命名源于英文单词 humongous,意思是「巨大无比」,可见开发组对 MongoDB 的定位。它使用JSON类似的BSON(二进制JSON)格式来存储数据,可以处理大量的结构化、半结构化和非结构化数据。
{name: "itBaiZhan",age: 18,hobbies: ["python", "mongo"]
}
特点
文档型的数据存储方式有几个重要好处:
- 文档的数据类型可以对应到语言的数据类型,如数组类型(Array)和对象类型(Object)
- 文档可以嵌套,有时关系型数据库涉及几个表的操作,在 MongoDB 中一次就能完成,可以减少昂贵的连接花销;
- 文档不对数据结构加以限制,不同的数据结构可以存储在同一张表
-
文档存储:MongoDB以文档的形式存储数据,一个文档类似于关系数据库中的一行记录,但是具有更灵活的结构。文档可以包含不同的字段,字段可以是嵌套的和具有不同数据类型的。
-
强大的查询语言:MongoDB提供了丰富的查询语言,可以根据各种条件和操作符来查询文档。它支持字段投影、排序、聚合等功能,并且具有灵活的查询语法。
-
高可扩展性:MongoDB具有良好的可扩展性,可以通过添加更多的服务器来处理大规模数据和高负载。它支持水平扩展(通过分片)和垂直扩展(通过复制集)。
-
复制和高可用性:MongoDB支持数据复制来实现高可用性和数据冗余。复制集是一组MongoDB服务器的集合,其中包含一个主服务器(用于写操作)和多个从服务器(用于读操作和备份)。
-
灵活的数据模型:MongoDB的数据模型非常灵活,可以根据应用程序的需求进行快速迭代和演变。字段可以根据需要添加、修改或删除,而无需对整个数据库进行模式更改。
-
高性能:MongoDB具有出色的性能表现,特别适用于大数据量和高并发负载。它支持索引、查询优化、内存映射存储引擎等技术,以提供快速的数据访问和处理能力。
MongoDB的适用场景
-
网站数据
Mongo 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性
-
缓存
由于性能很高,Mongo 也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源过载
-
大尺寸、低价值的数据
使用传统的关系型数据库存储一些大尺寸低价值数据时会比较浪费,在此之前,很多时候程序员往往会选择传统的文件进行存储
-
高伸缩性的场景
Mongo 非常适合由数十或数百台服务器组成的数据库,Mongo 的路线图中已经包含对MapReduce 引擎的内置支持以及集群高可用的解决方案
-
用于对象及JSON 数据的存储
Mongo 的BSON 数据格式非常适合文档化格式的存储及查询
MongoDB的行业具体应用
-
游戏场景
使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新
-
物流场景
使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
-
社交场景
使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
-
物联网场景
使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
-
直播
使用 MongoDB 存储用户信息、礼物信息等
如何抉择是否使用MongoDB
应用特征 | Yes/No |
---|---|
应用不需要复杂事务及复杂join支持 | yes |
新应用,需求会变,数据模型无法确定,想快速迭代开发 | ? |
应用需要2000-3000以上的读写QPS(更高也可以) | ? |
应用需要TB甚至 PB 级别数据存储 | ? |
应用发展迅速,需要能快速水平扩展 | ? |
应用需要大量的地理位置查询、文本查询 | ? |
应用需要99.999%高可用 | ? |
有一个yes就可以选择MongoDB,两个以上yes,选MongoDB绝对不后悔