MongoDB介绍
1.关系型与非关系型
NoSQL not only sql
NoSQL,指的是非关系型的数据库。
NoSQL有时也称作Not Only SQL的缩写是对不同于传统的关系型数据库的数据库管理系统的统称。
对NoSQL最普遍的解释是”非关联型的”,强调Key-Value Stores和文档数据库的优点,而不是单纯的RDBMS。
NoSQL用于超大规模数据的存储。
这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
今天我们可以通过第三方平台可以很容易的访问和抓取数据。
用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。
我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了
NoSQL数据库的发展也却能很好的处理这些大的数据。
2. mongo和mysql数据对比
mysql mongo
库 库
表 集合
字段 key:value
行 文档
mysql里的数据:
name age job
oldzhang 28 it
xiaozhang 28 it
xiaofei 18 student SZ
mongo里的数据:
{name:'oldzhang',age:'28',job:'it'},
{name:'xiaozhang',age:'28',job:'it'},
{name:'xiaozhang',age:'28',job:'it',host:'SZ'}
3. MongoDB特点
1)高性能:
Mongodb提供高性能的数据持久性,尤其是支持嵌入式数据模型减少数据库系统上的I/O操作,索引支持更快的查询,并且可以包括嵌入式文档和数组中的键
2)丰富的语言查询:
Mongodb支持丰富的查询语言来支持读写操作(CRUD)以及数据汇总,文本搜索和地理空间索引
3)高可用性:
Mongodb的复制工具,成为副本集,提供自动故障转移和数据冗余
4)水平可扩展性:
Mongodb提供了可扩展性,作为其核心功能的一部分,分片是将数据分在一组计算机上
5)支持多种存储引擎:
WiredTiger存储引擎、MMAPv1存储引擎、InMemory存储引擎
4. mongo应用场景
1.游戏场景,使用MongoDB存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新
2.物流场景,用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
3.社交场景,用MongoDB存储存储用户信息,用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
4.物联网场景,使用MongoDB存储所有接入的智能设备信息,设备汇报的日志信息,并对这些信息进行多维度的分析
5.视频直播,使用MongoDB存储用户信息、礼物信息等,用户评论
6.场景,使用MongoDB
商城上衣和裤子两种商品,除了有共同属性,如产地、价格、材质、颜色等外,还有各自有不同的属性集,如上衣的独有属性是肩宽、胸围、袖长等,裤子的独有属性是臀围、脚口和裤长等
2.安装部署MongoDB
1.环境准备
db01 10.0.0.51
db02 10.0.0.52
db03 10.0.0.53
版本选择:3.x+
下载软件:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.14.tgz
2.规划目录
#软件所在目录
/opt/mongodb
#单节点目录
/opt/mongo_27017/{conf,log,pid}
#数据目录
/data/mongo_27017
3.下载并解压
#安装依赖
yum install libcurl openssl -y
#wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.14.tgz
tar zxf mongodb-linux-x86_64-rhel70-4.0.14.tgz -C /opt/
cd /opt/
ln -s mongodb-linux-x86_64-rhel70-4.0.14 mongodb
4.创建文件目录以及数据目录
mkdir -p /opt/mongo_27017/{conf,log,pid}
mkdir -p /data/mongo_27017
5.创建配置文件
cat >/opt/mongo_27017/conf/mongodb.conf<<EOF
systemLog:
destination: file
logAppend: true
path: /opt/mongo_27017/log/mongodb.log
storage:
journal:
enabled: true
dbPath: /data/mongo_27017
directoryPerDB: true
wiredTiger:
engineConfig:
cacheSizeGB: 0.5
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
processManagement:
fork: true
pidFilePath: /opt/mongo_27017/pid/mongod.pid
net:
port: 27017
bindIp: 127.0.0.1,10.0.0.51
EOF
6.配置文件解释
配置文件注解:
systemLog:
destination: file #Mongodb 日志输出的目的地,指定一个file或者syslog,如果指定file,必须指定
logAppend: true #当实例重启时,不创建新的日志文件,在老的日志文件末尾继续添加
path: /opt/mongo_27017/logs/mongodb.log #日志路径
storage:
journal: #回滚日志
enabled: true
dbPath: /data/mongo_27017 #数据存储目录
directoryPerDB: true #默认,false不适用inmemoryengine
wiredTiger:
engineConfig:
cacheSizeGB: 1 #将用于所有数据缓存的最大小
directoryForIndexes: true #默认false索引集合storage.dbPath存储在数据单独子目录
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
processManagement: #使用处理系统守护进程的控制处理
fork: true #后台运行
pidFilePath: /opt/mongo_27017/pid/mongod.pid #创建pid文件
net:
port: 27017 #监听端口
bindIp: 127.0.0.1,10.0.0.51 #绑定ip
7.启动Mongo
/opt/mongodb/bin/mongod -f /opt/mongo_27017/conf/mongodb.conf
8.检查是否启动
ps -ef|grep mongo
netstat -lntup|grep mongo
9.进入Mongo
/opt/mongodb/bin/mongo
10.配置登录Mongo
写入环境变量
echo 'export PATH=/opt/mongodb/bin:$PATH' >> /etc/profile
source /etc/profile
登录
mongo
关闭
方法1:推荐
mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown
方法2: 只能是使用localhost方式登陆
mongo
use admin
db.shutdownServer()
方法3: system管理--优化