我不能强调这一点:获得与现成的报告工具配合得很好的东西。
每月 200 亿行将您置于 VLDB 领域,因此您需要分区。低基数维度也表明位图索引将是性能上的胜利。
忘记云系统(Hive、
Hbase),直到它们拥有成熟的 SQL 支持。对于数据仓库应用程序,您需要与传统报告工具配合使用的东西。否则,您会发现自己永远陷入编写和维护临时报告程序的困境。
数据量可以通过 Oracle 等更传统的 DBMS 进行管理——我知道一家主要的欧洲电信公司每天将 600GB 的数据加载到Oracle数据库中。在所有其他条件相同的情况下,这比您的数据量大两个数量级,因此共享磁盘架构仍然为您提供空间。像Netezza或Teradata这样的无
共享架构
可能会更快,但这些卷的水平并没有超出传统的共享磁盘系统。但请记住,这些系统都非常昂贵。
还要记住 MapReduce不是一种有效的查询选择算法。从根本上说,它是一种分布式蛮力计算的机制。Greenplum 确实有一个 MapReduce 后端,但是一个专门构建的无共享引擎将更加高效,并且可以用更少的硬件完成更多的工作。
我对此的看法是,Teradata 或 Netezza 可能是这项工作的理想工具,但绝对是最昂贵的。
Oracle、Sybase IQ甚至SQL Server也可以处理所涉及的数据量,但速度会慢一些——它们是共享磁盘架构,但仍然可以管理这种数据量。有关 Oracle 和 SQL Server 中 VLDB 相关特性的简要介绍,请参阅这篇文章,并记住 Oracle 刚刚还引入了Exadata 存储平台。
我的备份数据包容量计划建议每月大约 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 不是云架构的优势。