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