大型数据仓库仍然需要星型模式吗?

时间:2015-06-13 22:07:29

标签: hadoop hive data-warehouse

我正在使用hive设计一个新的基于hadoop的数据仓库,我想知道经典的星形/雪花模式是否仍然是标准"在这种情况下。

大数据系统采用冗余,因此完全规范化的模式通常性能较差(例如,在HBase或Cassandra等NoSQL数据库中)。

使用配置单元制作星型模式数据仓库仍然是最佳做法吗?

通过利用新的列式文件格式,设计行范围(reduntant)表是否更好?

2 个答案:

答案 0 :(得分:4)

在设计NoSQL数据库时,您倾向于通过预处理部分查询来优化特定查询,从而存储数据的非规范化副本(尽管以特定于查询的方式非规范化)。

另一方面,星型模式是一种通常适用的通用非规范化。

当您计划使用配置单元时,您实际上并没有将它用于优化,而是用于SQL的通用目的(?),因此,我想象一下星型模式仍然合适。但是,对于具有非SQL接口的NoSQL数据库,我建议您使用更多特定于查询的设计。

答案 1 :(得分:2)

加入是邪恶的。特别是在Hadoop上,我们无法保证数据的共存性,特别是在我们需要连接两个大型表的情况下。这是Hadoop与传统MPP(例如Teradata,Greenplum等)之间的差异之一。在MPP中,我基于散列密钥在我的集群中的所有节点上均匀分布我的数据。 order和order_item表的相关行将最终出现在我的集群中的相同节点上,这至少会消除网络上的数据传输。在Hadoop中,您可以将order_item数据嵌套在订单表中,这将消除对连接的需要。

另一方面,如果您有一个小的查找/维度表和一个大型事实表,您可以在群集中的所有节点上广播小表,从而无需网络传输。

总之,星型模式仍然相关,但主要是从逻辑建模的角度来看。从物理上讲,你可以更好地进行非规范化,以创建一个大的柱状压缩和嵌套事实表。

我写了一篇完整的博客文章,讨论了dimensional models on Hadoop and Big Data technologies

的目的和用处