mongodb安装概念
业务应用场景
传统的关系型数据库(mysql),在数据操作的三高需求以及对应web2.0的网站需求面前显得力不从心,解释三高需求:
- 对数据库高并发的需求
- 对海量数据的搞笑存储和访问的需求
- 对数据库的高可扩展性的需求
应用场景
- 社交场景,使用mongodb存储用户信息,以及用户发表的朋友圈信息,通过地理位置检索实现附件的人,地点等功能.
- 游戏场景,使用mongodb存储用户的信息,用户的装备,积分等以内嵌文档的形式存储,方便查询,搞笑存储和访问.
- 物流场景,使用mongodb存储订单信息,订单状态会在运送过程中不断更新,以mongodb内嵌的数组形式来存储,一次性就能把所有的变更读取出来
- 物联网场景,使用mongodb存储所有接入的只能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
- 视频直播,使用mongdb存储用户信息,点赞互动信息等
- 物流场景,使用mongodb存储所有介入的只能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
- 价值较低的数据,对事物要求性不高
什么时候选择mongodb
应用不需要蛇舞以及复杂的join支持
新应用,需求会变,数据模型无法确定,想快速迭代开发
应用需要2000-3000以上读写的qps
应用需要tb甚至pb级别的数据存储
应用发展迅速,需要能够快速水平扩展
应要求存储的数据不丢失
应用99.99%高可用
应用需要大量的地理位置查询,文本查询
mongodb简介
mongodb是一个开远高性能,舞模式的文档型数据库,当初社就是用于简化开发和方便扩展,是nosql数据库产品的一种.是最像关系型数据库的非关系型数据库
它支持的数据结构非常松散,类似json的bson格式,所以既可以存储比较复杂的数据类型,又相当的灵活
mongodb中的记录是一个文档,它是一个由字段和值对组成的数据结构.mongdb文档类似于json对象,即一个文档认为就是一个对象.字段的数据类型是字符型,它的值出了使用基本的一些类型外,还可以包括其他文档,普通数组和文档数组
体系结构
sql术语/概念 | mongodb术语/概念 | 说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | 数据字段/域 | |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,mongodb不支持 | |
嵌入文档 | mongodb通过嵌入式文档来替代多表连接 | |
primary key | primary key | 主键,mongodb自动将_id字段设置为主键 |
特点
高性能
mongodb提供高性能的数据持久性,特别是对嵌入式数据模型的支持减少了数据库系统上的i/o活动,索引支持更快的查询,并且可以包含来自嵌入式文档和数组的键.
mmapv1,wiredtiger,mongorocks,in-memory等引擎满足各种场景需求
高可用性
mongodb提供了水平可扩展性作为其核心功能的一部分.分片将数组分布在一组机器上(海量数据存储,服务能力水平扩展)
从3.4开始,mongodb支持基于片键创建数据区域,在一个平衡的集群中,mongodb将一个区域所覆盖的读只定向到该区域内的那些图片
丰富的查询支持
mongodb支持丰富的查询语言,支持读和写操作(curd)比如数据聚合,文本搜索和地理空间查询等
无模式,灵活的文档模型
部署
windows安装与启动
MongoDB的版本命名规范如:x.y.z;
y为奇数时表示当前版本为开发版,如:1.5.2、4.1.13;
y为偶数时表示当前版本为稳定版,如:1.6.3、4.0.10;
z是修正版本号,数字越大越好。
在windows下先在mongodb的跟目录创建datadb文件夹
之后启动,并设置数据库存放文件的位置
mongod --dbpath=..\data\db
在启动信息可以看到mongodb默认端口是27017,想要修改默认端口可以用port来指定端口
配置文件启动方式
之后再更目录创建conf/mongodb.conf
storage:
dbPath: C:\zidingyi\mongodb-win32-x86_64-2008plus-ssl-4.0.12\data\db #存放的目录
命令
mongod -f ..\conf\mongodb.conf
shell连接
在命令提示符bin目录下输入以下shell命令即可完成或登录
mongo
或
mongo --host=127.0.0.1 --port=27017
linux
解压缩
tar -xvf mongodb-linux-x86_64-4.0.10
移动解压后的文件
mv mongodb-linux-x86_64-4.0.10 /usr/local/mongodb
新建目录
#数据存储目录
mkdir -p /mongodb/single/data/db
#日志存储目录
mkdir -p /mongodb/single/log
新建并修改配置文件
vi /mongodb/single/mongod.conf
配置文件
systemLog:
#MongoDB发送所有日志输出的目标指定为文件
# #The path of the log file to which mongod or mongos should send all diagnostic logging information
destination: file
#mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
path: "/mongodb/single/log/mongod.log"
#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
logAppend: true
storage:
#mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
##The directory where the mongod instance stores its data.Default Value is "/data/db".
dbPath: "/mongodb/single/data/db"
journal: #启用或禁用持久性日志以确保数据文件保持有效和可恢复。
enabled: true
processManagement:
#启用在后台运行mongos或mongod进程的守护进程模式。
fork: true
net:
#服务实例绑定的IP,默认是localhost
bindIp: localhost,192.168.31.102
#bindIp #绑定的端口,默认是27017
port: 27017
启动
/usr/local/mongodb/bin/mongod -f /mongodb/single/mongod.conf
root权限不够的话给777的权限,注意一下linux和windows的缩进不同
ps -ef | grep mongod
其他命令
如果远程连接不上,需要配置防火墙放行,或直接关闭linux防火墙
#查看防火墙状态
systemctl status firewalld
#临时关闭防火墙
systemctl stop firewalld
#开机禁止启动防火墙
systemctl disable firewalld
停止关闭服务
停止服务有俩种方法:快速关闭和标准关闭
1快速关闭
kill -2 54410
2标准的关闭方法
//客户端登录服务,注意,这里通过localhost登录,如果需要远程调用,必须先登录认证才行
mongo --port 27017
//切换到admin库
use admin
//关闭服务
db.shutdownServer()