Zub*_*air 12 activerecord triggers ruby-on-rails materialized-views
我正在使用Ruby on Rails和PostgreSQL编写程序.系统生成很多报告,这些报告经常被用户更新和频繁访问.我是否应该使用Postgres触发器创建报表表(如Oracle物化视图)或内置ActiveRecord回调的Rails.有没有人对此有任何想法或经验?
Mah*_*led 15
回调在以下情况下很有用:
触发器在以下情况下很有用:
如果您的关注是轻松和干净,那么使用回调.如果您的关注是性能,那么使用触发器.
我们遇到了同样的问题,因为这是一个有趣的话题,我将根据我们的选择/经验进行详细说明.
我认为这个概念比当前答案中强调的要复杂得多.
由于我们正在谈论报告,我假设用例是更新数据仓库表 - 而不是"通用"应用程序(这种假设/区别是至关重要的).
首先,"易于调试"的想法并非必然如此.在我们的案例中,这样做实际上会适得其反.
在足够复杂的应用程序中,某些类型的回调(数据仓库更新/数百万行代码/中型(或更多)大小的团队)根本无法维护,因为有太多的地方/方式来更新数据库,实际上不可能调试错过的回调.
触发器不一定必须设计为"复杂且快速"的逻辑.具体来说,触发器也可以作为低级回调逻辑工作,因此简单而精简:它们只是将更新事件转发回rails代码.
总结一下,在上面提到的用例中,应该像瘟疫一样避免使用rails回调.
一种高效且有效的设计是让RDBMS触发器将记录添加到队列表,以及作用于它们的轨道侧排队系统.
(由于这篇文章很老,我很好奇哪个是OP的经验)
| 归档时间: |
|
| 查看次数: |
3553 次 |
| 最近记录: |