我有一个大型的传入消息数据集,我想要做的是为每个消息所有者提供汇总统计信息,例如每天,每周,最近两周和每年的消息速率。聚合可以很简单,比如字数统计,或者更复杂,比如使用的关键字......无论哪种方式,我都希望以有组织的方式预先计算并存储这些聚合,以便当我执行以下操作时:如何为大型数据集设计聚合框架?
Person.word_count_last_10_days
- 这个查询是不是整个邮件归档数据库上运行,但是从预先计算聚合的桌子拉...类似:
SELECT SUM(value) from aggregations
WHERE
category = "word_count" AND
timeframe = "day" AND date > "2013-05-18" AND date < "2013-05-28" AND
person_id = 42
GROUP BY person_id
和聚合更大的时间框架,如“年份”,只是计算了那一年构成的所有日子。
总体目标是将分析浏览与海量消息归档分离。大多数情况下,如果聚合表包含所需的所有数据,则分析系统无需实际查询消息归档。
这引起了我作为一个非常常见的用例......无论它是通过Hadoop还是通过非并行处理来完成......所以我想知道是否已经有一个框架/包装器/设计方法论为此提供了一些约定,而不是从头开始写一个约定?我使用的是Ruby,但语言无关紧要,我只是对任何已经构思的框架/包装(使用任何语言)感兴趣。