1

我想为网络创建一个“谷歌分析”类型的应用程序——即一个基于网络的工具来为我的数据库做一些报告和绘图。问题是数据库很大,所以我不能实时进行查询,因为查询时间太长而且工具没有响应。

如何使用 cron 作业来帮助我?使我的图表具有响应性的最佳方法是什么?我想我需要对我的一些数据库表进行去特征化,但是如何使这些查询更快呢?我可以将哪些中间值存储在另一个数据库表中以使其更快?

谢谢!

4

1 回答 1

3

商业智能 (BI) 是一门相当成熟的学科——您可以在任何有关为报告和数据仓库扩展数据库的书中找到问题的答案。

一个高级别的策略列表将包括:

  • 分区(因为索引对大多数报告帮助不大)
  • 汇总表(通常通过通过 cron 提交的批处理生成)
  • 你需要一个好的优化器(一些数据库,如 mysql 不需要 - 所以做出糟糕的加入决定)
  • 查询并行性(某些数据库只需将查询拆分为多个线程即可提供线性加速)
  • 星型模式 - 良好的数据模型对良好的性能至关重要

一般来说,动态报告胜过静态报告——因此,如果您需要强大的报告,我只会尝试将数据复制到适当的模型中,使用聚合,可能会更改数据库以获得良好的优化器和适当的功能,而不是批量运行报告。

于 2009-12-04T16:38:27.553 回答