《Star Schema完全参考手册》围绕维度建模中的星型模式,详细介绍了维度表和事实表设计方法,配合详细的实例,演示解决维度设计中遇到的各类问题。完全理解其中各个解决方案,才能在合适的情况(权衡利弊)使用正确的方案。
(一) 维度表和事实表设计
雪花模式:在一定程序上可以节约存储空间,减少成本,但是会增加ETL复杂性,也会带来性能上的问题,一般情况下不建议使用。
层次桥接表:增加了ETL的复杂性且对查询性能会有影响,但是能够提供更强的数据分析能力,例如上钻和下钻。
支架表:对雪花模式的有限应用,可以解决重复属性问题(即一组属性集合在某个维度表或者多个维度表之间重复出现),用于合理化ETL或者减少行长度,但是不恰当的使用也会带来复杂性和性能问题。
行为维度:将事实转换为维度,提高分析能力,同样缓慢变化维度的增长及更新带来的ETL压力也是需要考量的问题。
利用导出模式和聚集可以提升性能,导出模式包含融合事实表,旋转事实表,切片事实表等实现方法,聚集通常是我们所说的对明细事实表向高粒度汇总,虽然这些方法都能提升查询分析的性能,但是也会带来一些问题,例如增加ETL开发、维护与管理的难度。
(二) ETL设计及模型文档化
ETL在不同的源系统之间获取数据,并基于异构技术建立统一的信息集成视图。就目前而言,可以简单的理解成维度表和事实表的加载,如果数据源有问题,还需要进行清理。若需要处理缓慢变化维度,则维度表的加载更具复杂性。事实表依赖于维度表,在加载事实表之前要完成对维度表的处理。
维度表加载:从数据源获取源数据,组合维度属性并根据自然键区分新记录与变更记录,做出相应的处理,同时管理代理键。
事实表加载:从数据源获取源数据,根据自然键从维度表取得代理键并计算事实。
优化加载:提前区分新记录与变化记录,可以减少必须处理的数据量;简化查找也能减少处理的复杂性。
使用各类格式和工具来文档化维度模型,对项目的进展和日后的维护都有很大的帮助。按详细程序及进度可以分为需求文档、顶层设计文档、详细设计文档。需求文档通过处理每个主要的主题区域来获取对需求的度量。顶层设计文档描述每个过程所涉及的星型模式以及有关的一致性维度。详细设计文档包括对每个列的定义,记录每个维度表和事实表的细节。
对这本书有兴趣的朋友看这里:
《Star Schema完全参考手册》
http://book.douban.com/subject/11602524/