目前我在PHP / MySQL的仪表板上工作,其中包含一些统计数据/事实,例如:销售的商品数量,收入,性别(男/女)用户比例等(均为上周可过滤的) /月/年)。 (当前)数据量不是那么多:20.000个用户行,1.000个项目,每天销售500个项目,但预计将来会增长,甚至可能呈指数级增长。
现在,希望有几个图表显示性能,以了解策略变化是否会影响用户数量,收入,性别比等。为此,每天必须有数字。目前,仪表板只能显示" NOW() - 1周/ 1个月/ 1年"但是为了显示概述增长的图表,这些数字应该每天保存。
我的问题是:在这种情况下有哪些选择?可以设置一个cronjob以保存这些数字,并将它们写入单独的“性能”中。或者'历史'在与当天日期相关联的行中保存访问者,销售额,性别比率等的表格。这对性能有好处,但某些数据会丢失。另一种选择是使用复杂查询(按日分组)等计算这些数字,但这似乎是密集的,因为查询是在生产数据库上执行的。特别是因为数据库结构有点复杂。考虑避免在生产数据库上这样做,是建立一个数据仓库,ETL处理是一个更好的选择,以避免生产数据库超载?在这种情况下,数据不会实时显示。
老实说,我不知道在这种情况下最好的选择是什么。我对这些答案非常好奇!非常感谢。
答案 0 :(得分:1)
在生产数据库(尤其是数量和复杂性不断增长的数据库)上运行查询会很快成为一个失败的主张。有很多可能的替代方案,基本上整个商业智能领域都可以解决这个问题。
对于您只想避免查询生产数据库的小型系统,可能开发一个完整的数据仓库是过度的。如果不了解更多,就不可能给出合理的答案,但我会选择以下其中一种(按复杂程度/结果程度的增长顺序):
您使用的技术以及可用架构上可用的选项也很重要。根据您手头的情况,您可以获得一些非常简化的解决方案,甚至是复杂的解决方案。做一些研究。