MongoDB 架构:结构、术语、要求和优势

已发表: 2020-12-28

目录

概述

毫无疑问,互联网是现代世界经济的支柱。 今天,全世界有近 47 亿人每天使用虚拟平台,使用互联网驱动的应用程序获取新闻、购买衣服、订购食物、听音乐、上下班等。

每天有如此大量的用户进行数字贡献,难怪每天在网络空间中都会产生大量的非结构化数据。 了解有关 MongoDB 未来范围的更多信息。

这引发了对一种新的数据库范式的迫切需求,该范式可以 24/7 全天候存储、服务和支持“大数据”应用程序(正如他们所熟知的那样),而不会发生故障。

输入 NoSQL。

NoSQL 数据库的兴起

NoSQL,松散地称为“Not Only SQL”,是受其固定表模式约束的 SQL 数据库的替代方案。 通过高度灵活,NoSQL 克服了 SQL 数据库的这种结构缺陷,并具备水平扩展能力。 NoSQL 数据库旨在提高开发人员的生产力,为他们提供简单而优雅的数据模型,以进行复杂的数据处理和管理操作。

从广义上讲,这些数据存储模型有 4 种类型——文档、键值、宽列和图形。 我们将在这篇博客中关注文档数据库和MongoDB 架构(领先的 NoSQL 数据库)

MongoDB 结构

资料来源: MongoDB 文档

MongoDB 架构遵循灵活的数据模型。 与在插入数据之前要求模式声明的 RDBMS 不同,MongoDB 不强制执行固定的文档结构。

术语

字段

文档中的键值对,它是关系数据库中列的对应物

文档

这相当于 RDBMS 中的一条记录

收藏品

一组文档称为集合。 这类似于 RDBMS 表

RDBMS 和 MongoDB 架构之间的差异

加入

在 RDBMS 中,数据可以分布在多个表中并连接在一起以在单个视图中访问它。 这样的 JOIN 操作在 MongoDB 中是不可能的。 相反,所有数据都存储在一个集合中,但可以通过嵌套或嵌入文档进行分离

正常化

RDBMS 保证规范化数据以避免重复和孤立记录。 MongoDB 的灵活性消除了规范化的需要

结构

RDBS 主要用于银行业,其中确切的数据库结构是先验已知的。 MongoDB 支持大量非结构化数据,并且可以跨云、移动、Web 和大数据应用程序进行扩展。

MongoDB 架构的需求和好处

MongoDB架构可以即时处理结构更改,这是当前的需要。 当您事先不了解数据库结构时,这非常适合。

以下是它的一些主要好处

基于文档

可动态适应数据流变化,实时适应不断变化的业务需求

即席查询– 可以返回指定字段的强大查询语言。 它还允许高度精细的搜索功能。 (按字段、按范围、常用表达式等)

索引

您可以索引文档中的任何字段以加快数据检索过程。

现在让我们深入了解MongoDB 架构

但在我们这样做之前,我们需要了解 CAP 定理。

CAP 定理

CAP 表示一致性、可用性和分区容错性的三重奏。

让我们看看每个术语在这种情况下的含义

一致性

如果您将数据写入分布式数据库,您应该能够在任何时间点从系统中的任何节点访问相同的数据。 这是关于保持写入数据的完整性。

可用性

这是关于最大限度地减少系统的停机时间。 读/写操作应该发生在集群中的任何机器上,不会失败。

分区容错或容错

表示系统即使在网络分区的情况下也能保持平稳运行的能力,即集群的不同部分应该能够相互通信并有效同步。

CAP 定理指出分布式系统必须具有分区容错性。 任何网络分区都不能导致整个系统崩溃。

换句话说,在分布式系统中,您只能保证“一致性”和“可用性”中的一个参数,另一个是分区容差。

这产生了一个像这样的三角形:

资料来源:数据科学百科

每当系统(CP)中有分区时, MongoDB 总是选择一致性而不是可用性它会阻止所有写入操作,直到它可以确保这些写入的准确执行。

MongoDB架构

MongoDB 采用单主机架构,这意味着有一台主机负责所有客户端写入操作。 您稍后添加到集群的所有其他实例构成辅助节点,它们通常处理所有读取操作。

这些基本上是主服务器的备份副本,作为防止主服务器崩溃的故障保护。

所有这些服务器都分组在副本集中。 您可以拥有多个副本集,每个副本集都有自己的主服务器和辅助服务器。

来源:MongoDB 文档

如果主节点出现故障,系统会从所有辅助节点中选择一个新的主节点。 但这是任意发生的,具体取决于它从整个系统中获得最快 ping 响应的位置。 您的集群中需要有奇数台服务器(最少 3 台),以便可以以多数票选出主服务器。

如果您不想在三台服务器上花钱,您可以指定一个“仲裁者”节点,其唯一工作就是投票选举主节点。

分片

MongoDB 中的分片允许您将大数据分布在多个数据库中。

来源: MongoDB 文档

您有一个拥有数百万用户的应用程序。 分片允许您将这些用户(基于用户 ID 等唯一索引)划分为不同的副本集。 使用称为 mongoS 的进程,应用程序服务器与配置服务器(准确地说是 3 个)进行对话,以了解哪个“分片”包含它正在寻找的数据。 mongoS 在后台运行负载均衡器进程,以自动在所有分片之间平均分配负载(在本例中为用户数)。

结论

如果您想了解有关 MongoDB 和数据库操作的更多信息,请查看 MongoDB 项目构想。 您可以从 upGrad探索数据科学 PG 文凭为在职专业人士设计的为期 12 个月的课程,您将获得全面的职业咨询和工作机会,以及享有盛誉的 IIIT 班加罗尔校友身份。

我们希望本文能帮助您了解MongoDB 架构的工作原理以及系统的运行方式。 要了解更多信息,请查看我们的其他博客。

从世界顶级大学在线学习软件开发课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

提升自己并为未来做好准备

IIIT Bangalore 大数据高级证书课程