什么是 MongoDB? Archi结构、特点和示例
⚡ 智能摘要
MongoDB 是一个面向文档的 NoSQL 数据库,用于存储海量数据,它使用集合和文档而不是表和行。本资源对此进行了解释。 MongoDB 功能、文档示例、关键架构组件、使用理由、数据建模以及它与关系数据库的区别。

什么是 MongoDB?
MongoDB 是一种面向文档的 NoSQL 数据库,用于存储大量数据。它不像传统关系数据库那样使用表和行, MongoDB 使用集合和文档。文档由键值对组成,键值对是 MongoDB集合包含文档和函数的集合,这相当于关系数据库表。 MongoDB 是一个在 2000 年代中期出现的数据库。
MongoDB 产品特性
- 每个数据库都包含集合,集合中又包含文档。每个文档都可能不同,字段数量也可能不同。每个文档的大小和内容也可能彼此不同。
- 文档结构更符合开发人员在各自编程语言中构建类和对象的方式。开发人员经常会说他们的类不是行和列,而是具有带有键值对的清晰结构。
- 行(或称为文档) MongoDB无需预先定义模式。相反,字段可以动态创建。
- 可用的数据模型 MongoDB 允许您表示层次关系、存储数组以及更轻松地存储其他更复杂的结构。
- 可扩展性 ——由数百家创建、维护和提供物联网(IoT)全球开放标准的公司所组成的 MongoDB 这些环境具有很强的可扩展性。世界各地的公司都构建了集群,其中一些集群运行着 100 多个节点,数据库中存储着数百万份文档。
MongoDB 例如:
下面的例子展示了如何在 MongoDB.
- _id 字段由以下方式添加 MongoDB 唯一地标识集合中的文档。
- 需要注意的是,订单数据(订单ID、产品和数量)在关系数据库管理系统中通常会存储在单独的表中,但实际上它作为嵌入式文档存储在集合本身中。 MongoDB这是数据建模方式的关键区别之一。 MongoDB.
的关键组成部分 MongoDB Archi质地
以下是一些常用的术语 MongoDB:
- _ID – 这是每个 MongoDB 文档中。_id 字段表示 MongoDB 文档。_id 字段就像文档的主键。如果您创建一个没有 _id 字段的新文档, MongoDB 系统会自动创建该字段。例如,如果我们看一下上面的客户表示例, MongoDB 将为集合中的每个文档添加一个 24 位唯一标识符。
| _ID | 顾客ID | 顾客姓名 | 订单号 |
|---|---|---|---|
| 563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
| 563479cc7a8a4246bd47d784 | 22 | 特雷弗·史密斯 | 222 |
| 563479cc9a8a4246bd57d784 | 33 | 妮可 | 333 |
- 购物 这是一个团体ping of MongoDB 文档。集合相当于在任何其他关系数据库管理系统(RDBMS)中创建的表,例如: Oracle 或者 MS SQL。集合存在于单个数据库中。正如引言中所述,集合不强制执行任何结构。
- 光标 – 这是指向查询结果集的指针。客户端可以遍历游标来检索结果。
- 数据库 这是一个用于存储集合的容器,就像关系数据库管理系统(RDBMS)中的表容器一样。每个数据库在文件系统中都有自己的一组文件。 MongoDB 服务器可以存储多个数据库。
- 文件 – 记录 MongoDB 集合本质上就是一个文档。而文档又由字段名和字段值组成。
- 领域 文档中的键值对称为字段。一个文档可以包含零个或多个字段。字段类似于关系数据库中的列。下图展示了一个包含键值对的字段示例。例如,在下面的示例中,CustomerID 和 11 就是文档中定义的一个键值对。
- JSON – 这就是所谓的 JavaScript 对象表示法。这是一种人类可读的纯文本格式,用于表达结构化数据。JSON 目前在许多编程语言中都受支持。
简单说一下 _id 字段和普通集合字段之间的主要区别。_id 字段用于唯一标识集合中的文档,由以下方式自动添加: MongoDB 当集合被创建时。
为何使用 MongoDB?
以下是一些人们应该开始使用的原因 MongoDB:
- 面向文档 - 自从 MongoDB 是一个意念波· NoSQL的 类型数据库,它不是以关系类型格式存储数据,而是以文档形式存储数据。这使得 MongoDB 非常灵活,能够适应真实的商业环境和需求。
- 即席查询 – MongoDB 支持按字段搜索、范围查询和正则表达式搜索。可以进行查询以返回文档中的特定字段。
- 索引 – 可以创建索引来提高搜索性能。 MongoDB. 任何字段 MongoDB 文档可以被索引。
- 复制 – MongoDB 利用副本集可以实现高可用性。副本集由两个或多个副本组成。 MongoDB 实例。每个副本集成员在任何时候都可以充当主副本或辅助副本的角色。主副本是与客户端交互并执行所有读/写操作的主服务器。辅助副本使用内置复制功能维护主副本的数据副本。当主副本发生故障时,副本集会自动切换到辅助副本,此时辅助副本将成为主服务器。
- 负载均衡 – MongoDB 使用分片的概念,通过将数据拆分到多个 MongoDB 实例。 MongoDB 可以在多台服务器上运行,平衡负载和/或复制数据,以便在硬件故障时保持系统正常运行。
数据建模 MongoDB
正如我们在引言部分所看到的,数据在 MongoDB 具有灵活的架构。与 SQL 数据库,在插入数据之前必须声明表的架构, MongoDB的集合不强制执行文档结构。这种灵活性使得 MongoDB 如此强大。
在对数据进行建模时 MongoDB请记住以下几点:
- 该应用程序需要满足哪些要求? – 查看应用程序的业务需求,了解应用程序需要哪些数据以及数据类型。基于此,确保文档结构相应地确定下来。
- 数据检索模式有哪些? – 如果您预计查询使用量会很大,那么请考虑在数据模型中使用索引来提高查询效率。
- 数据库中是否频繁发生插入、更新和删除操作? 如果需要,请重新考虑在数据建模设计中使用索引或引入分片,以提高整体效率。 MongoDB 环境。
之间的区别 MongoDB 和关系数据库管理系统
以下是 MongoDB 以及关系数据库管理系统(RDBMS):
| RDBMS | MongoDB | 区别 |
|---|---|---|
| 表 | 购物 | In RDBMS表格包含用于存储数据的列和行,而在 MongoDB 这种结构被称为集合。集合包含文档,文档又包含字段,字段则是键值对。 |
| 行 | 文件 | 在 RDBMS 中,行表示表中单个隐式结构化的数据项。在 MongoDB,数据存储在文档中。 |
| 柱 | 领域 | 在 RDBMS 中,列表示一组数据值。这些在 MongoDB 它们被称为字段。 |
| 加入 | 嵌入式文档 | 在关系数据库管理系统(RDBMS)中,数据有时分散在多个表中,为了显示所有数据的完整视图,有时会跨表进行连接(join)以获取数据。 MongoDB数据通常存储在单个集合中,但通过嵌入文档进行分隔。因此,其中不存在连接(join)的概念。 MongoDB. |
除了术语上的差异外,以下还列出了一些其他差异:
- 关系数据库以强制数据完整性而闻名。这并不是 MongoDB.
- RDBMS 要求数据 标准化 首先,规范化数据可以防止出现孤立记录和重复记录。规范化数据需要创建更多表,这会导致更多表连接,从而需要更多键和索引。随着数据库规模的扩大,性能问题可能会逐渐显现。再次强调,这并非明确要求。 MongoDB. MongoDB 灵活,不需要先对数据进行规范化。


