gpt4 book ai didi

php - 自定义统计的最佳实践

转载 作者:行者123 更新时间:2023-11-29 03:02:04 25 4
gpt4 key购买 nike

我正处于必须构建一个可以存储用户相关统计信息的统计模块的情况。

基本上,所有存储的是一个事件标识符、一个日期时间对象和该事件被触发的次数以及正在与之交互的对象的 ID。

我以前做过类似的系统,但从来没有像这个那样必须存储大量信息的系统。

我的建议是数据库中的一个简单表格。等包含以下行的“统计信息”

  • id(主要,自增)
  • 金额(整数)
  • 事件(枚举 -(列表、点击、查看、联系)
  • 日期时间(日期时间)
  • object_id(整数)

通常,此方法工作正常,使我能够在给定时间范围内存储有关对象的统计信息(每小时或 15 分钟插入一个新的日期时间,因此统计信息将每 15 分钟更新一次)

现在,我的问题是:

  • 是否有更好的方法或更优化的方法来实现并构建自定义统计模块。
  • 由于这个新站点将接收大量流量,我该如何解决对象 ID 上的索引会导致更新响应时间变慢的悖论
  • 您如何实现实时统计数据(如分析等)?这仅与服务器大小和处理能力有关吗?或者是否有最佳实践。

我希望我的问题是可以理解的,我期待着在这个话题上变得更聪明。此致。乔纳斯

最佳答案

我相信您将要遇到的问题之一是您想要交易和分析的两个世界。这在小情况下很好,但当您开始扩展时,尤其是进入 5 亿以上记录的领域时。

我建议将两者分开,您生成事件并仅跟踪事件本身。然后,您将运行分析查询以获取诸如每次对象交互的事件计数之类的信息。您可以将这些计数或其他指标计算定期汇总到报告表中。

至于跟踪事件,您可以通过将它们保存在事件发生表中来实现,或者在执行此跟踪的数据库之前有一些东西,然后它会向数据库提供定期聚合。想想监控系统的世界,它使用收集代理生成事件,这些事件进入聚合层,然后将定期指标快照写入分析区域(例如 CollectD 到 StatsD/Graphite 到 Whisper)

免责声明,我是 InfiniDB 的架构师不确定您使用的是哪种数据源,但是随着您的增长和确定历史记录的数量等......您可能会像大多数人在收集事件数据或监视数据时通常所做的那样面临大小调整问题。如果您使用的是 MySQL/MariaDB/PostegreSQL,我建议您查看 InfiniDB(用于分析的开源柱状 MPP 数据库);它是完全开源的 (GPLv2),将提供查询数十亿和 TB 数据以回答这些分析问题所需的性能。

关于php - 自定义统计的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21887177/

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