2013-07-18 56 views
0

实现访客统计我面对的一个挑战,我需要你的意见,让我解释一下:对于很多用户

我有大约30万用户,其中都有一个个人资料页的数据库,我想存储访问者在访问他们的个人资料上每周一次的金额(或每天?)的基础上报告的目的(图将提供他们的管理页面上)。

我想在一个专用的表这样做(让我们称之为 “STAT”)安排如下:

  • ID /整数(用户ID - 唯一的)
  • current_ip /文
  • 统计/文本(连载当期的访客IP的阵列)(连载每期统计的阵列)

我正在考虑的个人资料页,将过滤n只有在一个AJAX请求机器人上的用户,检查IP在'current_ip'表中存在(与LIKE请求),如果它不存在,我会反序列化'current_ip',推新访问者的IP,序列化的IP和UPDATE桌子。

在每个周期结束时(所以每周或每天),我在考虑一个cron任务,计算'current_ip'的ip数量,在'统计量'中推送该数字(包含日期)值(使用除先前所解释的相同的方法),然后删除'curent_ip'值,以便it's空下一周期。

顺便说一句我在一个Ubuntu的12.04LTS专用服务器与SSD和16克内存使用php5和PostgreSQL(9.1)与I5(4×3.2 Ghz)。

那是做的最好的,最简单的或最快的方法是什么?我都错了吗?我应该每周期使用1行而不是使用序列化数组来存储历史数值?!

任何建议,欢迎=)

干杯

杰弗里

回答

0

使用HBase的柜台,而不是Postgres的。这样做更有效率。

+0

也许,但我使用PostgreSQL的所有其他数据,我想在管理区域上的user.id上做一个INNER JOIN =) –

+0

另外HBase适用于你有几十亿行数百万列的行,在我的情况下,将是300 000行×3列,所以我们还没有在那里^^ –

+0

HBase适用于任何情况下,当你无法在合理的时间内从RDBMS得到响应。列数和行数不是参数。你的情况HBase的关键选择是取消需要使用RDBS的夜间作业计数器 - 你知道所需的确切的统计数据不运行复杂的SQL的每一个毫秒。由于HBase的写入时间约为0.1毫秒左右,因此您可以轻松地将数据完全或部分地从RDBMS复制到HBase中。压缩会降低空间需求〜X10 times.Take一看,你会发现完全不同的世界。 –