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

⚡ 智能摘要

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

  • 📄 文档模型: 数据以键值文档的形式存储在集合中,而不是表中。
  • 🧩 灵活的架构: 字段是动态创建的,没有预定义的结构。
  • ????️ 核心组件: _id、集合、文档、字段、游标、数据库和 JSON。
  • ⚙️ 为什么要使用它: 即席查询、索引、复制和分片以实现扩展。
  • 🔄 与关系型数据库管理系统 (RDBMS) 相比: 集合取代了表格,嵌入式文档取代了连接。

什么是 MongoDB

什么是 MongoDB?

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

MongoDB 产品特性

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

MongoDB 例如:

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

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

MongoDB 例如:

的关键组成部分 MongoDB Archi质地

以下是一些常用的术语 MongoDB:

  1. _ID – 这是每个 MongoDB 文档中。_id 字段表示 MongoDB 文档。_id 字段就像文档的主键。如果您创建一个没有 _id 字段的新文档, MongoDB 系统会自动创建该字段。例如,如果我们看一下上面的客户表示例, MongoDB 将为集合中的每个文档添加一个 24 位唯一标识符。
_ID 顾客ID 顾客姓名 订单号
563479cc8a8a4246bd27d784 11 Guru99 111
563479cc7a8a4246bd47d784 22 特雷弗·史密斯 222
563479cc9a8a4246bd57d784 33 妮可 333
  1. 购物 这是一个团体ping of MongoDB 文档。集合相当于在任何其他关系数据库管理系统(RDBMS)中创建的表,例如: Oracle 或者 MS SQL。集合存在于单个数据库中。正如引言中所述,集合不强制执行任何结构。
  2. 光标 – 这是指向查询结果集的指针。客户端可以遍历游标来检索结果。
  3. 数据库 这是一个用于存储集合的容器,就像关系数据库管理系统(RDBMS)中的表容器一样。每个数据库在文件系统中都有自己的一组文件。 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 利用副本集可以实现高可用性。副本集由两个或多个副本组成。 MongoDB 实例。每个副本集成员在任何时候都可以充当主副本或辅助副本的角色。主副本是与客户端交互并执行所有读/写操作的主服务器。辅助副本使用内置复制功能维护主副本的数据副本。当主副本发生故障时,副本集会自动切换到辅助副本,此时辅助副本将成为主服务器。
  5. 负载均衡 – MongoDB 使用分片的概念,通过将数据拆分到多个 MongoDB 实例。 MongoDB 可以在多台服务器上运行,平衡负载和/或复制数据,以便在硬件故障时保持系统正常运行。

数据建模 MongoDB

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

在对数据进行建模时 MongoDB请记住以下几点:

  1. 该应用程序需要满足哪些要求? – 查看应用程序的业务需求,了解应用程序需要哪些数据以及数据类型。基于此,确保文档结构相应地确定下来。
  2. 数据检索模式有哪些? – 如果您预计查询使用量会很大,那么请考虑在数据模型中使用索引来提高查询效率。
  3. 数据库中是否频繁发生插入、更新和删除操作? 如果需要,请重新考虑在数据建模设计中使用索引或引入分片,以提高整体效率。 MongoDB 环境。

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

以下是 MongoDB 以及关系数据库管理系统(RDBMS):

RDBMS MongoDB 区别
购物 In RDBMS表格包含用于存储数据的列和行,而在 MongoDB 这种结构被称为集合。集合包含文档,文档又包含字段,字段则是键值对。
文件 在 RDBMS 中,行表示表中单个隐式结构化的数据项。在 MongoDB,数据存储在文档中。
领域 在 RDBMS 中,列表示一组数据值。这些在 MongoDB 它们被称为字段。
加入 嵌入式文档 在关系数据库管理系统(RDBMS)中,数据有时分散在多个表中,为了显示所有数据的完整视图,有时会跨表进行连接(join)以获取数据。 MongoDB数据通常存储在单个集合中,但通过嵌入文档进行分隔。因此,其中不存在连接(join)的概念。 MongoDB.

除了术语上的差异外,以下还列出了一些其他差异:

  1. 关系数据库以强制数据完整性而闻名。这并不是 MongoDB.
  2. RDBMS 要求数据 标准化 首先,规范化数据可以防止出现孤立记录和重复记录。规范化数据需要创建更多表,这会导致更多表连接,从而需要更多键和索引。随着数据库规模的扩大,性能问题可能会逐渐显现。再次强调,这并非明确要求。 MongoDB. MongoDB 灵活,不需要先对数据进行规范化。

常见问题

MongoDB Atlas 可存储大量非结构化和半结构化数据,因此非常适合用于人工智能和机器学习流程。其灵活的文档结构可容纳训练数据、特征集和模型元数据,此外,Atlas 还为人工智能应用添加了向量搜索功能。

是的。 MongoDB Atlas Vector Search 允许您将矢量嵌入与文档一起存储和查询。这支持语义搜索、推荐和检索增强型生成,无需单独的矢量数据库,即可为 AI 应用提供支持。

MongoDB 社区版是免费且开源的。 MongoDB 此外,还提供 Atlas,一项托管云服务,包含免费层级和付费的企业版,企业版提供高级安全性和支持。

许多大型组织使用 MongoDB 适用于大容量、灵活的数据存储,包括电子商务、游戏、物联网和内容管理等行业的公司。其通过分片和复制实现的可扩展性,能够满足拥有数百万份文档的应用需求。

总结一下这篇文章: