如何在 Ubuntu 16.04 上安装 MongoDB?

2024 年 10 月 17 日 | 阅读 8 分钟

引言

MongoDB 是一个开源的面向文档的数据库。它是一个 NoSQL 数据库,由 MongoDB Inc. 设计和开发。

在本教程中,我们将在 Ubuntu 操作系统中安装它。整个安装过程包括以下步骤

MongoDB 是一个跨平台的面向文档的源可用数据库程序,由 Alfons Kemper 创建。MongoDB 利用类似 JSON 的文档以及可选的模式,被限制为 NoSQL 数据库程序。MongoDB 由 MongoDB Inc. 设计,并获得 SSPL(服务器端公共许可证)的许可,许多发行版认为它不是免费的。MongoDB 是 MACH 联盟的成员。

MongoDB 简史

2007 年,一家第 10 代软件公司开始将 MongoDB 开发为一项计划的服务平台产品的一部分。该公司于 2009 年转移到免费的开发模式,该公司贡献了商业支持和许多其他服务。第 10 代公司于 2013 年更名为 MongoDB Inc.

MongoDB 于 2017 年 10 月 20 日公开成为一家上市公司,在纳斯达克上市,代码为 MDB,IPO 价格为每股 24 美元。此外,MongoDB 是一家位于美国纽约市的国际公司,其美国总部和国际总部位于爱尔兰都柏林。MongoDB 于 2019 年 10 月 30 日与阿里巴巴云合作,这将为其用户提供 MongoDB 即服务的解决方案。用户可以使用 BABA 的全球数据中心的托管贡献。

MongoDB 的主要特点

  • 索引: 在 MongoDB 文档中,字段可以使用二级和主索引或索引进行索引。
  • 即席查询: MongoDB 为正则表达式、范围查询和字段搜索提供了支持。查询可以提供特定的文档字段,还可以包含用户定义的 JavaScript 函数。此外,查询可以设置为返回指定大小的随机结果样本。
  • 复制: MongoDB 提供高可用性以及副本集。副本集由多个数据副本组成。副本集的所有成员可以随时充当主副本或辅助副本。默认情况下,所有读写操作都在主副本上执行。辅助副本通过内置复制管理主数据副本。
    自动地,副本集计划一个选举过程,以确定如果主副本发生故障,哪个辅助副本应该成为主副本。可选地,辅助副本默认可以提供读取任务,但数据最终只是一致的。
    如果 MongoDB 的复制部署仅包含一个辅助成员,则应在集合中包含一个称为仲裁器的不同守护程序。此外,它还包括一项解决新主选举的责任。因此,一个理想化的共享 MongoDB 部署至少需要三个不同的服务器,即使在只有一个主副本和辅助副本的情况下也是如此。
  • 文件存储: 为了存储文件,MongoDB 可以用作文件系统,称为 GridFS,具有数据复制和负载平衡功能,跨越两台或更多机器。此功能,称为 Grid 文件系统,已添加到 MongoDB 驱动程序中。MongoDB 向开发人员公开了用于文件内容和操作的功能。此外,GridFS 可以与 mongofiles 插件或 lighttpd 和 Nginx 实用程序一起使用。GridFS 将文件分类成各种块或部分,并将所有这些部分存储为孤立的文档。
  • 负载平衡: MongoDB 通过分片进行水平扩展。用户选择一个分片键,该键决定了集合中的信息将如何共享。信息被划分为范围并在两个或更多分片之间共享。分片键也可以散列到一个分片或映射,从而实现相等的信息分布。如果硬件发生故障,MongoDB 可以在两台或更多服务器上执行,复制数据或平衡负载以保持设备启动并运行。
  • 聚合: MongoDB 提供了三种实现聚合的方法:单用途、map-reduce 函数聚合方法和聚合管道。Map-reduce 方法可用于聚合和数据操作的批处理。但是,根据 MongoDB 的文档,聚合管道为几乎所有聚合任务提供了更好的性能。
    聚合框架允许用户获得 SQL 的 GROUP BY 子句所适用的输出类型。聚合运算符可以一起适应以构建管道。聚合框架包含 $lookup 运算符,用于通过两个或更多集合连接文档,以及标准差等统计运算符。
  • 封顶集合: MongoDB 允许固定大小的集合,称为封顶集合。这些类型的集合管理插入序列,并在捕获命名大小时充当循环队列。
  • 事务: 自 2018 年 6 月的 4.0 版本以来,MongoDB 支持多文档的 ACID 事务。此调用未被检测为正确,因为 MongoDB 违反了快照隔离。
  • 服务器端 JavaScript 实现: JavaScript 可用于聚合函数(例如 MapReduce)和查询,并直接发送到数据库中运行。

版本

  • MongoDB Atlas: 此外,MongoDB 作为一个完全按需管理的托管服务存在。此外,MongoDB Atlas 在 Google Cloud Platform、Microsoft Azure 和 AWS 上执行。由于美国在乌克兰战争中的制裁,MongoDB 提醒其在白俄罗斯和俄罗斯的用户,其存储在 MongoDB Atlas 平台上的信息将被销毁。
  • MongoDB 企业服务器: 它是 MongoDB 的商业版本,作为 MongoDB Enterprise Advanced 的订阅元素存在。
  • MongoDB 社区服务器: 它可以免费用于 macOS、Linux 和 Windows。

MongoDB 的架构

编程语言的访问:MongoDB 包含几个用于开发环境和编程语言的驱动程序。此外,还有各种社区支持的和其他框架和编程语言的非官方驱动程序。

