我正在使用Ruby on Rails和PostgreSQL编写一个程序。系统会生成大量经常更新并且用户经常访问的报告。我在我是否应该使用Postgres触发器来创建报表(如Oracle物化视图)或ActiveRecord回调中构建的Rails之间存在着很大的分歧。有没有人对此有过任何想法或经验?数据库触发器与Rails ActiveRecord回调的优缺点?
9
A
回答
12
回调在以下情况下是有用的:
- 结合在Rails的模型,其简化维护所有的业务逻辑。
- 利用现有的Rails的型号代码
- 便于调试
- Ruby代码更容易被写入/比SQL“维修”
触发器是在下列情况下有用的阅读:
- 表现是一个大问题。它比回调更快。
如果您的问题是简单和干净,然后使用回调。如果您的担心是表现,那么使用触发器。
5
我们遇到同样的问题,既然这是一个有趣的话题,我会根据我们的选择/经验来阐述。
我认为这个概念比当前答案中强调的更复杂。由于我们在讨论报告,我假设用例是数据仓库表的更新 - 而不是“通用”应用程序(这种假设/区别是至关重要的)。首先,“易于调试”的想法并不一定是真实的。在我们的案例中,这样想实际上是适得其反的。
在足够复杂的应用程序中,某些类型的回调(数据仓库更新/数百万行代码/中等(或更多)大小的团队)根本不可能维护,因为数据库会有很多地方/方式更新,调试错过的回调几乎是不可能的。
触发器不一定必须设计为“复杂且快速”的逻辑。 具体来说,触发器也可以作为低级回调逻辑工作,因此简单而精益:它们只是将更新事件转发回Rails代码。
为了结束,在提到的用例中,应避免像鼠疫一样使用rails回调。
一个高效的设计是让RDBMS触发器将记录添加到队列表和一个轨道端排队系统,并对它们进行操作。 (因为这篇文章比较老,我很好奇OP是哪种体验)
相关问题
- 1. ActiveRecord回调或MySql触发器?
- 2. WPF中属性触发器优于数据触发器的优点
- 3. 多区域数据库的优缺点
- 4. 多值数据库的优缺点
- 5. 数据库枚举 - 优缺点
- 6. 基于文档的数据库与关系型数据库的优缺点
- 7. 对数据库使用RDS或容器(ECS)?优点和缺点
- 8. 节点 - 数据库查询回调未触发
- 9. Rails的ActiveRecord CounterCache和回调
- 10. Rails数据库性能调优
- 11. Rails 3:优化数据库调用
- 12. 在数据库中排序数据的优缺点?
- 13. QLPreviewController与UIWebView - 优点/缺点
- 14. MongoDB的优缺点?
- 15. POCO的优点和缺点/自动生成数据库表
- 16. 三重数据库的优点和缺点是什么?
- 17. 以编程方式强制执行外键的优点和缺点比数据库中的优点和缺点
- 18. JPA审计/历史数据与现有数据库触发器
- 19. jQuery - “触发点击”与“函数调用”?
- 20. 优点和缺点 - Ruby on Rails
- 21. 数据库EAV优点/缺点和替代方案
- 22. Sharepoint 2007使用Sql Server数据库,优点和缺点
- 23. Axis2优于WCF的优点和缺点
- 24. SOAP Pooling的优点/缺点
- 25. Memcached - 优点和缺点
- 26. 同位素模板(Rails)的优缺点
- 27. smartGWT的缺点和优点
- 28. PL/SQL触发器返回缺货错误:触发与编译错误创建
- 29. NFA与DFA的优点/缺点相反
- 30. XML与RDMS相比的优点/缺点
使用触发器时性能增加的原因是什么? – Zubair
因为在回调中,你会连接到数据库,但是在触发器中,你不需要连接到数据库,你已经在db层 –
啊是有道理的。谢谢 – Zubair