我有一個大型的傳入消息數據集,我想要做的是爲每個消息所有者提供彙總統計信息,例如每天,每週,最近兩週和每年的消息速率。聚合可以很簡單,比如字數統計,或者更復雜,比如使用的關鍵字......無論哪種方式,我都希望以有組織的方式預先計算並存儲這些聚合,以便當我執行以下操作時:如何爲大型數據集設計聚合框架?
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,但語言無關緊要,我只是對任何已經構思的框架/包裝(使用任何語言)感興趣。