选择DB,OLAP解决方案进行快速Web分析(大数据阵列)

时间:2011-08-05 14:41:26

标签: hadoop analytics olap

我遇到以下问题:我的系统每天从不同的网站收集约300M的点击量。 每个都有时间,用户ID,类型(广告或通常),http地址,网站ID。

还有一系列用户〜200M,其中包含性别,年龄组和国家/地区。

要求设计基于点击数据的系统,可以提供有关不同用户组点击的实时报告。像OLAP解决方案: - )

例如,为2011年10月至9月英国15-25岁女孩的点击率绘制图表。

您建议选择哪个数据库,以及构建OLAP多维数据集的解决方案?

我正在寻找开源解决方案,例如HBase(+ zohmg或级联)Hypertable或其他(免费DWH: - ))。

2 个答案:

答案 0 :(得分:1)

这是大量的数据,300Mio每日点击它只适用于少数几个行业。这是每年大约100 Tera(10e2 * 10e9)的点击量,哇!

我不知道任何OLAP类似的解决方案可以在没有预先聚合的情况下处理大量数据,甚至考虑到付费解决方案。也许正在努力减少分析(也称为OLAP)系统的信息:摆脱或减小维度user_id,http地址和站点ID的大小。

很好奇你如何解决你的问题?你是如何得到你的2亿用户的性别,年龄组的: - )。

答案 1 :(得分: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来计算预先聚合的数据并将其放入一些正常的数据库中然后你可以运行查询。