簡體   English   中英

獲取集合操作序列MongoDB

[英]Get collection operation sequence MongoDB

我需要通過守護程序在運行時獲取收集操作的序列,以將其寫入類似於消息代理的系統。 從指定位置讀取歷史的必要能力

也許我可以通過閱讀opLog來解決這個問題。

  1. 使用 opLog 是正確的解決方案嗎?
  2. oplog 是否包含所有數據庫的記錄,而不是被集合分割?

使用 MongoDB v4.2

使用 opLog 是正確的解決方案嗎?

oplog 格式是內部的,旨在支持復制。 作為一種內部格式,它可能會在主要服務器版本之間發生變化,並且不易於使用。

您應該改用基於 oplog 的Change Streams API ,它允許訂閱集合、數據庫或部署級別的數據更改。 與直接 oplog 訪問不同,變更流有一個文檔化的 API,可以通過訪問控制進行限制,可以對流輸出執行一些過濾和修改,並且可以擴展以支持副本集和分片集群。 如果中斷,也可以恢復更改流。

從指定位置讀取歷史的必要能力

MongoDB 4.0+ 中的更改流允許您指定startAtOperationTime以在特定時間點打開游標。 如果指定的起點在過去,則必須在oplog的時間范圍內。

oplog 是否包含所有數據庫的記錄,而不是被集合分割?

oplog 是一個有上限的集合,包含副本集或分片的所有數據更改的滾動歷史記錄。 上限集合方面意味着 oplog 具有有限的歷史窗口:一旦達到最大 oplog 大小,最舊的條目將被刪除,以便為新文檔騰出空間。 local.oplog.rs數據未按集合或命名空間過濾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM