我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MongoDB学习7:Change Strean

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MongoDB学习7:Change Strean


	MongoDB学习7:Change Strean
[数据库教程]

1.什么是Change Stream?

Change Stream是MongoDB用于实现变更追踪的解决方案,类似于关系型数据库的触发器,但原理不完全相同

Change Stream 触发器
触发方式 异步 同步(事务保证)
触发位置 应用回调事件 数据库触发器
触发次数 每个订阅事件的客户端 1次(触发器)
故障恢复 从上一次断点重新触发 事务回滚

2.Change Stream实现原理

Change Stream是基于oplog实现的。它在oplog上开启一个tailable cursor来追踪所有复制集上的变更操作,最终调用应用中定义的回调函数
被追踪的变更事件主要包括:

  • insert/update/delete:插入、更新、删除
  • drop:集合被删除
  • rename:集合被重命名
  • dropDatabase:数据库被删除
  • invalidate:drop/rename/dropDatabase将导致invalidate被触发,并关闭change stream

3.Change Stream与可重复读

Change Stream只推送已经在大多数节点上提交的变更操作。级“可重复度”的变更,这个验证是通过{readConcern:"majority"}实现的,因此

  • 未开启 readConcern:"majority" 的集群无法使用 Change Stream
  • 当集群无法满足{w:"majority"}时,不会触发 Change Stream(例如PSA架构中的S因故障宕机)

4.Change Stream 变更过滤

如果只对某些类型的变更时间感兴趣,可以使用聚合管道的过滤步骤过滤事件

var cs = db.collection.watch([{
  $match:{
    operationType:{
     $in:{"insert","delete"}
    }
  }
}])

5.开启Change Stream功能

默认是没有开启Change Stream功能的,在配置文件中设置

replication:
  enableMajorityReadConcern: true

6.Change Stream 故障恢复

假如在一系列写入操作的过程中,订阅Change Stream的应用在接收到“写3”之后与 t0 时刻崩溃,重启后后续变更怎么办?
技术图片
想要从上次中断的地方继续获取变更流,只需要保留上次变更通知中的_id即可
技术图片
上图所示是一次Change Stream回调所返回的数据。没跳这样的数据都带有一个_id,这个_id可以用于断点恢复,例如:

var cs = db.collection.watch([],{resumeAfter:<_id>})

即可从上一条通知中断处继续获取后续的变更通知

  • 跨集群的变更复制--在源集群中订阅 Change Stream,一旦得到任何变更立即写入目标集群
  • 微服务联动--当一个微服务变更数据库时,其他微服务得到通知并做出相应的变更
  • 其他任何需要系统联动的场景
  • Change Steam依赖于oplog,因此中断时间不可超过oplog回收的最大时间
  • 在执行update操作时,如果只更新了部分数据,那么Change Steam通知的也是增量部分
  • 同理,删除数据时也通知的仅是删除数据的_id

MongoDB学习7:Change Strean

原文地址:https://www.cnblogs.com/xiaoqingtian/p/13511027.html

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MongoDB学习7:Change Strean

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MongoDB学习7:Change Strean

1.什么是Change Stream?Change Stream是MongoDB用于实现变更追踪的解决方案,类似于关系型数据库的触发器,但原理不完全相同Change Stream触发器触发方式异步同步(事务保证)触发位置应用回调事件数据库触发器触发次数每个订阅
MongoDB学习7:Change Strean
2015-04-25

学习MongoDB(一)

一 . MongoDB 1.概述 CMS采用MongoDB数据库存储CMS页面信息,CMS选用Mongodb的原因如下: 1、Mongodb是非关系型数据库,存储Json格式数据 ,数据格式灵活。 2、相比课程管理等核心数据CMS数据不重要,且没有事务管理要求
学习MongoDB(一)
2014-10-12

MongoDB学习(三) --- MongoDB Java入门

1、搭建测试环境步骤一:创建 maven 项目父项目的pom文件 4.0.0 com.tqylxuecheng xc_parent pom 1.0-SNAPSHOT xc_test_parent
MongoDB学习(三) --- MongoDB Java入门
2022-03-31

Mongodb学习总结

Mongodb相关操作总结 2020/4/2Mongodb使用的是类似与json字符串的形式存储数据[{key:value},{key:value},]Mongodb使用了不存在的对象,即创建该对象use db 使用db数据库show dbs 查
Mongodb学习总结
2019-08-19

MongoDB学习(四) --- MongoDB 整合Spring Data

1、环境搭建步骤一:修改pom文件,更新依赖org.springframework.bootspring-boot-starter-data-mongodborg.projectlomboklombok步骤二:修改yml文件,配置 mongo连接字符串spri
MongoDB学习(四) --- MongoDB 整合Spring Data
2021-09-17

python 学习笔记 7 -- Pyt

学习一门语言最重要的功课是练习与复习,在《笨方法学Python》中第三十七节虽然没有教你任何内容,但是它提醒我们:“学了这么多,你还能记得多少?该复习了!”下面我们就对这一节的第一部分“关键字”来做个复习:Python中的关键字包括如下:a
2023-01-31

MongoDB学习笔记:JavaScript shell

本文更新于2022-01-22,使用MongoDB 4.4.5。目录辅助扩展edithelpitshow collectionsshow databasesshow dbsshow tablesshow usersuseBulkWriteResultdbDBD
MongoDB学习笔记:JavaScript shell
2021-02-08

MongoDB学习笔记:分片

本文更新于2022-01-08,使用MongoDB 4.4.5。目录单台服务器下创建分片多台服务器下创建分片重新启动并连接到分片单台服务器下创建分片确保/data/db目录存在且当前系统用户有读写权限。例如(需根据实际情况设置权限):su rootmkdir
MongoDB学习笔记:分片
2021-03-30

MongoDB学习笔记:概述

本文更新于2022-01-23,使用MongoDB 4.4.5。目录与关系数据库比较组成数据库集合文档数据类型填充因子写入安全自然排序固定集合循环游标索引典型场景GridFS聚合MapReduce副本集同步心跳驱动程序分片连接身份验证系统分析器诊断日志日记系统
MongoDB学习笔记:概述
2016-10-31

Python自动化开发学习7

class A 经典类写法,查找方式深度优先class A(object) 新式类写法,查找方式广度优先上面是python2的语法,python3里可能已经没有经典类了。不管有没有,都用形式类来写就对了。上面都是上节讲的内容,再讲一下构造函
2023-01-31

笨办法学Python - 习题6-7:

目录 1、习题 6: 字符串(string) 和文本 2、加分习题: 3、我的答案 4、习题总结 5、习题 7: 更多打印 6、习题
2023-01-30

编程热搜

目录