2011-08-05 6 views
1

私のシステムは、毎日異なるサイトから300Mのヒットを収集します。 すべてに時間、ユーザーID、タイプ(広告または通常)、httpアドレス、サイトIDがあります。高速Web解析(大規模データアレイ)のためのDB、OLAPソリューションの選択

性別、年齢層や国を持っているユーザー〜200Mの配列は、もあります。ヒットによるデータに基づいてシステムを設計するために必要な

は異なるユーザーグループのヒット曲のリアルタイムレポートを与えることができます。

:-) OLAPソリューションのように例えば、構築するために、15〜25歳、英国から、10月から9月まで女の子のためのヒットで2011年

あなたが選択することをお勧めデータベース

、その溶液をグラフにプロットしますOLAPキューブ?

私はHBaseの(+ zohmgまたはカスケード)Hypertableまたは何か他のもの(無料DWHの:-))と同様に、オープンソースのソリューションを探しています。データの膨大な量だ

答えて

1

、300Mio毎日は、それが数セクタにのみ利用可能ですヒット。これは、約100テラ(10e2 * 10e9)ヒット/年、うわーです!

私も考慮に支払うソリューションを取って、事前に集計することなく、データのような量を扱うことができるソリューションのような任意のOLAPのか分かりません。おそらく分析的な(OLAPとも呼ばれる)システムの情報を減らすことに取り組んでいます。つまり、サイズuser_id、httpアドレス、サイトIDのサイズを減らすか減らします。

はあなたの問題を解決しないとどのようにあなたが:-)あなた200Mユーザーの性別、年齢層を手に入れたか好奇心だろう。

0

これはリアルタイムで(近くに)行うことができます。あなたは毎日前もって集計することができます。

CREATE VIEW preAggregatedByDate 
SELECT gender, ageGroup, country, date, COUNT(*) AS dailyCount 
FROM myTable 
GROUP BY date; 

は、だから、それぞれの日付の上にパラメータの組み合わせごとにカウント数(性別、年齢層、及び国を)持っている:次のマテリアライズド・ビューを想像してみてください。あなたのクエリのために、あなたのような何かをしたい:明らかに

SELECT COUNT(*) 
FROM preAggregatedByDate 
WHERE gender = 'Female' AND ageGroup = '15_25' AND country = 'UK' AND 
    date >= '20110901' AND date < '20111101'; 

を、この単純なことはないだろう(そして、あなたはSQLを使用して取得し、マテリアライズド・ビューをしない場合があります)が、これは想像するための最良の方法かもしれませんあなたが従来のデータベースに精通していればそれです。実際のクエリでは、大幅に縮小された事前集計されたデータソースからデータを取得するだけです。

その日にクエリを実行するために、1日の終わりから数時間待つ必要がない場合、最も簡単な解決策は、Hadoopを使用して事前集計されたデータを計算し、データベースを作成し、クエリを実行することができます。

+0

私は言及を忘れていました:データを事前集計する際に考えられる問題は、ユーザーの情報が変更される可能性があることです。たとえば、ユーザーが別の国に移住した場合でも、以前に行った事前集計のために、以前の国でカウントされます。これは、ビジネスルールに応じて望ましい場合もあれば、そうでない場合もあります。 – ajduff574

+0

また、クエリごとに*ユニーク*ユーザー数(合計ヒット数ではなく)が必要な場合、この事前集計は機能しません。 – ajduff574

関連する問題