邓开表同学实战MongoDB系列文章,非常不错,赞!大力推荐!
本文是第10篇,主要讲述Change Streams构建实时同步数据流的实战经验,非常值得一看。
前面系列文章:
MongoDB安全实战之Kerberos认证
MongoDB Compass--MongoDB DBA必备的管理工具
MongoDB安全实战之审计
MongoDB安全实战之SSL协议加密
MongoDB安全实战之网络安全加固
MongoDB索引的介绍
MongoDB存储引擎
MongoDB集合的增量更新
MongoDB系列9:MongoDB数据迁移到MySQL
1、ChangeStreams概述
MongoDB的ChangeStreams允许应用程序实时访问数据的变化。应用程序可以使用Change Streams订阅集合上的所有数据的更改,并立即对它们作出响应。利用Change Streams这一功能可以构建实时数据同步的应用。
2、ChangeStreams的特性
Change Streams只能在副本集或分片集群中打开。在分片集群中,必须为mongos路由打开Change Streams操作。存储引擎要求是WiredTiger存储引擎。
3、ChangeStreams的变化事件类型
·insert事件
·update事件
·delete事件
·replace事件
·invalidate事件
4、打开ChangeStreams
在Python中可以采用以下方式打开一个ChangeStreams:
cursor =db.collection_name.watch()
其中,可以采用以下管道控制ChangeStreams的输出:
·$match
·$project
·$addFields
·$replaceRoot
·$redact
5、构建实时同步数据流案例
本例子,是利用Python构建从MongoDB的stream_table集合到mysql的stream_table表的实时同步。其中分别监听ChangeStreams的insert、update、delete三个变化事件。
1) 执行代码
2) 往stream_table集合插入一个文档
在初始情况下,stream_table集合和stream_table都是没有数据的。所以首先演示insert变化事件的监听。
同时查询mysql的stream_table表是否有记录:
数据已实时同步。
3) update集合stream_table数据
同样,查询mysql的stream_table表的记录是否有变化:
数据实时更新!
4) 最后delete集合stream_table数据
最后,查询mysql的stream_table表的记录是否有变化:
数据被删除!
小结:
在MongoDB到关系型数据库的数据迁移中,对于一些对数据时效要求高场景,特别是追求数据实时变化,利用MongoDB Change Streams可以有效地解决这类场景。