MongoDB
学习大纲:
1,MongoDB 简介与其它数据库对比以及数据类型
2,MongoDB 安装
3,MongoDB 简单操作
环境要求:
Linux
一, MongoDB 简介
1 什么是 MongoDB
MongoDB 是一个基于分布式文件存储的数据库. 由 C++ 语言编写. 旨在为 web 应用提供可扩展的高性能数据存储解决方案.
MongoDB 是一个介于关系型数据库和非关系型数据库之间的产品, 是非关系数据库当中功能最丰富, 最像关系数据库的. 它支持的数据结构非常松散, 是类似 JSON 和 bson 格式, 因此可以存储比较复杂的数据类型. Mongo 最大的特点是它支持的查询语言非常强大, 其语法有点类似于面向对象的查询语言, 几乎可以实现类似关系数据库单表查询的绝大部分功能, 而且还能支持对数据建立索引.
2 什么是 NoSQL
NoSQL(NoSQL=Not Only SQl), 意即 "不仅仅是 SQL", 是一项全新的数据库革命性运动, 早期就有人提出, 发展至 2009 年趋势越发高涨. NoSQL 的拥护者们提倡运用非关系型的数据存储, 相对于铺天盖地的关系型数据库运用, 这一概念无疑是一种全新的思维注入.
3 NoSQL 数据库的分类
3.1 键值 (key-value) 存储数据库
这一类数据库主要会使用到一个哈希表, 这个表中有一个特定的键和一个指针指向特定的数据. key/value 模型对于 IT 系统来说的优势在于简单, 易部署. 但是如果 DBA 只对部分分值进行查询或更新的时候, key/value 就显得低效率了. 例如:
- Tokyo Cabinet/Tyrant,
- Redis, Voldemort, Oracle BDB
3.2 列存储数据库
这部分数据库通常是用来应对分布式存储的海量数据. 键仍然存在, 但是它们的特点是
指向了多个列. 这些列是由列家族来安排的. 如: Cassandra, HBase, Riak
3.3 文档型数据库
文档型数据库的灵感是来自于 Lotus Notes 办公软件的, 而且它同第一种键值存储相类似. 该类型的数据模型是版本化的文档, 半结构化的文档以特定的格式存储, 比如 JSON. 文档型数据库可 以看作是键值数据库的升级版, 允许之间嵌套键值. 而且文档型数据库比键值数据库的查询效率更高. 如: CouchDB, MongoDB. 国内也有文档型数据库 SequoiaDB, 已经开源.
3.4 图形 (Graph) 数据库
图形结构的数据库同其他行列以及刚性结构的 SQL 数据库不同, 它是使用灵活的图形模型, 并且能够扩展到多个服务器上. NoSQL 数据库没有标准的查询语言(SQL), 因此进行数据库查询需要制定数据模型. 许多 NoSQL 数据库都有 REST 式的数据接口或者查询 API. 如: Neo4J, InfoGrid, Infinite Graph
二, MongoDB 与关系型数据库对比
1 与关系型数据库术语对比(我们可以发现还是很像的)
2 存储数据对比
3 RDBMS 与 MongoDB 对应的术语
三, MongoDB 的数据类型
四, MongoDB 的下载与安装
1 下载 MongoDB
下载地址: https://www.mongodb.com/download-center/community
本博文使用的是: MongoDB-Linux-x86_64-4.0.9.tgz 版本
2 安装 MongoDB
2.1Linux 安装
在 Linux 平台的 MongoDB 为解压版. 我们只要解压 tgz 文件就可以使用.
2.1.1 下载 ForLinux 平台的 的 MongoDB
2.1.2 将下载的 tgz 包上传到 Linux
2.1.3 解压 tgz 文件
通过 tar 命令对 tgz 文件做解压处理
2.1.4 移动 MongoDB
我们将解压完的 MongoDB 目录移动到 / usr/local 目录中并改名为 MongoDB.(当然这些都不是固定的)
2.1.5 创建数据库目录
MongoDB 的数据存储在 data 目录的 db 目录下, 但是这个目录在安装过程不会自动创建, 需要手动创建 data 目录, 并在 data 目录中创建 db 目录. data 目录可以创建在任何位置. 本套视频中, 我们将 data 目录创建键 MongoDB 的根目录下.
至此 Linux 平台中的 MongoDB 就已经安装完毕. 很简单不是?
3 MongoDB 的启动与关闭
3.1 启动 MongoDB
MongoDB 的启动方式分为两种
1)前置启动
2)后置启动
无论哪种启动方式都需要执行 bin 目录中的 mongod 命令. MongoDB 在启动时默认的查找数据库的路径为 / data/db. 如果我们数据库路径有变化, 需要在该命令中通过 --dbpath 参数来指定 db 目录的路径(该路径可以是绝对路径, 也可是相对路径)
3.1.1 前置启动
MongoDB 的默认启动方式为前置启动. 所谓前置启动就是 MongoDB 启动进程后会占
用当前终端窗口.
进入到 MongoDB 的 bin 目录
执行 bin 目录中的 mongo 命令.
由于我们的 db 目录放在 MongoDB 的根下, 所以在执行该命令时需要通过 --dbpath 参数
指定 db 路径
启动后会在终端中输出一些启动信息. 此时终端窗口已被启动进程所占用. 我们通过启
动信息可以看到 MongoDB 默认的监听端口为 27017,
按 Ctrl+C 可结束启动进程关闭 MongoDB
3.1.2 后置启动(关闭后置启动进程可在文章后部分查看)
所谓后置启动就是以守护进程的方式启动 MongoDB. 我们需要在执行 mongod 命令中添加 --fork 参数. 需要注意的是,--fork 参数需要配合着 --logpath 或者是 --syslog 参数使用.--logpath 与 --syslog 参数是指定 MongoDB 的日志文件. MongoDB 的日志文件可以在系统中的任意位置, 本文章中我们在 MongoDB 目录下创建 log 目录, 在该目录中创建一个名为
MongoDB.log 的日志文件.
创建 log 目录
在 log 目录中创建 MongoDB.log 日志文件
后置启动 MongoDB
就此我们就已经启动成功了!
3.1.3 常见的启动参数
我们初学者先大概了解就好, 后续我会详细介绍的.
3.1.4 配置文件方式启动
如果觉得在启动 MongoDB 时给定的参数项太多, 那么我们也可以通过配置文件来配置启动参数, 配置文件可以在任意目录中, 配置文件的扩展名应为. conf, 配置文件中使用 key=value 结构. 在执行 MongoDB 时通过 --config 参数来指定需要加载的配置文件.
我们在 MongoDB 目录下创建一个 etc 目录, 在该目录中创建一个名为 MongoDB.conf 的配置文件.
创建 MongoDB.conf 配置文件
编辑配置文件, 在配置文件中添加配置项:
1)指定 db 路径
2)指定日志文件
3)设置所有 ip 都可以访问
4)配置端口
5)配置后端启动
在配置文件中配置启动参数时需要注意的是, 在参数前不在加 -- 符号, 直接以参数名作
为 key 就可以
通过加载配置文件启动 MongoDB
3.1.5 配置环境变量
为了能够在任何目录中执行 bin 目录中的命令, 我们可以将 bin 目录添加到环境变量中. 修 改 /etc/profile 文 件 , 添 加 export PATH=/usr/local/MongoDB/bin:$PATH ./usr/local/monogdb/bin 为 MongoDB 的 bin 目录的绝对路径. 同学们可根据自己的情况来指定
我们在配置文件的最后一行加上如下配置
重新加载 / etc/profile 文件(这样只是临时生效, 永久生效还需要重新启动 Linux)
测试结果
3.2 关闭 MongoDB
3.2.1 使用 Ctrl+C 关闭
如果我们的启动方式是前置启动, 那么直接使用快捷键 Ctrl+C 就可以关闭 MongoDB. 这种关闭方式会等待当前进行中的的操作完成, 所以依然是安全的关闭方式.
3.2.2 使用 kill 命令关闭
我们可以通过 Linux 的 kill 命令结束 MongoDB 进程, 然后删除 data 目录中的 mongod.lock 文件, 否则下次无法启动. 但是此方法不建议使用, 因为会造成数据损坏现象
3.2.3 使用 MongoDB 的函数关闭
在 MongoDB 中提供了两个关闭数据库的函数:
- db.shutdownServer()
- db.runCommand("shutdown")
如上两个方法都需要在 admin 库中执行, 并且都是安全的关闭方式
具体方法:
启动 bin 目录下的 mongo 客户端文件(首先 mongod 是启动的)
./mongo
Ctrl + C 退出客户端即可.
3.2.4 使用 mongod 命令关闭 MongoDB
./mongod --shutdown --dbpath < 数据库路径>
例如:./mongod --shutdown --dbpath /usr/local/MongoDB/data/db
mongod 命令的 shutdown 选项能安全的关闭 MongoDB 服务
上边提到了好几次安全关闭, 安全关闭到底指的是什么呢?
i 比如我们在处理数据的时候, 它还有后台进程正在进行工作, 但是你直接启动关闭命令了, 它会等手头活忙完然后才会关闭, 否则会造成数据丢失 等不可预估后果.
就此本章入门的东西就 ok 了
有任何问题随时留言哦, 欢迎指出问题!
来源: https://www.cnblogs.com/arebirth/p/mongodbintr.html