MongoDB

MongoDB 数据库 — 一键安装

MongoDB 是一个开源的 NoSQL 数据库。

为什么用 Web.Casa 安装 MongoDB 数据库?

一键部署

无需手动编写 Docker Compose,Web.Casa 自动配置并启动。

自动 HTTPS

Caddy 自动签发和续期 SSL 证书,反向代理开箱即用。

统一管理

监控、备份、更新、日志——所有应用在一个面板中管理。

安装方式

先安装 Web.Casa,然后在应用商店中一键安装此应用。

应用信息

版本
7.0.30
作者
MongoDB
默认端口
27017

MongoDB

MongoDB 是一个开源的面向文档的数据库,旨在存储大规模数据,并允许您高效地处理这些数据。它被归类为 NoSQL(不仅是 SQL)数据库,因为 MongoDB 中数据的存储和检索不是以表格形式进行的。

MongoDB 数据库由 MongoDB.Inc 在 SSPL(服务器端公共许可证)下开发和管理,最初于 2009 年 2 月发布。它还为所有流行语言提供官方驱动程序支持,如 C、C++、C#、.Net、Go、Java、Node.js、Perl、PHP、Python、Motor、Ruby、Scala、Swift、Mongoid。因此,您可以使用这些语言中的任何一种来创建应用程序。如今,许多公司如 Facebook、Nokia、eBay、Adobe、Google 等都使用 MongoDB 来存储其海量数据。

工作原理

现在,我们将看看幕后实际发生了什么。我们知道 MongoDB 是一个数据库服务器,数据存储在这些数据库中。换句话说,MongoDB 环境为您提供了一个服务器,您可以启动它,然后使用 MongoDB 在其上创建多个数据库。 由于其 NoSQL 数据库的特性,数据存储在集合和文档中。因此,数据库、集合和文档之间的关系如下所示:

mongodb-nosql-working

  • MongoDB 数据库包含集合,就像 MYSQL 数据库包含表一样。您可以创建多个数据库和多个集合。
  • 现在,在集合内部,我们有文档。这些文档包含我们想要存储在 MongoDB 数据库中的数据,一个集合可以包含多个文档,并且您是无模式的,这意味着一个文档不必与另一个文档相似。
  • 文档是通过字段创建的。字段是文档中的键值对,就像关系数据库中的列一样。字段的值可以是任何 BSON 数据类型,如 double、string、boolean 等。
  • 存储在 MongoDB 中的数据是 BSON 文档格式。这里,BSON 代表 JSON 文档的二进制表示。换句话说,在后端,MongoDB 服务器将 JSON 数据转换为称为 BSON 的二进制形式,这种 BSON 的存储和查询效率更高。
  • 在 MongoDB 文档中,允许存储嵌套数据。这种数据嵌套允许您在数据之间创建复杂的关系,并将它们存储在同一个文档中,与 SQL 相比,这使得数据处理和获取极其高效。在 SQL 中,您需要编写复杂的连接来从表 1 和表 2 中获取数据。BSON 文档的最大大小为 16MB。

注意: 在 MongoDB 服务器中,您可以运行多个数据库。

例如,我们有一个名为 GeeksforGeeks 的数据库。在这个数据库内部,我们有两个集合,在这些集合中我们有两个文档。在这些文档中,我们以字段的形式存储数据。如下图所示:

MongoDB 与 RDBMS 有何不同? MongoDB 和 RDBMS 之间的一些主要区别如下:

MongoDBRDBMS
它是一个非关系型、面向文档的数据库。它是一个关系型数据库。
它适合分层数据存储。它不适合分层数据存储。
它具有动态模式。它具有预定义的模式。
它围绕 CAP 定理(一致性、可用性、分区容错性)展开。它围绕 ACID 属性(原子性、一致性、隔离性、持久性)展开。
在性能方面,它比 RDBMS 快得多。在性能方面,它比 MongoDB 慢。

