時間:2024-03-26 14:41作者:下載吧人氣:24
前言
最近有一個需求是要實時獲取到新插入到MongoDB的數據,而插入程序本身已經有一套處理邏輯,所以不方便直接在插入程序里寫相關程序,傳統(tǒng)的數據庫大多自帶這種觸發(fā)器機制,但是Mongo沒有相關的函數可以用(也可能我了解的太少了,求糾正),當然還有一點是需要python實現,于是收集整理了一個相應的實現方法。
一、引子
首先可以想到,這種需求其實很像數據庫的主從備份機制,從數據庫之所以能夠同步主庫是因為存在某些指標來做控制,我們知道MongoDB雖然沒有現成觸發(fā)器,但是它能夠實現主從備份,所以我們就從它的主從備份機制入手。
二、OPLOG
首先,需要以master模式來打開mongod守護,命令行使用–master,或者配置文件增加master鍵為true。
此時,我們可以在Mongo的系統(tǒng)庫local里見到新增的collection——oplog,此時oplog.$main
里就會存儲進oplog信息,如果此時還有充當從數據庫的Mongo存在,就會還有一些slaves的信息,由于我們這里并不是主從同步,所以不存在這些集合。
再來看看oplog結構:
“ts” : Timestamp(6417682881216249, 1), 時間戳
“h” : NumberLong(0), 長度
“v” : 2,
“op” : “n”, 操作類型
“ns” : “”, 操作的庫和集合
“o2” : “_id” update條件
“o” : {} 操作值,即document
網友評論