本书于2003年出版,至今已经接近20年历史,很多东西可能与当今技术的发展不相符,但是看完第一章维度建模初步,我觉得有助于我了解数仓的一些基本知识与维度建模的基本构建过程,适合我这种刚开始接触数仓的菜鸟,本篇博客是本书的读书笔记,若出现的内容与当今情况不符,望各位不吝赐教。
- 第一章 维度建模初步
- 数仓目标
- 数据仓库必须使组织机构的信息变得容易存取
- 数据仓库必须一致地展示组织机构的信息
- 数仓必须具有广泛的适应性和便于修改
- 数仓必须发挥安全堡垒作用以保护信息资产
- 数仓必须在推进有效决策方面承担最基本的角色
- 数仓为业务群体所接受的前提是被认为是成功的(数仓是业务驱动的,完成业务才是终极目标)
- 数仓组成
- 操作型源系统-数据聚集环节-数据展示环节-数据存取工具
- 操作型源系统:获取行业事务的记录操作型系统,或许其应该被当作数仓以外的部分加以对待,是获取原始粗糙数据的位置
- 数据聚集环节:包括存储环节和ETL的一组处理过程,将操作型源系统中粗糙的数据经过一系列处理成为精细的可以便于之后进行查询分析的数据。
- 数仓聚集环节的关键是应不受行业用户的束缚,不必提供查询和展示服务。此环节切忌为了实现企业范围内的数据一致性而固执的使用制定第三范式等规范化结构,浪费大量开发资源导致后期无法为业务决策提供足够的支持,即可以为支持聚集过程创建一个规范化数据库,但这不是最终目标,规范化结构由于缺乏可理解性和性能问题,必须远离用户查询,默认情况下不会去创建规范化数据库,而采用有质量保证的维度表
- 数据展示环节:进行数据组织、存储并向用户、报表撰写和其它分析性应用提供直接查询操作的场所,是一系列数据中心的集成。数据仓库可查询展示环节的数据必须是维度的、原子的和依附于数据仓库总线结构的
- 数据聚集环节是用户接触不到的,数据展示环节成为业务群眼中的数据仓库,是业务群体通过数据存取工具看到和接触到的一切。
- 数据应该以维度的形式进行展示、存储和访问
- 数据中心应该包括详细的原子数据,以满足用户无法预料的查询和不断变化的需求
- 所有的数据中心必须采用共同的维度和事实来建造,即要求维度和事实的一致性,与总线结构的数仓联系共同作用于数据展示环节
- 数据存取工具:提供给业务用户操作展示环节,以进行分析决策制定的各种功能。数仓存取工具访问的是数仓展示环节的数据
- 根据能力的不同,小部分人可以使用特定的查询工具,大部分基本用户还需要通过实现编写好的参数驱动分析应用程序来存取数据
- 像模型或者预测工具这样的更为复杂的数据存取工具,实际上还可以将结果逆向上载到数据仓库的源系统或者聚集环节或者展示环节
- 元数据:数仓环境中除去数据之外的所有信息,在数仓构建的每一个环节都拥有各自不同的元数据
- 因为建模任务隐含的工作量巨大,不能简单的忽略为数仓开发元数据框架的工作。并且开发的框架应该是近期可交付使用的进行了优先考虑的总体性元数据计划
- 操作数据的存储(ODS):是数仓的专门管理热区
- 事实表:维度模型基本表,其中所存储的数据是任何数据中心的最大部分,应避免在企业范围内的不同地方存储其拷贝。事实表倾向于更多的行和更少的列。事实表中通常将事实描述成可连续的取值,最有用的事实是数字类型和可加型事实。事实表一般具有两个或者两个以上的外关键字,与相应维度表进行匹配与存取,维度模型中的事实表表示着维度间的多对多关系,事实表中只存在单一关键字与拥有复合关键字的事实表相比没有优点,并且建立在唯一关键字上的索引价值很小
- 维度表:每个维度使用单一关键字进行定义,主关键字是确保同与之相连的任何事实之间存在引用完整性的基础。维度表倾向于更多的列和更少的。维度属性是查询约束条件、成组与报表标签生成的基本来源,在很多方面,数仓不过是维度的体现而已,数仓的能力直接与维度属性的质量与深度成正比。维度表是进入事实表的入口,丰富的维度属性给出了丰富的分析切割能力,维度给用户提供了使用数仓的接口。维度表中最好的属性是文本的和离散的。维度表时常描述业务中的层次关系,由此诞生了雪花图
- 事实与维度融合:由数字型度量值组成的事实表连接到一组填满描述属性的维度表上(星型连接)
- 数仓目标