簡體   English   中英

獲取所有數據庫更改

[英]Getting all database changes

我正在用mongodb作為數據庫在Rails 3.2中開發一個應用程序。 我正在使用蒙古型寶石。

我想在運行時跟蹤對數據庫的所有更改,但是我不知道該怎么做。
有什么線索嗎?

可以使用多種方法來跟蹤數據的更改,具體取決於您是僅對監視當前活動感興趣還是需要創建某種交易歷史記錄。

以最少到最大的努力:

1) 啟用MongoDB查詢分析器

如果以“ 2 ”級別啟用查詢分析器,它將為特定數據庫的所有操作(讀取和寫入)收集分析數據。 您還可以在配置選項中啟用此功能 ),以更改mongod啟動時所有數據庫的分析默認設置。 概要文件數據保存在每個數據庫的上限集合中,並且僅包含最近的查詢快照。 查詢概要分析狀態也可以在運行時更改,因此您可以根據需要輕松地啟用或禁用。

2) 將Mongoid回調添加到您的應用程序

根據您要捕獲的信息,添加適當的邏輯Mongoid回調,例如after_insertafter_saveafter_upsert

3) 在MongoDB oplog上創建一個可尾光標

如果您將MongoDB作為副本集的一部分(或使用--replSet選項)運行,它將創建一個名為oplog (操作日志)--replSet集合。 您可以使用tailable光標跟隨變化,因為它們致力於oplog 該操作oplog詳細說明了對數據庫的所有更改,並且是MongoDB用於復制的機制。

我對Mongodbmongoid都不熟悉,但這是我對使用MySQL的人的想法(希望它能給您一些線索):

首先,為數據庫拍攝快照(使用mysqldump類的工具)。

然后,以一定間隔檢查(審核)那些updated_at值大於(大於)快照時間或上次審核時間的記錄。

現在,您有兩個版本的數據,可以檢查它們的更改。

正如我所說的,這只是一個想法,需要進一步完善。 我希望它能給您一個線索。

暫無
暫無

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

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