【问题标题】:Approaches to gathering large visiting statistics收集大量访问统计数据的方法
【发布时间】:2011-09-27 15:42:56
【问题描述】:

我有网站,用户可以在其中发布他们的文章,我想提供有关每篇文章访问的完整统计数据以及作者的推荐人。这里的实现似乎很简单,只需为每次访问存储一个数据库记录,然后使用聚合函数绘制图形等。

问题是,文章在 24 小时内获得大约 30 万次浏览,仅在一个月内,stats 表将获得大约 900 万条记录,这是一个非常大的数字,因为我的服务器不是很强大。

这类任务有解决方案吗?是否有一种算法或缓存机制可以在不损失准确性的情况下存储长期统计数据?

附:这是我原来的统计表:

visitid INT
articleid INT
ip INT
datetime DATETIME

【问题讨论】:

    标签: php mysql statistics


    【解决方案1】:

    假设一个自制的使用跟踪解决方案(而不是其他回复中建议的 GA),您可能正在寻找两个数据库设置:

    • 一个“实时”数据库,可在访问事件发生时捕获它们。
    • 一个“离线”数据库,定期收集“实时”数据库中的数据,以便[可选地]汇总和编制索引。

    此设置的目的主要是出于运营考虑。 “实时”数据库没有索引(或最小索引),以便快速插入,并且定期清空,通常是每天晚上,当流量较轻时,因为“离线”数据库拾取全天收集的事件。

    两个数据库可以具有完全相同的架构,或者“离线”数据库可能会引入各种形式的聚合。应用于离线数据库的具体聚合细节可能会有很大差异,这取决于保持数据库大小的愿望以及被认为重要的数据(大多数统计/聚合函数会引入一些信息丢失,需要确定哪些丢失是可以接受的,哪些不是)。

    由于使用日志价值的“半衰期”性质,即细节的相对价值随时间衰减,一个常见的策略是在多个层级聚合信息,从而在最后收集的数据,例如,X天数大部分保持不变,X 天和 Y 天之间收集的数据是部分汇总的,最后,Y 天之前的数据只保留最显着的信息(例如,点击次数)。

    【讨论】:

      【解决方案2】:

      除非您特别热衷于自己存储统计数据,否则您可以考虑使用Google Analytics 或其现代对应物之一,它们比 90 年代旧的远程托管命中计数器要好得多。您可以在http://code.google.com/p/gapi-google-analytics-php-interface/找到 Google Analytics PHP 接口的 API

      【讨论】:

        猜你喜欢
        • 2011-03-18
        • 2010-11-07
        • 2020-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多