MongoDB学习笔记-2、MongoDB简介与安装

1、MongoDB简介

1.1、什么是MongoDB

一个基于分布式的文件存储数据库,旨在简化开发和扩展。属于NoSQL数据库,由C++语言编写,为web应用提供可扩展的高性能数据存储解决方案。

【参考MongoDB 4.2 中文手册】https://mongodb.net.cn/manual/

1.2、特点

MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系数据库的。

查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。拥有丰富的数据类型。

image

MongoDB的记录是一个文档,它由字段和值对组成的数据结构。MongoDB文档类似于JSON对象。字段的值可以包括其他文档,数组和文档数组。

image

除集合外,MongoDB还支持:只读视图,按需实例化视图。

MongoDB提供高性能的数据持久性:

  • 对嵌入式数据模型的支持减少了数据库系统上的I/O活动;
  • 索引支持更快的查询,并且可以包括来自嵌入式文档和数组的键。

1.3、MongoDB历史

2007 年,Dwight Merriman,Eliot Horowitz 和 Kevin Ryan 成立 10gen 软件公司,在成立之初,这家的公司目标是进军云计算行业,为企业提供云计算服务。在开发云计算产品时,他们准备开发一个类似于数据库的组件,为云计算产品提供存储服务。当时是关系型数据库一统天下的时间,他们觉得传统的关系型数据库无法满足他们的要求,他们想要一款程序员不懂SQL语言也可以使用的数据存储产品。

在网络上找了一圈,不管是开源的还是闭源的产品,都没找到让他们满意的东西,既然找不到,那就自己开发吧,反正他们也有那个技术实力,10gen 的创始人都来自谷歌,他们创建的网络广告公司 DoubleClick 被谷歌收购了,这是他们的第二次创业。

10gen 公司不使用关系型数据库是有一定原因的,当时他们还在 DoubleClick 公司的时候,就吃过关系型数据库的苦头。DoubleClick 是一家网络广告公司,服务美国众多的知名公司,该公司每秒提供 40 万个广告,但在可伸缩性和敏捷性方面经常遇到困难,因此他们不得不经常自己开发和使用许多自定义数据存储来解决现有关系型数据库的不足,这让他们很是苦恼。

因此他们决定开发一款数据库产品解决他们在 DoubleClick 时遇到的问题,并为自己的云计算产品提供存储服务。

  • MongoDB 最初于 2007 年开发,由位于纽约的一个名为 10gen 的组织开发,现在被称为 MongoDB Inc.
  • 2009 年,经过将近 2 年的开发,10gen 开发出了 MongoDB 的雏形并将它开源以及正式命名为 MongoDB,同时成立开源社区,通过社区运营 MongoDB。
  • 2009 年 02 月 MongoDB 1.0 发布,提供了大部分基本的查询功能。
  • 2009 年 12 月 MongoDB 1.2 发布,引入了 map-reduce,支持大规模数据处理。
  • MongoDB 的第一个真正产品是从 2010 年 03 月发布的 MongoDB 1.4 版本开始的。
  • 2010 年 8 月 MongoDB 1.6 发布,引入了一些主要特性,比如用于水平伸缩的分片、具备自动故障转移能力的副本集以及对 IPv6 的支持。
  • 2012 年 05 月 23 日,MongoDB 2.1 发布。该版本采用全新架构,包含诸多增强。
  • 2012 年 06 月 06 日,MongoDB 2.0.6 发布,分布式文档数据库。
  • 2012 年 8 月 MongoDB 2.2 发布,引入了聚合管道,可以将多个数据处理步骤组合成一个操作链。
  • 2013 年 MongoDB 推出第一款商业版本 MongoDB Enterprise Advanced。
  • 2013 年 04 月 23 日,MongoDB 2.4.3 发布,此版本包括了一些性能优化,功能增强以及 bug 修复。
  • 2013 年 08 月 20 日,MongoDB 2.4.6 发布,仍然是以性能优化,功能增强和 bug 修复为主。
  • 2015 年 03 月 MongoDB 3.0 发布,包含了新的 WiredTiger 存储引擎、可插拔存储引擎 API、增加了 50 个副本集限制和安全改进。同年晚些时候又发布了 3.2 版本,支持文档验证、部分索引和一些主要的聚合增强。
  • 2016 年 MongoDB 推出了 Atlas 服务,MongoDB Atlas,与公有云服务厂商(谷歌、微软Azure)合作。这一年,MongoDB 爆出了非常严重的安全门事件,黑客通过 MongoDB 的默认监听地址 0.0.0.0 删除数据,并且通过此漏洞进行勒索,支付 0.2 到 0.5 的比特币就可以恢复数据。
  • 2017 年 10 月 MongoDB 公司成立 10 周年之际,顺利通过 IPO 在纽交所上市。开盘 24 美元,公司估值达到 16 亿美元,并获得 1.92 美元的筹资。
  • 2017 年 11 月 MongoDB 3.6 发布,为多集合连接查询、变更流和使用 JSON 模式进行文档验证提供了更好的支持。
  • 2018 年 06 月 MongoDB 4.0 发布,这一版本的发布获得了广泛的关注,提供了跨文档事务处理能力。这是一个重要的里程碑,MongoDB 已经为高数据完整性需求做好了准备。
  • 2019 年 03 月 18 日,Forrester 授予 MongoDB NoSQL 领导者称号。
  • 2019 年 10 月 MongoDB 4.2 发布,开始支持分布式事务。
  • 截至 2020 年 10 月,MongoDB 的社区版版本是 4.4.1,扩展性和性能增强,降低复制延迟,可用性和容错性增强,查询能力和易用性增强,MongoDB 云平台的功能更新。MongoDB 逐渐的从一个专注于数据库服务的厂商,转变为提供数据平台服务的厂商。

