您好
我正在将分析添加到我的SaaS应用程序中,我很想听听别人的经历。
目前我看到两种不同的方法:
在数据库级别执行大部分数据处理,构建数据并将数据聚合到物化视图中以提高性能。这样,数据将保持标准化。
有不同的cronjobs /进程以不同的间隔(10分钟,1小时等)运行,它们将查询数据库并将聚合结果插入到新表中。在这种情况下,指标/分析是非规范化的。
哪种方法最有意义,也许完全不同?
答案 0 :(得分:2)
在非常大的数据上,cronjob或ETL是唯一的选择。您只需读取一次数据,汇总数据并永不返回。然后查询汇总数据相对便宜。
视图将通过表格。如果对基于视图的查询使用“explain”,则可能会看到仍在从表中读取数据,可能使用索引(如果存在相应的索引)。以这种方式查询数TB的数据是不可行的。
cronjob / ETL方法的唯一问题是它是PITA维护的。如果您发现生产环境存在错误 - 您会被搞砸。您可能需要花费数天和数周来修复和重新计算聚合。简单地说:你必须在第一次就把它弄好:)