问题描述
在蜂巢中构建星型模式模型的最佳实践是什么?
让我说我有3维的事实
f_test:
customer_key,vendor_key,country_key,measures
d_customer
d_vendor
d_country
您如何存储上述用例?基于键和事实的存储桶尺寸(复合,存储桶(客户,供应商,国家/地区))?
请提供最佳实践建议。
解决方法
使用分组处理可提高查询性能,因此,如果不知道用户将如何查询数据,就不可能建议如何对数据进行存储处理,例如如果事实表的大多数查询都是按客户属性进行的,那么对customer_key进行存储就很有意义。
除非您的Dims中有大量数据,否则不值得对它们进行存储。我认为Country只有ca。 200条记录。
不幸的是,这是使用Hive / Impala / etc的主要限制之一。作为一个分析平台,您通过表设计来提高性能的范围非常有限,即您只能以一种方式对表进行分区/存储,因此仅支持一种查询模式。在您的示例中,如果事实表由客户和供应商平均查询,则无法提高两种类型查询的性能,而您仅需依靠平台的“强大功能”来处理查询。
将其与常规数据库进行比较,在常规数据库中,您可以根据需要添加新索引以支持查询