1.4、MongoDB与关系型数据库术语对比

image

2、Linux环境下安装MongoDB

这里在CentOS Linux上安装MongoDB 社区版。

官网教程参考:https://mongodb.net.cn/manual/tutorial/install-mongodb-on-red-hat/

2.1、下载

官网社区版下载地址:https://www.mongodb.com/try/download/community

image

2.2、安装

将下载的资源上传至服务器/usr/local/src,解压至/usr/local 并重命名为 mongodb。

<pre># 解压 mongodb 至指定目录
tar -zxvf /usr/local/src/mongodb-linux-x86_64-rhel70-5.0.6.tgz -C /usr/local/

重命名解压目录为 mongodb

mv /usr/local/mongodb-linux-x86_64-rhel70-5.0.6/ /usr/local/mongodb</pre>

2.3、创建数据/日志目录

创建用于存放数据和日志的文件夹,并修改其权限增加读写权限。

<pre># 创建存放数据的目录
mkdir -p /usr/local/mongodb/data/db

创建存放日志的目录

mkdir -p /usr/local/mongodb/logs

创建日志记录文件

touch /usr/local/mongodb/logs/mongodb.log</pre>

至此MongoDB就安装完成了。

image

2.4、添加环境变量

将 MongoDB 相关目录添加至系统环境变量,这样在任意目录都能进行操作 MongoDB ,比如启动服务,客户端进行连接等。

(1)先通过vi /etc/profile编辑系统环境变量文件,添加以下内容:

<pre># 添加环境变量
export MONGODB_HOME=/usr/local/mongodb
export PATH=PATH:MONGODB_HOME/bin</pre>

(2)然后通过source /etc/profile重新加载系统环境变量。这样在系统任意目录下都可以直接操作 MongoDB 了。

3、服务端启动MongoDB

3.1、前台启动

MongoDB的默认启动方式为前台启动。所谓的前台启动就是 MongoDB 启动进程后会占用当前的终端窗口。

<pre># 切换至指定目录
cd /usr/local/mongodb/

前台启动

bin/mongod --dbpath /usr/local/mongodb/data/db/ --logpath /usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0</pre>

  • mogod:相当于守护进程,后面跟一些参数
  • –dbpath:指定数据文件存放目录
  • –logpath:指定日志文件,注意是指定文件不是目录
  • –logappend:使用追加的方式记录日志
  • –port:指定端口,默认为 27017
  • –bind_ip:绑定服务 IP,若绑定 127.0.0.1,则只能本机访问,默认为本机地址

3.2、后台启动

所谓的后台启动就是以守护进程的方式启动 MongoDB。命令中添加--fork即可。

<pre># 后台启动
bin/mongod --dbpath /usr/local/mongodb/data/db/ --logpath /usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0 --fork</pre>

通过命令启动的方式并不适合管理,毕竟每次输入命令都需要考虑各参数的配置。一般通过配置文件来配置启动参数,然后通过指定配置文件的方式启动服务,这样在管理 MongoDB 上就比较方便了。

在bin目录下增加一个mongodb.conf配置文件

<pre># 数据文件存放目录
dbpath = /usr/local/mongodb/data/db

日志文件存放目录

logpath = /usr/local/mongodb/logs/mongodb.log

以追加的方式记录日志

logappend = true

端口默认为 27017

port = 27017

对访问 IP 地址不做限制,默认为本机地址

bind_ip = 0.0.0.0

以守护进程的方式启用,即在后台运行

fork = true</pre>

启动

<pre># 指定配置文件的方式启动服务
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/mongodb.conf</pre>

image

3.3、客户端访问MongoDB

MongoDB提供命令进行访问,在控制台直接输入:mongo

image

如果允许的情况下,使用可视化工具Navicat操作更方便。

3.4、关闭MongoDB

前台启动关闭:使用 Ctrl + c 即可关闭。

后台启动关闭:使用 --shutdown参数即可关闭。

<pre># 命令启动方式的关闭
bin/mongod --dbpath /usr/local/mongodb/data/db/ --logpath /usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0 --fork --shutdown

配置文件启动方式的关闭

mongod -f /usr/local/mongodb/bin/mongodb.conf --shutdown</pre>

kill命令关闭

通过 kill -9的方式强制关闭进程,慎用。

<pre># 查看 mongodb 运行的进程信息
ps -ef | grep mongodb

kill -9 强制关闭

kill -9 pid</pre>

MongoDB函数关闭

连接到MongoDB服务后,切换到admin数据库,并使用相关函数关闭服务。

<pre># 切换 admin 数据库
use admin

执行以下函数(2选1)即可关闭服务

db.shutdownServer()
db.runCommand(“shutdown”)</pre>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容