我想用你的智慧为数据仓库系统找到合适的解决方案。 以下是一些可以更好地理解问题的细节:
数据以星型模式结构组织,具有一个BIG事实和~15个维度。
每月20B个事实行
10行,数百行(有些层次)
5个维度,包含数千行
2个尺寸,约200K行
2个大尺寸,50M-100M行
针对此数据库运行两个典型查询
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,
哈。
答案 0 :(得分:55)
我不能强调这一点:通过现成的报告工具获得可以很好地发挥作用的东西。
每月20亿行将您置于VLDB区域,因此您需要进行分区。低基数维度也表明位图索引将是性能上的胜利。
忘记云系统(Hive, Hbase)直到他们有成熟的SQL支持。 对于数据仓库 应用程序,你想要的东西 适用于传统的 报告工具。否则,你 会永远发现自己 困扰着写作和维护 临时报告计划。
数据卷可以管理 像Oracle这样更传统的DBMS - 我知道每天加载600GB的major European telco 进入Oracle数据库。所有其他 事情是平等的,这是两个订单 幅度大于数据量, 所以shared disk architectures仍然有 你的头上空间。一个 shared-nothing架构就像 可能是Netezza或Teradata 更快,但这些数量是 不是超出一个水平 传统的共享磁盘系统。 但请记住,这些系统都是 很贵。
另请注意,MapReduce为not an efficient query selection algorithm。它是 从根本上说是一种分配蛮力的机制 计算。 Greenplum的 确实有一个MapReduce后端,但是没有专门的共享 引擎将更有效率 并以更少的成果完成更多的工作 硬件
我对此的看法是,Teradata或Netezza可能是这项工作的理想工具,但绝对是最昂贵的工具。 Oracle,Sybase IQ甚至SQL Server也会处理所涉及的数据量但速度较慢 - 它们是共享磁盘架构,但仍可以管理此类数据量。有关Oracle和SQL Server中VLDB相关功能的概述,请参阅This posting,请注意Oracle也刚刚引入了Exadata storage platform。
我的fag-packet数据包容量计划建议每月大约3-5 TB左右,包括Oracle或SQL Server的索引。虽然索引叶子在oracle上有一个16字节的ROWID而在SQL Server上有一个6字节的页面引用,但在位图索引的Oracle上可能更少。
Sybase IQ广泛使用位图索引,并针对数据仓库查询进行了优化。虽然是共享磁盘架构,但对于这种类型的查询(IIRC,它是原始的面向列的架构)非常有效。这可能比Oracle或SQL Server更好,因为它专门用于此类工作。
Greenplum可能是一个更便宜的选择,但我从来没有真正使用它,所以我不能评论它在实践中的运作情况。
如果您有10个维度,只有几百行,请考虑将它们合并为一个junk dimension,这会通过将十个键合并为一个来减少事实表。您仍然可以在垃圾维度上实现层次结构,这将使事实表的大小减少1/2或更多,并消除索引的大量磁盘使用。
我强烈建议您使用合理的报告工具横截面。 这意味着SQL前端。像Crystal Reports这样的商业系统允许具有更容易获得的SQL技能的人员完成报告和分析。开源世界还生成了BIRT,Jasper Reports和Pentaho.。 Hive或HBase让您开始构建自定义前端的业务,除非您很乐意在接下来的5年中使用Python编写自定义报表格式化程序,否则您 不希望这样做。
最后,托管它可以轻松地从生产系统获取快速数据。这可能意味着您自己的数据中心拥有自己的硬件。该系统将受I / O限制;它正在对大量数据进行简单处理。这意味着您将需要具有快速磁盘子系统的计算机。云提供商倾向于不支持这种类型的硬件,因为它比这些服装传统上使用的一次性1U盒子的价格高出一个数量级。快速磁盘I / O不是云架构的优势。
答案 1 :(得分:9)
我在vertica取得了巨大的成功。我目前每天装载的行数在2亿到10亿之间 - 平均每月约9亿行 - 尽管我一个月内已高达170亿。我有近21个维度,查询运行速度非常快。当我们根本没有时间窗口来执行dataload时,我们从较旧的系统继续前进。
我们对不同的解决方案进行了非常详尽的试验和研究 - 并且实际上研究了市场上的一切。虽然Teradata和Netezza都适合我们,但它们对我们来说太贵了。 Vertica在价格/性能比上击败了他们。它是一个柱状数据库。
我们现在有大约80个用户 - 当我们开始完全推出时,预计到明年年底将增长到大约900个用户。
我们广泛使用ASP.NET/dundas/reporting服务进行报告。它也适用于第三方报告解决方案 - 尽管我们还没有尝试过。
顺便问一下你将如何使用dataload?我们正在使用informatica并对此非常满意。 SSIS把我们赶到了墙上。
答案 2 :(得分:3)
使用HBase和jasperserver hbase报告插件,可以创建体面的报告。可以在HBase中创建低延迟OLAP。这将与SQL一样工作。 Jasperserver HBase插件提供Hbase查询语言,这是一个扩展Hbase扫描命令。
答案 3 :(得分:2)
阅读蒙纳士的网站:http://www.dbms2.com/他写了大型数据库。
也许您可以使用Oracle Exadata(http://www.oracle.com/solutions/business_intelligence/exadata.html和http://kevinclosson.wordpress.com/exadata-posts/),也可以使用Hadoop。 Hadoop是免费的。
答案 4 :(得分:2)
我很好奇你最终选择了什么。你的问题是在2008年尾声。 今天情况与HBase,Greenplum,pig等不同,给SQL提供了类似访问权限。
答案 5 :(得分:0)
少数用户的替代方案是(beowulf)群集。 20K购买50个nettops,每个500G。那是大约3KW的峰值功率。或者4个月的云存储。
答案 6 :(得分:0)
NXC,你确定每天6000亿行吗?即使一行只是一个字节,也就是每天600 GB的数据。假设每行更合理100个字节,我们说的是每天60 TB的数据,每月1.8 PB。我真的怀疑是否有人通过Oracle提供了大量数据。
Other Sources似乎证实,当数据量达到2位数TB时,Oracle变得非常难以处理。