假设假设我在数据仓库设置中有星型模式。 有一个非常非常长的事实表(想想数十亿到数万亿行)和几个低基数维度表(想想100维度表)。每个事实表外键 指向维度表主键的是位图索引。每个维度表主键也是位图索引。这是快速连接的全部内容。一切都很标准。
假设数据仓库开始显示性能下降。它的时间 从事实表得到的时间越长,从位图连接返回的结果越来越差。业务要求是事实表不断增长(我们无法将数据超过一年的数据移至存档存储)
我正在考虑以下解决方案:
有没有人曾经这样做过?
有没有人对解决方案#3有任何提示?
对于快速读取扩展,HBASE解决方案是否最佳?
就写作而言,我不关心快速写入,因为它们会在批处理过程中完成。
如果有人选择了解决方案1或2,那么是否有人使用consistent hashing algorithm(如果更多分区,动态创建散列键,则避免重新映射为普通旧散列)?没有完全重映射的分区数量的动态增长可能不是一个选项(就分区表而言,我还没有看到它在实践中完成)所以在我看来,任何分区解决方案都会导致扩展问题。
将具有多维度的巨型事实表(传统的DW星型模式)移动到HBASE巨型无量纲表的任何想法,建议和经验?
相关问题:
传统上驻留在物化视图中的聚合数据集合如何(或者作为单独的事实表链接到与最细粒度的事实表相同的维度 - 即基本事实表每小时的每小时/每日/每周/每月)在数据仓库中映射到HBASE?
我的想法是,由于HBASE中没有物化视图,因此聚合数据集合存储为HBASE表,在最细粒度,最低级别的事实表发生更改的任何时候都会更新/插入。
对HBASE中聚合表的任何想法? 有没有人使用Hive脚本来更新实体化视图的行为,以更新存储在其中的聚合数据的二级HBASE表中的聚合列数据(即daily_aggregates_fact_table,weekly_aggregates_fact_table,monthly_aggregates_fact_table)对最细粒度的事实表的更改?
答案 0 :(得分:1)
尺寸将被定义为HBase中的keyrow。该值是您的度量值。如果事实表是无事实的,则HBase行中的值可以为null。
取决于互联网上的不良资源,我认为这个想法是:
**RowKey** **Value**
DimensionA XX
DimensionA:DimensionB XX
DimensionB:DimensionC XX
DimenesionA:DimensionB:DimenesionC: XXX
适合您的问题吗?
答案 1 :(得分:0)