MongoDB 数据库介绍及安装
NoSQL 介绍
MongoDB 是一款 NoSQL(Not Only SQL) 数据库,意思是"不仅仅是 SQL",指的是非关系型数据库,是对不同与传统的关系型数据库的数据管理系统的统称。
NoSQL 用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
为什么使用 NoSQL
随着数据日益增多,从 GB 到 TB 到 PB。这些数据有很大一部分是由关系型数据库管理系统(RBAMS)来进行处理的。
由于关系型数据库的规范约束、事务特性、磁盘 IO 等特性,若服务器使用关系型数据库,当有大量数据产生时,传统的关系型数据库已经无法满足快速查询与插入的需求。NoSQL 的出现解决了这一危机。它通过降低数据的安全性,减少对事物的支持,减少对复杂查询的支持,获取性能上的提升。但是,在某些特定场景下,关系型数据库仍然是最佳人选,比如一些绝对要有事物与安全指标的场景。
NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至 2009 年趋势愈发高涨。NoSQL 的拥护者们提倡运用非关系型的数据库存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是全新的思维注入
RBBMS vs NoSQL
NoSQL 数据库四大家族
键值(key-value)存储
特点:键值数据库就像传统语言中使用的哈希表,通过 key 添加、查询活着删除数据
优点:查询速度快
缺点:数据无结构化,通常只被当作字符串或者二进制数据存储
应用场景:内容缓存、用户信息比如会话、配置信息、购物车等,主要用于处理大量数据的高访问负载
NoSQL代表:Redis、Memcached...
文档(Document-Oriented)存储
特点:文档数据库将数据以文档的形式存储,类似 JSON,是一系列数据项的集合,每个数据都有一个名称与之对应的值,值既可以是简单的数据类型,比如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。
优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构。
缺点:查询性能不高,缺乏统一的查询与法
应用:日志、Web应用等
NoSQL代表:MongoDB、CounchDB
列族(Wide Column Store/Column-Family)存储
特点:列存储数据库将数据存储在列族(Column Family)中,将多个列聚合成一个列族,键仍然存在,但是他们的特点是指向了多个列。举个例子,如果我们有一个 Person 类,我们通常会一起查询他们的姓名和年龄,而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中而薪资则在另一个列族中。
优点:列存储查找速度快,可拓展强,更容易进行分布式拓展,适用于分布式系统,应对分布式存储的海量数据。
缺点:查询性能不高,缺乏统一的查询语法
应用场景:日志、分布式的文件系统(对象存储)、推荐画像、时空数据、消息/订单等。
NoSQL代表:Cassandra、HBase...
图形(Graph-Oriented)存储
特点:图形数据库允许我们将数据以图形方式存储。
优点:图形相关算法。比如最短路径寻址,N 度关系查找等
缺点:很多时候需要对整个图做计算才能得出需要信息,分布式的集群方案不好做,处理超级节点乏力,没有分片存储机制,国内社区不活跃。
应用场景:社交网络、推荐系统等。专注于构建关系图谱。
NoSQL代表:Neo4j、Infinite Graph...
NoSQL 优缺点
优点
- 高可扩展性
- 没有标准化
- 分布式计算
- 有限的查询功能 (到目前为止)
- 低成本
缺点
- 最终一致时不直观的程序
- 架构的灵活性,半结构化数据
- 没有复杂的关系
总结
NoSQL 数据库在一以下几种情况下比较适用:
- 数据模型比较简单
- 需要灵活性更强的 IT 系统
- 对数据库性能要求较高
- 不需要高强度的数据一致性
- 对于给定的 Key,比较容易映射复杂值的环境
MongoDB 简介
Mongo 源于 Humongous(巨大的;庞大的)一词。
MongoDB 是一个基于分布式文件存储的 NoSQL 数据库。由 C++ 语言编写。旨在为 WEB 应用提供可拓展的高性能数据存储解决方案。
MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。
MongoDB 与关系型数据库术语对比
MongoDB 数据类型
下载与安装
Windows安装MongoDB并设置密码
1.官网下载MongoDB安装包
2.选择“Custom”自定义安装,更改安装路径下一步
3.修改数据存储路径和日志路径
4.取消勾选“Install MongoDB Compass”,否则安装很慢(勾选则从外网下载MongoDB Compass并安装,过程很久)
5.安装完成后可从服务查看/启动,启动后浏览器访问127.0.0.1:27017出现MongoDB相关提示即说明安装成功
6.创建管理员账号
#用户名不要用root
db.createUser({user:"用户名",pwd:"密码",roles:[{role:"root",db:"admin"}]})
7.停止MongoDB服务,打开命令行
#切换到MongoDB安装路径下bin目录
#删除MongoDB服务
sc delete MongoDB
#安装服务并配置为需验证才能登陆
mongod.exe --auth --dbpath="F:\MongoDB\Server\5.0\data" --config "F:\MongoDB\Server\5.0\bin\mongod.cfg" --install
8.启动MongoDB服务
Linux 安装并设置密码
可以通过 https://docs.mongodb.com/manual/installation/
确认该版本软件是否支持你的操作系统
下载完后进行解压配置环境变量
# 解压
$ tar -zxvf mongodb-linux-x86_64-ubuntu1804-5.0.1.tgz -C /opt
# 重命名文件夹
$ mv mongodb-linux-x86_64-ubuntu1804-5.0.1 mongodb
# 配置环境变量
$ vim /etc/profile
export MONGODB_HOME=/opt/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
创建数据/日志目录
# 创建存放数据的目录
mkdir -p /opt/mongodb/data/db
# 创建存放日志的目录
mkdir -p /opt/mongodb/logs
# 创建日志记录文件
touch /opt/mongodb/logs/mongodb.log
启动 MongoDB
前台启动
MongoDB 的默认启动方式为前台启动。所谓的前台启动就是 MongoDB 启动进程会占用当前终端窗口
# 切换至指定目录
$ mongod --dbpath /opt/mongodb/data/db/ --logpath /opt/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0
--dbpath
:指定数据文件存放目录--logpath
:指定日志文件,注意是指定文件不是目录--logappend
:使用追加方式记录日志--port
:指定端口,默认为27017--bind_ip
:绑定服务 IP,若绑定 127.0.0.1,则只能本机访问,默认为本机地址
注意:
启动时可能会出现以下问题
mongod: error while loading shared libraries: libcurl.so.4: cannot open shar
sudo apt update
sudo apt install libcurl4-openssl-dev
sudo apt install curl
后台启动
所谓后台启动就是以守护进程的方式启动 MongoDB。命令中添加 --fork
即可
$ mongod --dbpath /opt/mongodb/data/db/ --logpath /opt/mongodb/logs/mongodb.log --logappend --port=27017 --bind_ip 0.0.0.0 --fork
结束服务只需要在上面命令下加上--shutdown
配置文件
在 bin
目录下增加一个 mongodb.conf
配置文件
# 数据存放目录
dbpath = /opt/mongodb/data/db
# 日志文件存放目录
logpath = /opt/mongodb/logs/mongodb.log
# 以追加的方式记录日志
logappend = true
# 端口默认为 27017
port = 27017
# 对访问 IP 地址不做限制,默认为本机地址
bind_ip = 0.0.0.0
# 以守护进程的方式启动,即在后台运行
fork = true
# 启动
$ mongod -f /opt/mongodb/bin/mongodb.conf
# 停止
$ mongod -f /opt/mongodb/bin/mongodb.conf --shutdown
客户端访问
$ mongo
# 查看所有的数据库(没有数据的数据库会显示)
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
> db
test
# 查看数据库版本
> db.version()
5.0.1
# 清屏命令
>cls
# 远程访问
$ mongo mongodb://ip:port
MongoDB 函数关闭
# 连接到 MongoDB 服务后,切换到 admin 数据库,使用相关函数关闭服务
# 切换 admin 数据库
>use admin
# 执行以下函数(2选1)即可关闭服务
>db.shutdownServer()
>db.runCommand("shtudown")
本作品采用《CC 协议》,转载必须注明作者和本文链接