MongoDB系列10:Change Streams構建實時同步數據流

鄧開表同學實戰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三個變化事件。

MongoDB系列10:Change Streams構建實時同步數據流

1) 執行代碼

MongoDB系列10:Change Streams構建實時同步數據流

2) 往stream_table集合插入一個文檔

在初始情況下,stream_table集合和stream_table都是沒有數據的。所以首先演示insert變化事件的監聽。

MongoDB系列10:Change Streams構建實時同步數據流

同時查詢mysql的stream_table表是否有記錄:

MongoDB系列10:Change Streams構建實時同步數據流

數據已實時同步。

3) update集合stream_table數據

MongoDB系列10:Change Streams構建實時同步數據流

同樣,查詢mysql的stream_table表的記錄是否有變化:

MongoDB系列10:Change Streams構建實時同步數據流

數據實時更新!

4) 最後delete集合stream_table數據

MongoDB系列10:Change Streams構建實時同步數據流

最後,查詢mysql的stream_table表的記錄是否有變化:

MongoDB系列10:Change Streams構建實時同步數據流

數據被刪除!

小結:

在MongoDB到關係型數據庫的數據遷移中,對於一些對數據時效要求高場景,特別是追求數據實時變化,利用MongoDB Change Streams可以有效地解決這類場景。


分享到:


相關文章: