springboot如何整合mongodb?和 changestream的代碼例子
時間:2024-02-07 12:09作者:下載吧人氣:23
前言
changestream是monggodb的3.6版本之后出現的一種基于collection(數據庫集合)的變更事件流,應用程序通過db.collection.watch()這樣的命令可以獲得被監聽對象的實時變更
想必對mysql主從復制原理比較熟悉的同學應該知道,其根本就是從節點通過監聽binlog日志,然后解析binlog日志數據達到數據同步的目的,于是,基于mysql主從復制原理,阿里開源了canal這樣的數據同步中間件工具
Change Stream 介紹
Chang Stream(變更記錄流) 是指collection(數據庫集合)的變更事件流,應用程序通過db.collection.watch()這樣的命令可以獲得被監聽對象的實時變更。
關于changestream做如下說明,提供參考
- 在該特性出現之前,開發者可通過拉取 oplog達到同樣的目的;
- 但 oplog 的處理及解析相對復雜,而且存在被回滾的風險,如果使用不當的話還會帶來性能問題;
- Change Stream 可以與aggregate framework結合使用,對變更集進行進一步的過濾或轉換;
- 由于Change Stream 利用了存儲在 oplog 中的信息,因此對于單進程部署的MongoDB無法支持Change Stream功能,其只能用于啟用了副本集的獨立集群或分片集群
changestream可用于監聽的mongodb目標類型
- 單個集合,除系統庫(admin/local/config)之外的集合,3.6版本支持
- 單個數據庫,除系統庫(admin/local/config)之外的數據庫集合,4.0版本支持
- 整個集群,整個集群內除去系統庫( (admin/local/config)之外的集合 ,4.0版本支持
一個Change Stream Event的基本結構如下所示:
{
_id : { <BSON Object> },
“operationType” : “<operation>”,
“fullDocument” : { <document> },
“ns” : {
“db” : “<database>”,
“coll” : “<collection”
},
“documentKey” : { “_id” : <ObjectId> },
“updateDescription” : {
“updatedFields” : { <document> },
“removedFields” : [ “<field>”, … ]
}
“clusterTime” : <Timestamp>,
“txnNumber” : <NumberLong>,
“lsid” : {
“id” : <UUID>,
“uid” : <BinData>
}
}
標簽MongoDB,技術文檔,數據庫,MongoDB
網友評論