我正在使用mongodb作为数据库在rails 3.2中开发一个应用程序。我正在使用mongoid gem。
我想在运行时跟踪数据库的所有更改,但我不知道该怎么做 关于这个的任何线索?
答案 0 :(得分:1)
您可以使用多种方法来跟踪数据更改,具体取决于您是只对监控当前活动感兴趣还是需要创建某种事务历史记录。
按照最少努力的粗略顺序:
如果您启用“ 2 ”级别的查询分析器,它将收集特定数据库的所有操作(读取和写入)的分析数据。您也可以在configuration options中启用此功能,以更改mongod
启动时所有数据库的分析默认值。配置文件数据保存在每个数据库的上限集合中,并且仅包含查询的最新快照。查询概要分析状态也可以在运行时更改,因此您可以根据需要轻松启用或禁用。
添加适当的逻辑Mongoid回调,例如after_insert
,after_save
,after_upsert
,具体取决于您尝试捕获的信息。
如果您将MongoDB作为副本集的一部分(或使用--replSet
选项)运行,则会创建一个名为oplog
(operations log)的上限集合。您可以使用tailable游标跟踪更改,因为它们已提交到oplog
。 oplog
详细说明了对数据库的所有更改,也是MongoDB用于复制的机制。
答案 1 :(得分:0)
我不熟悉Mongodb
或mongoid
,但这是我对使用MySQL的人的想法(我希望它能给你一些线索):
首先拍摄数据库的快照(使用像mysqldump
这样的工具。)
然后,在某些时间间隔内,检查(审核)那些updated_at
值比您拍摄快照的时间(或更晚)或上次审核时间更长的记录。
现在,您有两个版本的数据,可以检查更改。
正如我所说,这只是一个想法,需要更加精炼。我希望它能给你一个线索。