数据库简单分类
数据库:是OLTP
(联机事务处理)应用的场景,其存储的主要是与业务直接相关的数据
,强调准确
、低时延
、高并发
,如果没有特别强调,基本上数据库里只会去存储与业务相关
的数据。
**数据仓库:OLAP
(联机分析处理)是数据仓库系统的主要应用,其支持的对象只要是面向分析场景
的应用,提供结构化
、主题化
的数据提供给运营,做业务反馈和辅助决策
,同时,有些场景下,也可以由数据仓库
对业务进行支持。
MongoBD
-
一个以为
JSON
为数据模型的文档型数据库 -
横向扩展
可以支撑很大数据量(10TB
,100TB
)和并发 -
快速响应业务变化
-
同一个集合
可以包含不同字段的文档对象
-
线上修改数据模式应用与数据库
无需下线
-
支持使用
JSON SChema
规范数据模式
-
技术优势
-
JSON
结构和对象类似,代码量低 -
JSON
的动态类型更容易响应新的业务需求 -
复制集提供99.999%高可用
-
分片架构支持海量数据和无缝扩容
安装过程
1.解压 tar -zxvf mongodb-linux-x86_64-rhel70-4.0.27.tgz 2.重命名 mv mongodb-linux-x86_64-rhel70-4.0.27 /usr/local/mongodb 3.创建文件夹(log,db,conf) # 进入目录 cd /usr/local/mongodb/ # 创建三个文件夹 mkdir data data/db data/log # 设置可读写权限 sudo chmod 777 data/db data/log/ 4.mongodb 目录下新建配置文件 mongodb.conf # 数据库数据存放目录 dbpath=/usr/local/mongodb/data/db # 日志文件存放目录 logpath=/usr/local/mongodb/data/log/mongodb.log # 日志追加方式 logappend=true # 端口 port=27017 # 是否认证 auth=true # 以守护进程方式在后台运行 fork=true # 远程连接要指定ip,否则无法连接;0.0.0.0代表不限制ip访问 bind_ip=0.0.0.0 5.配置环境变量 export MONGODB_HOME=/usr/local/mongodb export PATH=$PATH:$MONGODB_HOME/bin 6.开放 MongoDB 的端口 # 开放27017端口 firewall-cmd --zone=public --add-port=27017/tcp --permanent # 让配置生效 firewall-cmd --reload # 查看开放的端口,验证是否成功 firewall-cmd --zone=public --list-ports 7.创建一个用户,赋予用户root权限 db.createUser( { user:"root", pwd:"123456", roles:[{role:"root",db:"admin"}] } );
聚合查询
作用于多个集合,系列操作(OLAP、OLTP)
提供可视化管道计算并生成对应的java代码
$bucket
统计每个区间的数据条数 db.products.aggregate([ $bucket:{groupBy:"$price"boundaries: [0,10,20,30,40]default: "Other" output:["count":{$sum:1))}}]) 组合多个$bucket db.products.aggregate([{ $facet:( price:$bucket:...) year:$bucket:{...)}}}]}
复制集
高可用
-
写入时候迅速复制到另一个独立节点
-
写入节点故障自动选举
-
数据区域复制,减少另一个区域读延迟
-
不同类型压力在不同节点
-
数据中心故障迅速切换到异地
结构
简单复制集:一个主节点(写和投票)和两个从节点(复制主节点数据、选举投票)
数据如何复制
-
主节点记录oplog
-
从节点维持一个游标在自己的数据上回放
选举如何完成故障恢复
增加节点并不能提供性能
-
具有投票节点之间两两发送心跳(5次未收到则为失联)
-
主节点失联,从节点进行选举(优先级高,oplog较新,能够与多个节点连接);从节点(是否有投票权,优先级,隐藏【复制节点,但对程序不可见】,延迟&