Cron job + new table vs webapp analytics的物化视图?

时间:2016-08-17 08:29:46

标签: postgresql analytics

您好

我正在将分析添加到我的SaaS应用程序中,我很想听听别人的经历。

目前我看到两种不同的方法:

  1. 在数据库级别执行大部分数据处理,构建数据并将数据聚合到物化视图中以提高性能。这样,数据将保持标准化。

  2. 有不同的cronjobs /进程以不同的间隔(10分钟,1小时等)运行,它们将查询数据库并将聚合结果插入到新表中。在这种情况下,指标/分析是非规范化的。

  3. 哪种方法最有意义,也许完全不同?

1 个答案:

答案 0 :(得分:2)

在非常大的数据上,cronjob或ETL是唯一的选择。您只需读取一次数据,汇总数据并永不返回。然后查询汇总数据相对便宜。

视图将通过表格。如果对基于视图的查询使用“explain”,则可能会看到仍在从表中读取数据,可能使用索引(如果存在相应的索引)。以这种方式查询数TB的数据是不可行的。

cronjob / ETL方法的唯一问题是它是PITA维护的。如果您发现生产环境存在错误 - 您会被搞砸。您可能需要花费数天和数周来修复和重新计算聚合。简单地说:你必须在第一次就把它弄好:)