在有状态对象上记录数据的最佳模式是什么?

时间:2015-09-08 17:43:52

标签: ruby-on-rails postgresql activerecord logging

目前我正在考虑添加一个json数组列(我正在使用postgres),只是将对象的日志消息引入此属性。我想记录进度(该对象是一个执行很多东西的导入报告,需要一段时间,因此了解当前正在发生的事情 - 导入了多少行,已经规范化了多少行等等 -

另一种选择是添加一个允许您在视图中查看流式传输的宝石,但我认为这不是很有用,因为我正在寻找的是我能看到的历史特定对象。

1 个答案:

答案 0 :(得分:0)

使用json列或json[]json的PostgreSQL数组)是一个非常错误的日志记录。

每次更新时,必须在内存中读取,修改整个列内容,然后再将其全部写出。

相反,创建一个用于此类对象的日志的表,记录表的FK和每个条目的时间戳。为每个日志条目插入一行。

顺便说一句,如果报告在单个事务中运行,其他客户端将无法看到任何日志行,直到整个视图提交,在这种情况下,它不会对进度监视有好处,但也不会你原来的想法。您需要改为使用NOTICE消息。