这实际上是一个常见的问题,即如何有效地对数据进行分组并保留所有必要的信息。
首先:您是否尝试过自己的方式?您真的缺乏存储空间吗?您的解决方案似乎很合理。
我会怎么做
我假设您正在使用数据库来保存数据。
我将创建两个单独的表,
hourly一个用于
daily统计,一个用于统计。每篇文章在该数据库中将有24行,每小时一行。这将用于
hourly统计数据。要更新特定行,您只需知道小时(0-23)和entry_id。
UPDATEcount=count+1 WHERe hour=11 AND entry_id = 18164;
entry_id foreign key | hour integer | count integer---------------------+--------------+--------------1 | 0 | 1231 | 2 | 1712...
当前的每日统计信息将在午夜左右(或在应用执行最少操作时)进行计算或按需求和。无论哪种方式,每天都必须对所有小时数据进行汇总,并且必须将其插入
daily统计表中。
entry_id foreign key | day date | count integer---------------------+------------+--------------1 | 2013-07-03 | 541971 | 2013-07-04 | 66123...
超过31(30/29/28)天的每个条目都应删除。是否需要总统计或年度统计
优点
- 您保留的数据少于完整的每小时统计数据:24 + 31
- 如果在entry_id和hour上建立索引,则小时表上的总和应该很快
- 比解决方案中使用的内存更少
缺点
- 每日更新统计信息所需的其他脚本/触发器/作业
- 实施它比解决方案需要更多的工作



