数据仓库 Data Warehouse
- 从业务数据中抽离数据,并针对决策和分析进行优化
- 是面向主题的,集成化的,稳定的,随时间变化的数据集合,用来支持管理决策的过程
- 数据来自多个数据源,并整合到一个数据库中
数据仓库和数据库的区别
数据库 | 数据仓库 | |
---|---|---|
1 | 面向事务 | 面向主题 |
2 | 存储在线交易数据 | 所有历史数据 |
3 | 避免冗余 | 有意引入冗余 |
4 | 用来捕获数据的 | 用于分析数据 |
ODS
将贴源层的数据按照数据仓库的要求,并作简单的数据清洗。
数据集市
一般来说从数据仓库中根据需求,抽取所需的数据,组建各自的分析主题,获取数据组合后的新数据。数据集市是数据仓库的子集。
维度表
维度表包含对分析主题所属类型的描述,如时间,商品
事实表
对分析主题的度量,同时包含与维度表关联的外码。
数据模型
星型模型
一个事实表,多个维度表围绕且维度表之间没有关联。
雪花类型
基于星型模型,在维度表上增加细化的拆分
星座模型
基于星型模型,一个维度表被多个事实表关联。
渐变维 SCD
即是一种在多维数据仓库中实现维度历史的技术。有三种不同的SCD技术:SCD 类型1(SCD1),SCD类型2(SCD2),SCD类型3(SCD3).
- SCD1通过修改维度记录直接覆盖已存在的值,它不维护记录的历史。SCD1一般用于修改错误的数据。
- SCD2在源数据发生变化时,给维度记录建立一个新的“版本”,从而维护维度历史。SCD2不删除、修改已存在的数据。
- SCD3保持维本度记录的一个版。它通过给某个数据单元增加多个列来维护历史。例如,为了维护客户地址,customer_dim维度表有一个customer_address列和一个previous_customer_address列。SCD3可以有效的维护有限的历史,而不像SCD2那样维护全部历史。SCD3很少使用。它只适用于数据库空间不足并且用户接受有限维度历史的情况。
数据库的设计范式
- 第一范式 所有属性不可再分。比如语文考试成绩,我们可以拆分为科目,成绩,而不是揉在一起。
- 第二范式 消除非主属性对主属性的部分依赖。比如,对于(学号,科目)这样的主属性,成绩是非主属性。成绩对于(学号,科目)来说,是完全依赖。但是系主任对于(学号,科目)来说就是部分依赖,其实只需要依赖学号就行了。把学号拆出去,变成(学号,姓名,系名,系主任)。
- 第三范式 在2NF的基础上消除传递依赖。(学号,姓名,系名,系主任)中,学号就可以决定系名,系名可以决定系主任,存在传递依赖。再拆分出(系名,系主任)。