2011-08-05 32 views
1

我遇到以下問題:我的系統每天從不同站點收集約300M點擊量。 每個人都有時間,用戶ID,類型(廣告或慣常),http地址,站點ID。爲快速網站分析選擇DB,OLAP解決方案(大數據陣列)

也有一批用戶〜200M,其中有性別,年齡組和國家。

要求設計一個基於點擊數據的系統,可以實時報告不同用戶羣的點擊率。就像OLAP解決方案:-)

例如,繪製圖表上命中女孩15-25歲,英國,從10月到九月,2011年

的數據庫您推薦選擇和解決方案來構建OLAP多維數據集?

我正在尋找開源解決方案,如HBase(+ zohmg或級聯)Hypertable或其他(免費DWH :-))。

回答

1

這是大量的數據,每天300Mio點擊它只能用於少數幾個行業。這大約每年100 Tera(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和物化視圖),但是這可能是想象的最好方式它如果你熟悉傳統的數據庫。您的實際查詢僅從大量減少的預先彙總的數據源提取數據。

如果您不介意在一天結束後等待幾個小時才能運行查詢,那麼最簡單的解決方案可能是使用Hadoop來計算預先彙總的數據並將其放入一些常規數據庫,然後您可以運行查詢。

+0

我忘了提及:預聚合數據可能存在的一個問題是用戶的信息可能會改變。例如,如果用戶遷移到其他國家/地區,那麼他們仍將計入他們之前的國家,以進行您已完成的預彙總。根據您的業務規則,這可能是可取的,或者它可能不符合要求。 – ajduff574

+0

另外:如果您希望對每個查詢統計* unique *用戶(而不是總點擊率),則此預集合將無法工作。 – ajduff574

相關問題