MongoDB 是一个非关系型数据库(NoSQL)。它拥有很多优秀特性,例如高性能、高可用、支持丰富的查询语句、无需预定义数据模型和水平可伸缩等,这些特性使它受到众多开发者的青睐。
内容提要:在认识 MongoDB 之前,我们需要了解一些非关系型数据库的概念,这有助于我们更全面的认识 MongoDB。接着学习 MongoBD 的安装、交互式接口的使用和 MongoDB 的数据类型。
初识 NoSQL
NoSQL 泛指非关系型数据库,该词是关系型数据库(即 SQL)的相对称呼。我们常用的关系型数据库无法满足 WEB2.0 时代的需求,在实际应用中暴露了很多难以克服的问题。NoSQL 的产生就是为了解决例如海量数据的存储、弹性可伸缩和灵活性等方面的挑战。
NoSQL 的分类
NoSQL 数据库数量很多,但可以划分为如下图所示的 4 大类:
每种类型都有一个我们熟知的数据库代表,例如文档型存储数据库的代表就是 MongoDB。以下列出不同类型数据库的适用场景和数据库代表:
NoSQL 的范围和定义
NoSQL 数据库并没有明确的范围和定义,但它们都存在以下特征:
归纳:NoSQL 适用于数据模型较简单、无高度的数据一致性需求,但要求高性能和灵活性的情况。
安装 MongoDB
MongoDB 官网有详细的安装指引,我们只需要根据指引进行操作即可。这里以 Ubuntu 18.04 TLS 系统和 macOS 系统为例,演示如何在系统中安装 MongoDB。
在 Ubuntu 18.04 TLS 中安装 MongoDB
安装共有 5 个步骤:导入公钥,创建列表,更新库列表,安装,验证。
Ubuntu 软件包管理工具要求使用 GPG 密钥签署软件包,以确保软件包一致性和真实性,所以我们在安装前必须导入 MongoDB 的 GPG 密钥。在终端输入以下命令:
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
命令执行后,终端输出内容如下:
gpg: 密钥 68818C72E525xxxx:公钥“MongoDB 4.0 Release Signing Key <packaging@mongodb.com>”已导入gpg: 合计被处理的数量:1gpg: 已导入:1C72E525xxxx:公钥“MongoDB 4.0 Release Signing Key <packaging@mongodb.com>”已导入
gpg: 合计被处理的数量:1
gpg: 已导入:1
这说明密钥添加成功。接着为 MongoDB 创建列表文件。在终端输入以下命令:
$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.listlist.d/mongodb-org-4.0.list
然后更新库列表,对应命令如下:
$ sudo apt-get update
待列表更新完毕后,就可以执行 MongoDB 的安装命令了。对应命令如下:
$ sudo apt-get install -y mongodb-org
命令执行后,终端输出内容如下:
完成。正在添加用户"mongodb"到"mongodb"组...正在将用户“mongodb”加入到“mongodb”组中完成。正在设置 mongodb-org (4.0.10) ..."mongodb"到"mongodb"组...
正在将用户“mongodb”加入到“mongodb”组中
完成。
正在设置 mongodb-org (4.0.10) ...
这代表 MongoDB 已成功安装。要注意的是,apt-get
命令会在新版本可用时升级软件包。为防止意外升级,我们可以将软件包固定在当前安装的版本上。对应命令如下:
$ echo "mongodb-org hold" | sudo dpkg --set-selections$ echo "mongodb-org-server hold" | sudo dpkg --set-selections$ echo "mongodb-org-shell hold" | sudo dpkg --set-selections$ echo "mongodb-org-mongos hold" | sudo dpkg --set-selections$ echo "mongodb-org-tools hold" | sudo dpkg --set-selections echo "mongodb-org hold" | sudo dpkg --set-selections
$ echo "mongodb-org-server hold" | sudo dpkg --set-selections
$ echo "mongodb-org-shell hold" | sudo dpkg --set-selections
$ echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
$ echo "mongodb-org-tools hold" | sudo dpkg --set-selections
最后,使用 --version
验证 MongoDB 是否安装成功。验证命令如下:
$ mongo --version
命令执行后,终端输出内容如下:
MongoDB shell version v4.0.10git version: c389e7f69f637f7a1ac3cc9fae843b635f20b766OpenSSL version: OpenSSL 1.1.0g 2 Nov 2017allocator: tcmallocmodules: nonebuild environment: distmod: ubuntu1804 distarch: x86_64 target_arch: x86_64shell version v4.0.10
git version: c389e7f69f637f7a1ac3cc9fae843b635f20b766
OpenSSL version: OpenSSL 1.1.0g 2 Nov 2017
allocator: tcmalloc
modules: none
build environment:
distmod: ubuntu1804
distarch: x86_64
target_arch: x86_64
这说明 MongoDB 已成功安装。MongoDB 安装完成后并未自动启动,启动命令如下:
$ sudo systemctl start mongod
命令执行后,如无报错信息即视为启动成功。当然,我们也可以为它设置开机启动。对应命令如下:
$ sudo systemctl enable mongod sudo systemctl enable mongod
以上就是在 Ubuntu 18.04 TLS 系统中安装 MongoDB 的过程。
在 macOS 中安装 MongoDB
在 macOS 中,我们通常使用 Homebrew 安装应用,因此我们在安装 MongoDB 前必须先安装 Homebrew。Homebrew 官方网址为:https://brew.sh/,我们按照其指引进行安装即可。在终端执行以下命令:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
命令执行后,系统就会自动安装 Homebrew。接着我们就可以使用 brew install name
这样的命令安装其他应用了。首先,我们将 MongoDB 的包添加到 Homebrew,对应命令如下:
$ brew tap mongodb / brew
接着执行安装命令:
$ brew install mongodb-community
命令执行后,就会在系统中安装 MongoDB。安装后会创建对应的文件,例如:
MongoDB 安装完成后通常会自己启动,或者我们可以输入命令启动它。例如前台运行(进程方式)的命令如下:
$ mongod --config /usr/local/etc/mongod.conf mongod --config /usr/local/etc/mongod.conf
或者作为服务启动,对应命令如下:
$ brew services start mongodb-community
安装完后,我们就该:
由于篇幅有限文章内容还特别夯实
感兴趣的同学可以扫描二维码阅读完整文章 ???细心的读者可能已经发现了,本篇并没有介绍数据库重命名的方法。这是因为 MongoDB 并未提供直接为数据库改名的方法,虽然可以使用 db.copyDatabase()
方法复制数据库,然后删除原数据库这种方式,但这在实际应用中是不可取的。你可以想象,拷贝一个庞大的数据库所耗费的时间和资源。
接下来我还会继续撰写流式聚合操作,并深入了解语句的执行效率。
在效率提升方面,数据模型也是必须要了解的知识。然后我们将深入学习能够提高数据服务可用性的复制集。接着,我们将了解 MongoDB 的水平扩展能力。最后,我们将了解 MongoDB 数据的备份与还原,并为数据服务开启访问控制。
感兴趣的同学还可以加入 MongoDB 交流群哦 扫描二维码发送暗号「db」即可如若添加不上的话,可以直接搜索微信号「huacode」
是不是很不错??