MongoDB安装

MongoDB 简介

MongDB 是一个高性能,开源,无模式的文档型 NosQL 数据库。

主要功能特性:

1. 文件存储格式 BSON(一种 json 的扩展)
2. 模式自由
数据格式不受限了表的结构
3. 支持动态查询
4. 支持完全索引
5. 支持复制(其主从复制)和故障恢复
6. 使用高效的二进制数据存储,包括大型对象
7. 自动处理碎片,以支持云计算层次的扩展。
8. 支持 Java、Ruby、Python、C++、PHP 等多种语言
9. 内部支持 JavaScript

MongoDB 的优势

1. 查询速度快
2. 高并发。可以达到 2 万个并发。
3. 高容量。支持 10TB 意思的数据量
MongoDB 使用场景
1. 网站数据
2. 缓存
3. 大尺寸、低价值的数据
4. 高伸缩的场景
5. 用于对象以及 Json 数据存储

MongoDB 限制

1. 在 32 位操作系统上,不支持大于 2.5G 的数据
2. 单个文件大小限制 16M
3. 高度事务的系统
4. 传统商业智能应用

RDBMS vs NoSQL
RDBMS
- 高度组织化结构化数据
- 结构化查询语言(SQL) (SQL)
- 数据和关系都存储在单独的表中。
- 数据操纵语言,数据定义语言
- 严格的一致性
- 基础事务
NoSQL
- 代表着不仅仅是 SQL
- 没有声明性查询语言
- 没有预定义的模式
- 键 - 值对存储,列存储,文档存储,图形数据库
- 最终一致性,而非 ACID 属性
- 非结构化和不可预知的数据
- CAP 定理
- 高性能,高可用性和可伸缩性

下表列出了 RDBMS 与 MongoDB 对应的术语:

RDBMSMongoDB
数据库 数据库
表格 集合
文档
字段
表联合 嵌入文档
主键 主键 (MongoDB 提供了 key 为 _id)
数据库服务和客户端
Mysqld/Oracle mongod
mysql/sqlplus mongo

MongoDB 安装

1. 下载安装:

1
2
3
4
cd /usr/local/src/
wget -c https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.9.tgz
[root@localhost src]# tar -zxvf mongodb-linux-x86_64-rhel62-3.2.9.tgz -C /usr/local/
[root@localhost local]# mv mongodb-linux-x86_64-rhel62-3.2.9 mongodb

2. 建数据库存放的位置和日志文件
MongoDB 的数据存储在 data 目录的 db 目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建 data 目录,并在 data 目录中创建 db 目录。

1
2
3
mkdir -p /usr/local/mongodb/data/db
mkdir -p /usr/local/mongodb/logs
touch  /usr/local/mongodb/logs/mongodb.logs

MongoDB 的可执行文件位于 bin 目录下, 所以可以将其添加到 PATH 路径中:

1
2
3
4
export PATH=<mongodb-install-directory>/bin:$PATH
 
<mongodb-install-directory> 为你 MongoDB 的安装路径。如本文的 /usr/local/mongodb.
如:export PATH=/usr/local/mongodb/bin:$PATH

3. 在 MongoDB 安装目录下的 bin 下使用 mongod 启动 MongoDB

1
2
[root@localhost mongodb]# ./bin/mongod --dbpath=data/db/ --logpath=logs/mongodb.logs --logappend --port=27017 --fork
#mongodb默认端口27017,可以通过port来指定端口号

4. 设置开机自启动
将 mongodb 启动项目追加入 rc.local 保证 mongodb 在服务器开机时启动

1
echo "/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/db --logpath=/usr/local/mongodb/logs/mongodb.logs –logappend  --port=27017" >> /etc/rc.local

5. 使用配置文件启动——这样就不用在./mongod 后面加一堆参数了, 在 mongodb 的目录下创建 mongodb.conf 配置文件

1
2
3
4
5
6
7
8
9
[root@localhost mongodb]# vim mongodb.conf
port=27017
dbpath=/usr/local/mongodb/data/db
logpath=/usr/local/mongodb/logs/mongodb.logs
logappend=true
fork=true
directoryperdb=true
maxConns=1000
[root@localhost mongodb]# ./bin/mongod -f mongodb.conf

6.MongoDB 命令连接服务器的 MongoDB 数据库

使用默认端口连接 MongoDB

1
[root@localhost bin]# mongo 192.168.1.100

连接 MongoDB 并指定端口

1
[root@localhost bin]# mongo 192.168.1.100:27017

连接到指定的 MongoDB 数据库

1
[root@localhost bin]# mongo 192.168.1.100:27017/testDB

指定用户名和密码连接到指定的 MongoDB 数据库

1
mongo 192.168.1.200:27017/testDB -u user -p password
 阿里云 mongodb 连接方法:
1
mongo --host 1.1.1.1:3717 -u root -p 密码 --authenticationDatabase admin

部分参数解释:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
--dbpath 数据库路径(数据文件)
--logpath 日志文件路径
--master 指定为主机器
--slave 指定为从机器
--source 指定主机器的IP地址
--pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。
--logappend 日志文件末尾添加
--port 启用端口号
--fork 在后台运行
--only 指定只复制哪一个数据库
--slavedelay 指从复制检测的时间间隔
--auth 是否需要验证权限登录(用户名和密码)
--bind_ip 绑定的IP
--port 绑定的端口  

至此一个单机版的 MongoDB 就安装完成了,就可以进行简单的操作了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#显示当前数据库服务器上的数据库
> show dbs;    
#切换/创建数据库
> use yourDB;
#显示数据库中所有的集合(collection)
> show collections
#查看集合中的字段名
> db.集合名.find()
#查看当前使用的数据库
> db;             或者
>db.getName();
#显示当前db状态
> db.stats();
#当前db版本
>db.version(); 
#查看当前db的链接机器地址
> db.getMongo();
#显示当前所有用户
>show users; 

常用命令:

show dbs  #显示数据库列表 
show collections  #显示当前数据库中的集合(类似关系数据库中的表)
show users  #显示用户
use <db name>  #切换当前数据库,如果数据库不存在则创建数据库。 
db.help()  #显示数据库操作命令,里面有很多的命令 
db.foo.help()  #显示集合操作命令,同样有很多的命令,foo 指的是当前数据库下,一个叫 foo 的集合,并非真正意义上的命令 
db.foo.find()  #对于当前数据库中的 foo 集合进行数据查找(由于没有条件,会列出所有数据) 
db.foo.find( { a : 1 } )  #对于当前数据库中的 foo 集合进行查找,条件是数据中有一个属性叫 a,且 a 的值为 1
db.dropDatabase()  #删除当前使用数据库
db.cloneDatabase("127.0.0.1")   #将指定机器上的数据库的数据克隆到当前数据库
db.copyDatabase("mydb", "temp", "127.0.0.1")  #将本机的 mydb 的数据复制到 temp 数据库中
db.repairDatabase()  #修复当前数据库
db.getName()  #查看当前使用的数据库,也可以直接用 db
db.stats()  #显示当前 db 状态
db.version()  #当前 db 版本
db.getMongo()  #查看当前 db 的链接机器地址
db.serverStatus()  #查看数据库服务器的状态

 

可视化工具:mongobooster

参考文档:http://www.runoob.com/mongodb/mongodb-linux-install.html 

     http://blog.csdn.net/piaocoder/article/details/52384756