gpt4 book ai didi

php - 分析仪表板策略

转载 作者:行者123 更新时间:2023-11-29 14:42:20 24 4
gpt4 key购买 nike

我们目前正在开发一个 API,我们希望为客户提供一个分析仪表板,以查看有关他们每月/每天/每小时的调用的指标。

出于历史原因,我们认为当前的策略是将每个调用保存到客户端单独的表(例如,calls_{client_id})中,并有一个汇总表(例如,calls_summary),其中包含给定小时内的调用数量每个客户的一天。

然后,每天 cron 作业都会创建一个 xml 文件,其中包含每个客户端最后一天的调用摘要,仪表板将使用它们而不是数据库。因此,唯一使用数据库的分析任务将是 cron 作业。

对于基础设施,我们正在考虑 MySQL 复制和从属数据库作为分析数据库。

该策略对于真实的网络统计有用且有效吗?你能提出任何调整,甚至是完全不同的调整吗?

最佳答案

save each call to a client separate table (eg. calls_{client_id}) for historic reasons

没有。除非有充分的理由,否则不要违反标准化规则。它不会提高性能,实际上可能非常有害。它肯定会使您的代码更加复杂,从而降低可靠性。

逐个周期地归档旧记录可能是值得的,但除非您知道会遇到性能问题,否则我建议您不要这样做。

无论如何,将数据预先合并到另一个表中(前提是行数减少至少 95%)。但除非您需要该格式的数据,否则不必费心将其转换为 XML。

至于如何预合并......要么使用基于期间的合并(例如按日期汇总),要么使用标记来记录哪些记录已经合并。

运行整合的频率越低,对性能的影响就越大。但如果运行得太频繁,就会遇到争用/锁定问题。

如果不了解数据的结构和数量,或者预算、可用性和及时性方面的限制,就很难提供最佳解决方案。但如果是我,我可能会选择 3 层 mysqld - 一层提供事务写入功能,一层复制数据并生成整合数据,一层提供对整合数据的读取访问(master <-> master <-> 奴隶)

关于php - 分析仪表板策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7737741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com