什么是 MongoDB? 介绍, Archi结构、特点和示例

什么是 MongoDB?

MongoDB 是一种面向文档的 NoSQL 数据库,用于存储大量数据。它不像传统关系数据库那样使用表和行, MongoDB 使用集合和文档。文档由键值对组成,键值对是 MongoDB. 集合包含文档和功能的集合,相当于关系数据库表。 MongoDB 是一个在 2000 年代中期出现的数据库。

MongoDB 账户分类

  1. 每个数据库都包含集合,而集合又包含文档。每个文档可以不同,字段数量也不同。每个文档的大小和内容可以彼此不同。
  2. 文档结构更符合开发人员在各自编程语言中构建类和对象的方式。开发人员经常会说他们的类不是行和列,而是具有带有键值对的清晰结构。
  3. 行(或称为文档) MongoDB) 不需要事先定义架构。相反,可以动态创建字段。
  4. 可用的数据模型 MongoDB 允许您更轻松地表示层次关系、存储数组和其他更复杂的结构。
  5. 可扩展性 MongoDB 环境具有很高的可扩展性。世界各地的公司都定义了集群,其中一些集群运行着 100 多个节点,数据库中有数百万个文档

MongoDB 例如:

下面的例子展示了如何在 MongoDB.

  1. _id 字段由以下方式添加 MongoDB 唯一地标识集合中的文档。
  2. 需要注意的是,订单数据(订单ID、产品和数量)在 RDBMS 中通常会存储在单独的表中,而在 MongoDB 它实际上作为嵌入文档存储在集合本身中。这是数据建模方式的关键差异之一 MongoDB.

MongoDB 例如:

的关键组成部分 MongoDB Archi质地

以下是一些常用的术语 MongoDB

  1. _ID – 这是每个 MongoDB 文档中。_id 字段表示 MongoDB 文档。_id 字段就像文档的主键。如果您创建一个没有 _id 字段的新文档, MongoDB 将自动创建字段。例如,如果我们看到上面的客户表的示例,Mongo DB 将为集合中的每个文档添加一个 24 位唯一标识符。
_ID 顾客ID 顾客姓名 订单号
563479cc8a8a4246bd27d784 11 Guru99 111
563479cc7a8a4246bd47d784 22 特雷弗·史密斯 222
563479cc9a8a4246bd57d784 33 妮可 333
  1. 购物 – 这是一组 MongoDB 文档。集合相当于在任何其他 RDMS 中创建的表,例如 Oracle 或 MS SQL。集合存在于单个数据库中。从介绍中可以看出,集合不强制任何类型的结构。
  2. 光标 – 这是指向查询结果集的指针。客户端可以遍历游标来检索结果。
  3. 数据库 – 这是一个集合容器,就像 RDMS 中用于存放表的容器一样。每个数据库在文件系统上都有自己的一组文件。 MongoDB 服务器可以存储多个数据库。
  4. 文件 – 记录 MongoDB 集合基本上称为文档。文档又由字段名称和值组成。
  5. 领域 – 文档中的名称-值对。文档有零个或多个字段。字段类似于关系数据库中的列。下图显示了具有键值对的字段的示例。因此,在下面的示例中,CustomerID 和 11 是文档中定义的键值对之一。

的关键组成部分 MongoDB Archi质地

  1. JSON – 这就是所谓的 JavaScript 对象表示法。这是一种人类可读的纯文本格式,用于表达结构化数据。JSON 目前在许多编程语言中都受支持。

简单说一下 _id 字段和普通集合字段之间的主要区别。_id 字段用于唯一标识集合中的文档,由以下方式自动添加: MongoDB 当集合被创建时。

为何使用 MongoDB?

以下是为什么应该开始使用 MongoDB

  1. 面向文档 – 自 MongoDB 是一个 NoSQL的 类型数据库,它不是以关系类型格式存储数据,而是以文档形式存储数据。这使得 MongoDB 非常灵活,可以适应真实的商业世界的情况和要求。
  2. 临时查询 – MongoDB 支持按字段搜索、范围查询和正则表达式搜索。可以进行查询以返回文档中的特定字段。
  3. 索引——可以创建索引来提高搜索的性能 MongoDB. 任何字段 MongoDB 文档可以被索引。
  4. 复制—— MongoDB 可以通过副本集提供高可用性。副本集由两个或多个 mongo DB 实例组成。每个副本集成员可以随时充当主副本或辅助副本。主副本是与客户端交互并执行所有读/写操作的主服务器。辅助副本使用内置复制来维护主副本数据的副本。当主副本发生故障时,副本集会自动切换到辅助副本,然后辅助副本将成为主服务器。
  5. 负载均衡 - MongoDB 使用分片的概念,通过将数据拆分到多个 MongoDB 实例。 MongoDB 可以在多台服务器上运行,平衡负载和/或复制数据,以便在硬件故障时保持系统正常运行。

数据建模 MongoDB

正如我们在引言部分所看到的, MongoDB 具有灵活的架构。与 SQL 数据库,在插入数据之前必须声明表的架构, MongoDB的集合不强制执行文档结构。这种灵活性使得 MongoDB 如此强大。

在 Mongo 中建模数据时,请记住以下几点

  1. 应用程序的需求是什么——查看应用程序的业务需求,了解应用程序需要哪些数据以及数据类型。在此基础上,确保相应地决定文档的结构。
  2. 什么是数据检索模式——如果您预见到查询使用量很大,那么请考虑在数据模型中使用索引来提高查询效率。
  3. 数据库中是否经常发生插入、更新和删除?重新考虑索引的使用,或在数据建模设计中根据需要加入分片,以提高整体效率 MongoDB 环境。

之间的区别 MongoDB 和关系数据库管理系统

以下是 MongoDB 和 RDBMS

RDBMS MongoDB 区别
购物 In RDBMS,表包含用于存储数据的列和行,而在 MongoDB,这个相同的结构被称为集合。集合包含文档,文档又包含字段,字段又是键值对。
文件 在 RDBMS 中,行表示表中单个隐式结构化的数据项。在 MongoDB,数据存储在文档中。
领域 在 RDBMS 中,列表示一组数据值。这些在 MongoDB 被称为 Fields。
加入 嵌入式文档 在 RDBMS 中,数据有时会分布在不同的表中,为了显示所有数据的完整视图,有时会跨表形成连接以获取数据。在 MongoDB,数据通常存储在单个集合中,但使用嵌入式文档进行分隔。因此,没有连接的概念 MongoDB.

除了术语差异外,其他一些差异如下所示

  1. 关系数据库以强制数据完整性而闻名。这并不是 MongoDB.
  2. RDBMS 要求数据 标准化 首先,它可以防止孤立记录和重复。规范化数据然后需要更多的表,这将导致更多的表连接,从而需要更多的键和索引。随着数据库开始增长,性能可能开始成为一个问题。同样,这不是一个明确的要求 MongoDB. MongoDB 灵活,不需要先对数据进行规范化。