【问题标题】:What Database / Technology should be used to calculate unique visitors in time scope应该使用什么数据库/技术来计算时间范围内的唯一访问者
【发布时间】:2010-10-21 20:02:13
【问题描述】:

我的报告数据库的性能有问题(表有数百万条记录,50+),当我想计算表示访问者唯一性的列上的不同时,比如说一些哈希键。

例如: 我有这些专栏: hashkey、姓名、姓氏、visit_datetime、站点、性别等...

我需要在 1 年的时间跨度内变得与众不同,不到 5 秒:

SELECT COUNT(DISTINCT hashkey) FROM table WHERE visit_datetime BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD' 

这个查询在短时间范围内会很快,但如果超过一个月,则可能需要超过 30 秒。

有没有比关系数据库更好的技术来计算这样的东西?

我想知道谷歌分析使用什么来动态计算他们的唯一访问者。

【问题讨论】:

    标签: database performance google-analytics nosql


    【解决方案1】:

    对于报告和分析,即您所描述的事物类型,这些统计数据往往会被提取、汇总并存储在数据仓库或其他东西中。它们以一种出于性能原因的方式存储,而不是为 OLTP(在线事务处理)优化的良好关系存储技术。这种预聚合技术称为 OLAP(在线分析处理)。

    【讨论】:

    • 也就是说,如果这是您唯一要做的分析,可能会有一些更适合此的技术。
    • 现在我只需要这个分析,但我不能说将来我需要更多...我对OLAP的了解很少,你能指出一些好的资源,从哪里我可以开始了吗?
    • 嗯,这个答案几乎达到了我对 OLAP 知识的限制:P 尝试浏览 wiki 页面的参考资料 - en.wikipedia.org/wiki/OLAP#References
    • 与此同时,Dufel 的回答为您提供了一个很好的简单起点。如果可能的话,我个人会使用数据库作业而不是 cron 作业,但这就是我。
    【解决方案2】:

    您可以让另一个表存储每天的唯一访问者数量,每天通过 cron 函数或其他方式更新。

    【讨论】:

    • 这不是一个解决方案,因为我需要一段时间的唯一性,而不仅仅是特定的一天。
    【解决方案3】:

    Google Analytics 使用第一方 cookie,如果您使用 LiveHTTPHeaders 等记录请求标头,您可以看到它。

    所有 GA 分析参数都打包到请求 URL 中,例如,

    utma%3D97315849.1774621898.1207701397.1207701397.1207701397.1%3B">http://www.google-analytics.com/_utm.gif?utmwv=4&utmn=769876874&utmhn=example.com&utmcs=ms207701397.1&utms 32位&utmul = EN-US&utmje = 1&utmfl = 9.0%20%20r115&utmcn = 1&utmdt = GATC012%20setting%20variables&utmhid = 2059107202&utmr = 0的utmp = /自动/ GATC012.html?utm_source = www.gatc012.org&utm_campaign =运动+ gatc012&utm_term =关键字+ gatc012及的utm_content =content+gatc012&utm_medium=medium+gatc012&utmac=UA-30138-1&utmcc=__utma%3D97315849.1774621898.1207701397.1207701397.1207701397.1%3B...

    在该 URL 中有一段键入 __utmcc,这些是 GA cookie。在 _utmcc 中,是一个以 _utma 为键的字符串,它是由六个字段组成的字符串,每个字段由一个“.”分隔。第二个字段是访问者 ID,这是一个由 GA 服务器在查找 GA cookie 并没有找到它们后生成和设置的随机数:

    __utma%3D97315849.1774621898.1207701397.1207701397.1207701397.1
    

    在本例中,1774621898 是访问者 ID,Google Analytics 打算将其作为每个访问者的唯一标识符

    因此,您可以看到识别唯一访问者的技术缺陷——使用不同的浏览器或不同的设备进入网站,或者在删除 cookie 后,将导致您在 GA 中显示为唯一访问者(即,它会查找它的 cookie,但没有找到,因此设置它们)。

    EFF 有一个很好的 article 就这个主题 - 即,如何建立唯一性,确定性的程度,以及如何打败它。

    最后,一旦我用来确定某人以前是否访问过我们的网站(假设是硬情况,即他们删除了他们的 cookie 等),我会检查客户端对我们 favicon。存储网站图标的目录经常被忽视——无论是在手动扫描期间还是以编程方式使用脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-30
      • 1970-01-01
      相关资源
      最近更新 更多