我想用你的智慧为数据仓库系统找到合适的解决方案.以下是一些可以更好地理解问题的细节:
数据以星型模式结构组织,具有一个BIG事实和~15个维度.
每月20B个事实行
10个维度有100行(有些层次结构)
5个维度有数千行
2个维度有~200K行
2个大尺寸有50M-100M行
针对此DB运行两个典型查询
dimq的热门成员:
select top X dimq, count(id) from fact where dim1 = x and dim2 = y and dim3 = z group by dimq order by count(id) desc
针对元组的措施:
select count(distinct dis1), count (distinct dis2), count(dim1), count(dim2),... from fact where dim1 = x and dim2 = y and dim3 = z
问题:
执行此类查询的最佳平台是什么
需要什么样的硬件
哪里可以托管(EC2?)
(请忽略此刻的导入和加载问题)
Tnx,
Haggai.
我不能强调这一点:通过现成的报告工具获得很好的效果.
每月20亿行将您置于VLDB区域,因此您需要进行分区.低基数维度也表明位图索引将是性能获胜.
忘记云系统(Hive, Hbase),直到他们拥有成熟的SQL支持.对于数据仓库应用程序,您需要一些适用于传统报告工具的东西.否则,你会发现自己永远陷入了编写和维护临时报告程序的困境.
使用更传统的DBMS(如Oracle)可以管理数据量 - 我知道一个主要的欧洲电信公司每天向Oracle数据库加载600GB .在所有其他条件相同的情况下,这比您的数据量大两个数量级,因此共享磁盘架构仍然可以为您提供空间.一个 无共享的建筑风格 Netezza公司或Teradata数据可能会更快,但仍然这些卷是不是在这超出了传统的共享磁盘系统的水平.但请记住,这些系统都非常昂贵.
还要记住,MapReduce 不是一种有效的查询选择算法.它基本上是一种分配蛮力计算的机制.Greenplum确实有一个MapReduce后端,但是专门构建的无共享引擎将更高效,并且可以为更少的硬件完成更多的工作.
我对此的看法是,Teradata或Netezza可能是这项工作的理想工具,但绝对是最昂贵的工具. Oracle,Sybase IQ甚至SQL Server也会处理所涉及的数据量但速度较慢 - 它们是共享磁盘架构,但仍可以管理这种数据量.有关Oracle和SQL Server中与VLDB相关的功能的详细信息,请参阅此帖子,请记住Oracle也刚刚引入了Exadata存储平台.
我的fag-packet数据包容量计划建议每月大约3-5 TB左右,包括Oracle或SQL Server的索引.虽然索引叶子在oracle上有一个16字节的ROWID而在SQL Server上有一个6字节的页面引用,但在位图索引上的Oracle可能更少.
Sybase IQ广泛使用位图索引,并针对数据仓库查询进行了优化.虽然是共享磁盘架构,但对于这种类型的查询(IIRC,它是原始的面向列的架构)非常有效.这可能比Oracle或SQL Server更好,因为它专门用于此类工作.
Greenplum可能是一个更便宜的选择,但我从来没有真正使用它,所以我无法评论它在实践中的运作情况.
如果您有10个维度,只有几百行,请考虑将它们合并到一个垃圾维度中,这将通过将十个密钥合并为一个来减少事实表.您仍然可以在垃圾维度上实现层次结构,这将使事实表的大小减少1/2或更多,并消除索引的大量磁盘使用量.
我强烈建议您使用合理的报告工具横截面来实现. 这意味着SQL前端. 像Crystal Reports这样的商业系统允许人们使用更容易获得的SQL技能来完成报告和分析.开源世界也产生了BIRT,Jasper Reports和Pentaho..Hive或HBase让你开始构建一个自定义前端的业务,除非你很乐意在接下来的5年里用Python编写自定义报告格式化器,否则你真的不需要它.
最后,托管它可以轻松地从生产系统获取快速数据.这可能意味着您自己的数据中心拥有自己的硬件.该系统将受I/O限制; 它正在对大量数据进行简单处理.这意味着您将需要具有快速磁盘子系统的计算机.云提供商倾向于不支持这种类型的硬件,因为它比这些服装传统上使用的一次性1U盒子的价格高出一个数量级.快速磁盘I/O不是云架构的优势.
我在vertica上取得了巨大的成功.我目前每天装载的行数在2亿到10亿之间 - 平均每月约9亿行 - 尽管我一个月内已经高达170亿.我有近21个维度,查询运行速度非常快.当我们根本没有时间窗口去做dataload时,我们从旧系统开始.
我们对不同的解决方案进行了非常详尽的试验和研究 - 并且实际上研究了市场上的一切.虽然Teradata和Netezza都适合我们,但它们对我们来说太贵了.Vertica在价格/性能比上击败了他们.它是一个柱状数据库.
我们现在有大约80个用户 - 当我们开始全面推出时,预计到明年年底将增长到大约900个.
我们广泛使用ASP.NET/dundas/reporting服务进行报告.它也适用于第三方报告解决方案 - 尽管我们还没有尝试过.
顺便问一下,你将如何使用dataload?我们正在使用informatica并对此非常满意.SSIS把我们推上了墙.