MongoDB 理解

MongoDB:

高可用,高性能,横向扩展(分片)
在这里插入图片描述
这个文档是JavaScriptDocument对象,相当于Object, 相当于MySql

数百TB 放到分布式,MongoDB4.0之后可以满足事务
企业版本 会有报表工具,图形化管理工具,要求收费。
在这里插入图片描述横向部署是MongoDb的特色

MongoDB 保存文档特色
在这里插入图片描述
数据治理,是DBA 可以给表设计某种规则。
在这里插入图片描述
不用定位,直接定位一次,不用关联直接定位

在这里插入图片描述
默认Driver 是连接到主节点,也有其他方式可以连接到副节点。
滚地服务,动态升级
在这里插入图片描述
每个分片就是一个复制集合,上层完全无感知,有很多分布策略
在这里插入图片描述

聚合查询

在这里插入图片描述

MongoDB 复制集在这里插入图片描述

写入primary,后台会有一个进程,快速复制到另一个独立节点上

在这里插入图片描述在这里插入图片描述
primary 默认可以接受读和写操作。从节点只能读
在这里插入图片描述
有一个线程监视oplog,在从接点进行回放

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
从接点扩展,只会扩展读操作性能,写性能只能通过分片方式进行提高。 同步网络最差 10ms ,不同地域,那就受到真实物理影响。基本可以认知主从一致

MongoDB 全家桶

在这里插入图片描述
在这里插入图片描述

数据模型设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

事务开发

写操作
在这里插入图片描述
因为可以动态扩容,所以可以写到majority,超过半数,写操作程序会一直等待,知道完成写操作。
在这里插入图片描述
参数0 甚至没有写到盘里,虚线是其他线程的步骤,没有参与写线程。
primary 突然宕机,secondary1,2 没有同步成功。
在这里插入图片描述在这里插入图片描述
最安全性能,但是其中一个节点出现故障,就完不成写操作
在这里插入图片描述

这个write concern 是写代码参数方式设置的。
在这里插入图片描述在这里插入图片描述
对并发无影响,只是增加了操作时间,吞吐量还是这样。

读操作
在这里插入图片描述
在这里插入图片描述
默认值用primary,这是种推荐做法,一定是最新数据,nearest 是根据pingtime决定
在这里插入图片描述
在这里插入图片描述
purpose 就是 tag
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
available,读取所有可用的数据,local读取所有可用且属于当前分片的数据
这个 相当于 MySql 里面的 事务隔离界别
snapshot 是最强
在这里插入图片描述
默认使用local,如果对数据邀请不高,就可以available
在这里插入图片描述在这里插入图片描述
t4 节点 primary 知道secondary2 有这条数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
readConcern majority 可以预防脏读
在这里插入图片描述
原先使用secondary 读
后来 ,
w majority 保证写在多个结点
r 保证 在多个结点存在,才会读过来
这样保证了读写分离,又比较安全
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
虽然运用了majority,但是主节点 还是 会读到x=1
在这里插入图片描述
多文档事务:应该少量使用事务,要通过合理使用文档模型,规避事务。
在这里插入图片描述

在这里插入图片描述
写到结点 先写Journal 日志,再写库
在这里插入图片描述
在这里插入图片描述
多文档事务支持 在 4.0 进行 ,4.2 可以支持复制集合可以跨分片
可重复读的含义就是 不管事务中间发生了什么,在事务内,都可以重复读取到
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
对应于前面的事务写机制----规则:
在这里插入图片描述
事务commit ,这个窗口3 马上就完成。

ChangeStream 实现变更追踪的解决方案。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
readConcern 在机器上配置参数,才可以使用功能
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
独立集群 跨集群复制。
其他微服务联动,其他微服务进行监听,做相应处理。
在这里插入图片描述
超过时间窗口,数据会被删除,所以如果中断时间太长了,就会找不到。

MongoDB 开发最佳实践

在这里插入图片描述
在这里插入图片描述max wait time 是控制慢查询的,比如查询堵塞,会自动删除连接
read concern 不是默认值,需要设置
如果要求级别高writeConcern 也要设置
在这里插入图片描述在这里插入图片描述
因为换IP麻烦,切换DNS 简单。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
1 百万级以上,必须要有索引,要么全表扫描,影响所有查询。
2 使用覆盖索引,减少回表,不用单独调用文档。
3 减少返回字段映射。

在这里插入图片描述
TTL index 到期就会把数据删掉

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
分页,没有特别好的解决方案
在这里插入图片描述
一小批一小批 做事务,因为有默认60s

分片集群机制及原理

在这里插入图片描述
绝大多数上线使用复制集合,第二种集合。
最小的分片集群,9到10个实例。使用占比比较少。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其实只需要对接一个Mongos 即可 ,其余的不用使用
在这里插入图片描述
这个配置表会进入内存中,会快速知道 请求该发送到那个shard上。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
chunk范围就存储在 那个表里面 。

在这里插入图片描述
在这里插入图片描述
contryCode 进行标签化

在这里插入图片描述
尽量不要使用分片,因为管理复杂

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
工作集等于 热数据+索引

在这里插入图片描述
在这里插入图片描述
一个块大概64MB,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
所以速度,就变成了最慢的片件速度

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
可能会花费 1天 2 天 数天

MongoDB 监控在这里插入图片描述

Grafana
在这里插入图片描述
程序借口 or 命令行工具
具体监控反馈指标,用的时候具体看吧

MongoDB 备份与恢复

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
命令行,最灵活,但是最不常用,最慢是因为一条一条写数据

在这里插入图片描述
oplog操作幂等性在这里插入图片描述
分片集备份和复制集合备份差不多,担忧差异,具体用的时候再看。
在这里插入图片描述在这里插入图片描述

MongoDB 安全架构在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

都是在驱动程序进行加密的

审计是企业版功能,用的时候再看吧
最佳实战,具体用的时候再看吧。
在这里插入图片描述

MongoDB 索引

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行计划,就是选择哪个索引

索引调优
在这里插入图片描述
在这里插入图片描述
这个是完全命中索引

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
只对部分数据建立索引。历史数据不建立索引

在这里插入图片描述

MongoDB 读写性能机制

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一个写操作,写缓存有三个步骤,这三个操作是一个事务,mongoDB会保证。
在这里插入图片描述
在这里插入图片描述

顺序不重要,不用完全得到所有数据才返回mongos,直接用流形式即可

在这里插入图片描述
两个网段,所以有网络考量。

在这里插入图片描述

性能排查工具

连接指定实例在这里插入图片描述在这里插入图片描述
在test库test表上有很多写操作。

在这里插入图片描述
在这里插入图片描述
这个工具会把慢查询画出来。

MongoDb 架构 两地三中心

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
具体部署使用在看吧,看到了 第 37 集

MongoDB 选型以及考量

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
自带路由节点,应用层无感知。

具体应用 之后继续看吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值