首页 文章

星型模式对于大型数据仓库仍然是必需的吗?

提问于
浏览
6

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

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

Is still a best practice making star-schema data warehouses with hive?

Is it better designing row-wide (reduntant) tables, by exploiting new columnar file formats?

2 回答

  • 4

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

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

    当你计划使用hive时,你真的没有使用它进行优化,而是用于SQL的通用目的(?),因此,我认为星型模式仍然适用 . 但是,对于具有非SQL接口的NoSQL数据库,我建议您使用更具查询性的设计 .

  • 1

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

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

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

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

相关问题