在过去,我曾经使用在MySQL上运行的OLAP多维数据集构建WebAnalytics.现在我使用OLAP多维数据集的方式只是一个大表(好吧,它比那更智能地存储),其中每一行基本上是一个测量或聚合的测量集.每个度量都有一堆维度(即哪个页面名称,用户名,ip等)和一堆值(即多少个综合浏览量,多少访问者等).
您在这样的表上运行的查询通常采用以下形式(meta-SQL):
SELECT SUM(hits), SUM(bytes), FROM MyCube WHERE date='20090914' and pagename='Homepage' and browser!='googlebot' GROUP BY hour
因此,您可以使用上述过滤器获取所选日期中每小时的总计.一个障碍是这些立方体通常意味着全表扫描(各种原因),这意味着你可以制作这些东西的尺寸(在MiB中)的实际限制.
我正在学习Hadoop等的来龙去脉.
在BigTable上运行上述查询作为mapreduce看起来很容易:只需将'小时'作为键,在地图中过滤并通过对值进行求和来减少.
您是否可以在"实时"(即通过用户界面和用户得到他们的答案,而不是批处理模式)上运行BigTable类型的系统上面(或至少具有相同输出)的查询?
如果不; 在BigTable/Hadoop/HBase/Hive等领域做这样的事情的适当技术是什么?
它甚至已经完成了(有点).
LastFm的聚合/汇总引擎:http://github.com/zohmg/zohmg
谷歌搜索出现了一个谷歌代码项目"mroll",但它没有任何东西,除了联系信息(没有代码,没有).不过,可能还想与那个人联系,看看有什么事情发生. http://code.google.com/p/mroll/