MongoDB简介
2017-03-27 本文已影响85人
mnikn
MongoDB是一个NoSQL数据库,而NoSQL(Not Only SQL)泛指非关系型数据库 - 主要代表:MongoDB,Redis,CouchDB。
NoSQL与SQL相比有以下区别:
- 存储方式
SQL数据存在特定结构的表中。而NoSQL则更加灵活和可扩展,存储方式可以省是JSON文档、哈希表或者其他方式。 - 数据关系
在SQL中,必须定义好表和字段结构后才能添加数据,例如定义表的主键(primary key),索引(index),触发器(trigger),存储过程(stored procedure)等。表结构可以在被定义之后更新,但是如果有比较大的结构变更的话就会变得比较复杂。
在NoSQL中,数据可以在任何时候任何地方添加,不需要先定义表。 - 外部数据存储
SQL中如何需要增加外部关联数据的话,规范化做法是在原表中增加一个外键,关联外部数据表。
而在NoSQL中除了这种规范化的外部数据表做法以外,我们还能用如下的非规范化方式把外部数据直接放到原数据集中,以提高查询效率。缺点也比较明显,更新审核人数据的时候将会比较麻烦。 - JOIN查询
SQL中可以使用JOIN表链接方式将多个关系数据表中的数据用一条简单的查询语句查询出来。
而NoSQL暂未提供类似JOIN的查询方式对多个数据集中的数据做查询。所以大部分NoSQL使用非规范化的数据存储方式存储数据。 - 事务
SQL中如果多张表数据需要同批次被更新,即如果其中一张表更新失败的话其他表也不能更新成功。这种场景可以通过事务来控制,可以在所有命令完成后再统一提交事务。
而NoSQL中没有事务这个概念,每一个数据集的操作都是原子级的。
MongoDB在Linux CentOS 上的安装
首先下载Linux legacy版本的MongoDB,在Linux上使用以下命令:
# 若没有wget命令,需要执行yum install wget
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.2.tgz
#下载完后
tar -zxvf mongodb-linux-x86_64-3.4.2.tgz
解压完后,我们在解压目录里面新建一个文件夹来保存数据库文件。
# 重命名一下,名字太长了。。
mv mongodb-linux-x86_64-3.4.2 mogodb
mkdir data
cd data
mkdir db
cd ..
chmod -R 755 data
然后在bin里面生成mongodb的配置文件。
cd ~/mongodb/bin
chmod -R 755 bin
vim mongodb.conf
# 输入以下内容
port=27017
dbpath=/root/mongodb/data/db
logappend=true
fork=true
logpath=/root/mongodb/data/logs
把MongoDB与配置文件连接起来,测试使用MongoDB。
./mongod -f ./mongodb.conf
./mongo
#若出现连接错误,一般是防火墙的端口限制,可直接关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
然而每次重启都要再度把配置文件和MongoDB连接起来,这样做很麻烦,我们设置其为开机启动。
cd /lib/systemd/system
vim mongodb.service
# 插入以下内容
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/root/mongodb/bin/mongod -f /root/mongodb/bin/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/root/mongodb/bin/mongod --shutdown -f /root/mongodb/bin/mongodb.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
chmod 754 mongodb.service
# 关闭
systemctl stop mongodb.service
# 启动
systemctl start mongodb.service
# 注册到开机启动
systemctl enable mongodb.service
我们要使用MongoDB时还需要在mongodb的目录下运行,这不太方便,我们想要像普通的指令一样直接输命令就行了,我们可以做如下修改:
vim ~/.bashrc
# 添加语句
export PATH="$PATH:/root/mongodb/bin"
# 重启生效
reboot
至此,MongoDB的配置完成。