如何将生产数据存储到Rails应用程序中的报告数据库?

时间:2010-07-07 02:31:29

标签: mysql ruby-on-rails logging reporting

我们希望跟踪Rails应用程序的生产数据,以便我们可以在几个月内对其进行分析。

更确切地说,我们有一些数据模型具有“状态”和日期列,可以经常更改。 我的想法是每次状态或任何其他属性发生变化时,在DB或日志文件中的某处写入新行。这些行包含该对象的所有属性的副本。

我看到了不同的解决方案:

  • 在after_save中使用observer,并将保存的数据复制到报告Mysql Db
  • 使用记录器系统。
  • 在数据库级别执行不同级别,检测表中的更改并将受影响的行复制到报告数据库。

如果数据存储在数据库中,则更容易提取数据。日志文件更快,并且不会减慢这个过程。我无法弄清楚什么是最好的方法,或者是否有任何其他解决方案/实施。

3 个答案:

答案 0 :(得分:0)

你看过acts_as_versioned吗?我确信有一个更现代的库为此目的而编写,但它可能会实现您所需要的:在更新时对数据进行版本控制,以便您以后可以跟踪它。无论如何,它可能会给你一个模板。

答案 1 :(得分:0)

有一个选项作为宝石:http://github.com/andersondias/acts_as_auditable

现在我在保存审计表或使用CVS格式保存文件之间犹豫不决。我的感觉是第二个选项更好,因为文件写入速度更快,我们不依赖于与数据库服务器的连接。

任何单个BI工具都可以使用CVS文件作为数据源。问题是我每次更改表的结构时都必须创建一个不同的文件。但这是一个问题吗?

答案 2 :(得分:0)

我最终使用了一个观察者和一个带有FasterCSV的Logger来生成审核日志。

我无法正确复制/粘贴所有代码,因此这里有一篇博文的链接,供感兴趣的人使用:

log rails production data to perform some audit (bi)

这可以很容易地适用于任何Rails模型。 :)