我正在使用hive设计一个新的基于hadoop的数据仓库,我想知道在这种情况下,经典的星型/雪花模式是否仍然是一个“标准”。
大数据系统采用冗余,因此完全规范化的模式通常性能较差(例如,在NoSQL数据库(如HBase或Cassandra)中)。
仍然是使用hive?构建星型数据仓库的最佳实践。
是否通过使用新的列文件格式来更好地设计行范围(reduntant)表?
发布于 2015-06-14 00:01:05
在为NoSQL数据库设计时,您倾向于通过预处理查询的部分来优化特定的查询,从而存储数据的非规范化副本(尽管是以特定于查询的方式取消规范化)。
另一方面,星型模式是一种通用的去正规化,通常是适当的.
当你计划使用蜂巢时,你真的不是为了优化而使用它,而是为了一般的目的(?)对于SQL,因此,我认为星型模式仍然是合适的。然而,对于具有非SQL接口的NoSQL db,我建议您使用更特定于查询的设计。
发布于 2017-05-04 16:43:50
加入是邪恶的。特别是在Hadoop上,我们不能保证数据的协同局部性,特别是在需要连接两个大表的情况下。这是Hadoop和传统MPP (如Teradata等)之间的区别之一。在MPP中,我根据散列密钥在集群中的所有节点平均分配数据。order和order_item表的相关行将在我的集群中的相同节点上结束,这至少会消除跨网络的数据传输。在Hadoop中,您将在order表中嵌套order_item数据,这将消除联接的需要。
另一方面,如果您有一个小型查找/维度表和一个大型事实表,则可以在集群中的所有节点上广播该小表,从而消除了网络传输的需要。
总之,星型模式仍然是相关的,但主要是从逻辑建模的角度。从物理上讲,您可能会更好地去还原,甚至更好地创建一个大型柱状压缩和嵌套事实表。
我写了一篇完整的博客文章,讨论了Hadoop和大数据技术的维模型的目的和用途。
https://stackoverflow.com/questions/30824047
复制相似问题