目录
一、Mongodb简单介绍:
MongoDB 是一个基于分布式文件存储的数据库。在高负载的情况下,添加更多的节点,可以保证服务器性能。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
二、Mongodb与关系型数据库对照关系:
1、存储方式对比:
在传统的关系型数据库中,存储方式是以表的形式存放,而在MongoDB中,以文档的形式存在。
2、对应关系说明:
3、结构对比详解:
SQL Terms/Concepts | MongoDB Terms/Concepts |
database | database |
table | collection |
row | document or BSON document |
column | field |
index | index |
table joins | embedded documents and linking |
primary key Specify any unique column or column combination as primary key. | primary key In MongoDB, the primary key is automatically set to the _id field. |
aggregation (e.g. group by) | aggregation pipeline See the SQL to Aggregation Mapping Chart. |
三、Mongodb使用场景:
1、mongodb使用场景:
网站数据、缓存等大尺寸、低价值的数据。在高伸缩性的场景,用于对象及JSON数据的存储。
2、如何决定是否使用mongodb存储:
应用特征 | Yes/No? |
我的数据量是有亿万级或者需要不断扩容 |
|
需要2000-3000以上的读写每秒 |
|
新应用,需求会变,数据模型无法确定 |
|
我需要整合多个外部数据源 |
|
我的系统需要99.999%高可用 |
|
我的系统需要大量的地理位置查询 |
|
我的系统需要提供最小的latency |
|
我要管理的主要数据对象<10 |
|
在上面的表格中进行选择,但有1个yes的时候:可以考虑MongoDB;当有2个以上yes的时候:不会后悔的选择!
四、Mongodb慎用场景:
慎用场景 | 原因 |
PB 数据持久存储大数据分析数据湖 | Hadoop、Spark提供更多分析运算功能和工具,并行计算能力更强 MongoDB + Hadoop/Spark |
搜索场景:文档有几十个字段,需要按照任意字段搜索并排序限制等 | 不建索引查询太慢,索引太多影响写入及更新操作,elasticsearch拥有很强的全文搜索能力,并且可集群、高可用。 |
ERP、CRM或者类似复杂应用,几十上百个对象互相关联 | 关联支持较弱,事务较弱 |
需要参与远程事务,或者需要跨表,跨文档原子性更新的 | MongoDB 事务支持仅限于本机的单文档事务 |
100% 写可用:任何时间写入不能停 | MongoDB换主节点时候会有短暂的不可写设计所限 |
五、Mongodb主要功能:
1、每个数据库都包含集合,而集合又包含文档。每个文档可以有不同的字段数。每个文档的大小和内容可以彼此不同。
2、文档结构更符合开发人员如何用各自的编程语言构造类和对象。开发人员通常会说,他们的类不是行和列,而是有一个带有键值对的清晰结构。
3、正如NoSQL数据库简介中所看到的,行(或MongoDB中调用的文档)不需要预先定义模式。相反,可以动态创建字段。
4、MongoDB中可用的数据模型允许您更容易地表示层次关系、存储数组和其他更复杂的结构。
5、可扩展性—MongoDB环境非常容易扩展。世界各地的公司都定义了集群,其中一些公司运行100多个节点,数据库中有大约数百万个文档。