受信メッセージの大規模なデータセットがあり、メッセージ所有者ごとに、1 日、1 週間、過去 2 週間、1 年ごとのメッセージの割合などの集計統計を提供したいと考えています。集計は、単語数などの単純なものにすることも、使用するキーワードなどのより複雑なものにすることもできます...いずれにしても、整理された方法でこれらの集計を事前に計算して保存し、次のようなことを行うときに次のようにします。
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 を使用していますが、言語は問題ではありません。すでに考案されているフレームワーク/ラッパー (言語を問わない) に興味があるだけです。