使用非规范化数据库表获取分析数据

时间:2012-01-23 16:16:54

标签: database ruby-on-rails-3 postgresql denormalization

在我建立的在线票务系统中,我需要为我的客户添加订单的实时分析报告。

重要订单数据分为多个表(客户,订单,line_items,package_types,票证)。每个表都包含对我的客户可能需要的任何报告不重要的其他数据。

我正在考虑将每个订单记录为非规范化报表中的单独订单项。我想弄清楚这是否有意义。

通常,我为报表运行的查询一次只能连接两个或三个表。每个表都添加了适当的索引。

将所有订单数据汇编到一个只包含报告所需列的表中是否有意义?

该应用程序基于Ruby on Rails 3构建,DB是Postgresql。

编辑:这样做的目的是尽可能快地为用户呈现浏览器中的数据。

1 个答案:

答案 0 :(得分:2)

取决于您的目标。如果你想让报告输出更快地显示,那肯定会有效。权衡是通过批量更新在一定程度上维护数据。您可以编写一个触发器,在新记录进入基表时随时更新表,但这可能会增加很多开销。

在这种情况下,一个视图而不是一个新表是一个更好的解决方案吗?