MongoDB概述

MongoDB是一个高性能、高可用的、自动伸缩的开源的文档型数据库。MongoDB数据库把文档存在集合collection)中。集合中的文档它们不需要相同的schema,每个文档都可以有不同的schema。 这使得MongoDB比传统的RDBMS更灵活,因为你不用为预先定义schema而操心。

如图所示:



Document 数据库

  在MongoDB中一条记录就是一个document,是由 field 和值这样的键值对组成的数据结构。MongoDB的document类似于一个JSON对象,document中的 field 的值也可以包括其他的document ,数组和 document的数组。下图就是一个document的样例:

使用 document 的优点:

  • 可以与许多编程语言中的本地数据类型相对应
  • 由于document支持嵌套,这样可以减少类似关系型数据库中的表连接操作,减少了性能开销
  • 动态的schema相对关系型数据的表的schema有更大的灵活度,比如方便的提供多态的特性

关键特性

高性能

MongoDB提供高性能的数据持久化。特别是:

  • 支持嵌入的数据模型可以减少 I/O的操作
  • 通过索引支持更快的查询,并且索引对嵌入的document和数组也有作用

丰富的查询语言

MongoDB提供丰富的查询语言支持CRUD的读写操作,并且还支持:

  •  聚合管道,是一个基于数据处理管道概念的数据聚合的框架
  •  全文检索和地理化信息查询

高可用

MongoDB的复制机制又称 replica set (副本集),提供:

  •   自动故障转移
  •   数据冗余备份

一个副本集是一组MongoDB服务器,它们维护相同的数据集,提供冗余和增加数据可用性。

水平扩充

 MongoDB提供了水平的可伸缩性作为其核心功能的一部分:

  •  可以在一个集群的机器上进行数据切片
  •  从3.4开始,MongoDB支持基于分片键创建数据区(Zone)。在一个负载均衡的集群中,MongoDB读写操作可以只涉及到数据区内的那些分片数据。

支持多个存储引擎

 MongoDB支持以下存储引擎:

  •   WiredTiger 存储引擎 (包括支持空闲时密 ,这是Mongo默认的存储引擎)
  •   In-Memory 存储引擎
  •   MMAPv1存储引擎 (4.0版本被弃用)

此外,MongoDB还提供了可插入的存储引擎API,允许第三方为MongoDB开发存储引擎。

原文地址:https://www.cnblogs.com/hzhuxin/p/9590254.html