MongoDB 的特性

  • 无模式数据库: 这是 MongoDB 提供的一个强大特性。无模式数据库意味着一个集合可以容纳不同类型的文档。换句话说,在 MongoDB 数据库中,单个集合可以容纳多个文档,这些文档可能由不同数量的字段、内容和大小组成。一个文档不必像在关系数据库中那样与另一个文档相似。由于这个很酷的特性,MongoDB 为数据库提供了极大的灵活性。
  • 面向文档: 在 MongoDB 中,所有数据都存储在文档中,而不是像 RDBMS 那样存储在表中。在这些文档中,数据以字段(键值对)的形式存储,而不是行和列,这使得数据比 RDBMS 灵活得多。并且每个文档都包含其唯一的对象 ID。
  • 索引: 在 MongoDB 数据库中,文档中的每个字段都使用主索引和辅助索引进行索引,这使得从数据池中获取或搜索数据更容易、耗时更少。如果数据没有建立索引,那么数据库将使用指定的查询搜索每个文档,这会花费大量时间且效率不高。
  • 可扩展性: MongoDB 借助分片提供水平可扩展性。分片意味着将数据分布在多个服务器上,这里使用分片键将大量数据划分为数据块,这些数据块均匀分布在驻留在许多物理服务器上的分片中。它还可以向正在运行的数据库添加新机器。
  • 复制: MongoDB 借助复制提供高可用性和冗余,它创建数据的多个副本并将这些副本发送到不同的服务器,这样如果一台服务器发生故障,则可以从另一台服务器检索数据。
  • 聚合: 它允许对分组数据执行操作并获得单个结果或计算结果。它类似于 SQL 的 GROUPBY 子句。它提供三种不同的聚合操作,即聚合管道、map-reduce 函数和单一用途聚合方法。
  • 高性能: 由于其可扩展性、索引、复制等特性,MongoDB 的性能非常高,数据持久性也优于其他数据库。

MongoDB 的优点:

  • 它是一个无模式的 NoSQL 数据库。在使用 MongoDB 时,您不需要设计数据库的模式。
  • 它不支持连接操作。
  • 它为文档中的字段提供了极大的灵活性。
  • 它包含异构数据。
  • 它提供高性能、高可用性、高可扩展性。
  • 它高效支持地理空间数据。
  • 它是一个面向文档的数据库,数据存储在 BSON 文档中。
  • 它还支持多文档 ACID 事务(从 MongoDB 4.0 开始)。
  • 它不需要任何 SQL 注入防护。
  • 它可以轻松与大数据 Hadoop 集成。

MongoDB 的缺点:

  • 它使用高内存进行数据存储。
  • 不允许在文档中存储超过 16MB 的数据。
  • BSON 中的数据嵌套也有限制,不允许嵌套超过 100 层。

学习 MongoDB

常见问题

MongoDB 数据库 可以安装在 Web.Casa 上吗?

是的,MongoDB 数据库 是 Web.Casa 应用商店中的官方应用。你可以通过 Web.Casa 面板一键安装,无需手动编写 Docker Compose 或配置反向代理。

如何在 Web.Casa 上安装 MongoDB 数据库?

首先通过 curl -fsSL https://get.web.casa | bash 安装 Web.Casa,然后在面板的应用商店中搜索「MongoDB 数据库」,点击安装即可。Web.Casa 会自动配置 Docker 容器、分配端口并设置 Caddy 反向代理。

MongoDB 数据库 在 Web.Casa 上的默认端口是什么?

MongoDB 数据库 在 Web.Casa 上的默认端口为 27017。你可以通过 Web.Casa 的 Caddy 反向代理将其绑定到自定义域名,自动获取 HTTPS 证书。

MongoDB 数据库 安装后可以自动获取 HTTPS 吗?

是的。Web.Casa 基于 Caddy 构建,安装应用后只需绑定域名,Caddy 会自动通过 Let's Encrypt 签发和续期 SSL 证书,全程无需手动配置。

MongoDB 数据库 的数据如何备份?

Web.Casa 内置备份插件,支持将 MongoDB 数据库 的数据自动备份到本地、S3、WebDAV 或 SFTP。你可以设置定时快照和保留策略,确保数据安全。