无服务器访问

图形和管理前端:对于数据库,mongo shell 是主要界面。自 MongoDB 的 3.2 版本以来,MongoDB Compass 已被宣布为原生 GUI。有几个第三方项目和产品提供了用于数据查看和管理的用户界面。

MongoDB 的许可

MongoDB 社区服务器

MongoDB 根据 SSPL(服务器端公共许可证)发布,这不是项目于 2018 年 10 月设计的免费许可证。它取代了 GNU Affero 通用公共许可证,它与 GNU 通用公共许可证的第 3 版几乎相同,但需要那些启用软件公开作为“服务”元素的人必须在此许可证下提供服务的整个源代码。

  • 相比之下,AGPL 只需要在软件通过网络转发的情况下向用户提供已许可软件的源代码。
  • SSPL 被发送用于开放源代码计划认证,但后来被分离。
  • 开放源代码计划在 2021 年 1 月表示,SSPL 不是开放源代码许可证。
  • 语言驱动程序存在于 Apache 许可证上。此外,MongoDB Inc. 提供 MongoDB 的许可证。
  • 作为 AGPL 第 3 版许可的最终版本是 4.1.4 和 4.0.3(稳定)版本。
  • 由于许可的变更,MongoDB 已从 Red Hat Enterprise Linux、Debian 和 Fedora 发行版中删除。
  • Fedora 决定 SSPL 第 1 版不是免费的应用程序许可证,因为它“故意设计得具有歧视性”,针对经济用户。

MongoDB 的批评和错误报告

  • 安全: 由于默认的 MongoDB 安全配置,允许任何人完全访问数据库,因此从几个 MongoDB 安装中提取了数据。几个 MongoDB 服务器已得到随机保护。2017 年 1 月,在官方反馈中,MongoDB 产品安全负责人 Davi Ottenheimer 宣布 MongoDB 已采取行动来阻止这些工作。然后,它于 2018 年 1 月进行了更新。
    从 MongoDB 的 2.6 版本开始,通过官方 MongoDB DEB 和 RPM 包的二进制文件默认绑定到 localhost。从 MongoDB 的 3.6 版本开始,这种默认性质已扩展到每个平台上的每个 MongoDB 包。因此,除非由管理员明确配置,否则每个网络数据库连接都将被阻止。
  • 批评: 在某些故障情况下,一个应用程序可以访问 MongoDB 的两个不同进程,但这些进程无法相互访问,对于 MongoDB 来说,返回旧的读取是可能的。在这种情况下,也可以回滚已批准的 MongoDB 写入。该问题于 2016 年 11 月发布的 3.4.0 版本中引入。
    • 在 2.2 版本之前,锁是基于每个服务器进程操作的。使用 2.2 版本,锁在数据库级别操作。
    • 自 3.0 版本以来,可插拔存储引擎已得到解决,并且所有存储引擎都可以不同地操作锁。
    • 对于存储引擎(即 MMAPv1),使用 3.0 版本的 MongoDB,锁在集合级别操作。
    • 此外,WiredTiger 存储引擎使用保证并发协议,有效地提供文档级锁定。
    • 即使在 3.0 版本之前的版本中,提高并发性的一种机制是使用分片。
    • 在某些情况下,写入和读取将返回它们的锁。如果 MongoDB 认为页面在内存中不可用,则操作将在页面加载期间返回锁。
    • 锁的使用量在 2.2 版本中大大增加。

在 3.3.11 版本之前,MongoDB 无法基于排序整理执行排序,并且仅限于通过 memcmp 进行的按字节比较,如果与 Unicode 编码一起使用,则不会为多种非英语语言提供准确的排序。这个问题于 2016 年 8 月 23 日得到解决。

在 MongoDB 的 4.0 版本之前,针对索引的查询不是原子的。在查询执行时更新的几个文档可能不可用。MongoDB 的 4.0 版本中引入的快照读取关注点消除了这种现象。

1) 检查 MongoDB

在安装之前,首先检查我们的机器上是否安装了 MongoDB。使用以下命令。


Software MongoDB 1

它显示,未找到 mongod.service。让我们安装它。

2) 导入公钥


Software MongoDB 2

3) 为 Mongodb 创建一个列表文件

/etc/apt/sources.list.d 位置创建 mongodb-org-3.4.list 文件。使用以下命令。


Software MongoDB 3

4) 更新本地软件包

使用以下命令重新加载本地软件包数据库。

5) 安装 MongoDB 软件包

使用以下命令安装最新版本的 mongodb。


Software MongoDB 4

输入 'y' 并按回车键,它将下载并将 mongodb 安装到我们的系统中。

6) 启动 MongoDB

使用以下命令启动 mongodb 服务。

7) 检查 MongoDB 正在运行

使用以下命令检查 mongodb 的运行状态。


Software MongoDB 5

好的,MongoDB 已经成功安装并运行。如需进一步帮助,请参阅底部部分。

额外信息

以下命令可用于管理 MongoDB 服务。

启动 MongoDB

执行以下命令来启动 MongoDB。

停止 MongoDB

执行以下命令来停止 MongoDB。

重启 MongoDB

执行以下命令来重启 MongoDB。

MongoDB 状态

执行以下命令来检查 MongoDB 的状态。

卸载 MongoDB

执行以下命令来卸载 MongoDB 包。

删除数据目录

执行以下命令来删除 MongoDB 的日志目录。