什么是数据仓库?
- 数据库是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库
- 数据库是长期存储在计算机内、有组织的、共享的数据集合.数据库中的数据指的是以一定的数据模型组织、描述和储存在一起、具有尽可能小的冗余度、较高的数据独立性和易扩展性的特点,并可在一定范围内为多个用户共享
数据仓库定义
面向主题的,集成的,相对稳定的,反映历史变化的数据集合,用于支持管理决策.
- 面向主题:在较高层次上将企业的信息系统的数据综合归并进行分析利用的抽象的概念.每个主题基本上对应一个相应的分析领域(BI)
- 集成的:企业级数据,同时数据要保持一致性,完整性,有效性,精确性
- 稳定的:从某个时间段看是保持不变的,木有更新操作,删除操作,以查询分析为主
- 变化的:反应历史变化
数据仓库与数据库对比
数据仓库建模理论
ER(EntityRelation)实体模型
- ER模型是数据库设计的理论基础,当前几乎所有的OLTP系统设计都采用ER模型建模的方式
- Bill Inom提出的数据仓库理论,推荐采用ER关系模型进行建模
- BI架构提出分层架构,数据仓库底层的ods,dwd多采用ER关系建模就行设计
-
ER模型建模标准:尽量的避免数据冗余
维度建模
维度建模源自数据集市,主要面向分析场景:数据仓库建模 ;主流的OLAP引擎底层数据模型
星型:
雪花:
雪花模型和星型模型对比:
- 冗余:雪花模型符合业务逻辑设计,采用3NF设计,有效降低数据冗余;星形模型的维度表设计不符合3NF,反规范化,维度表之间不会直接相关,特殊部分存储空间
- 性能:雪花模型由于存在维度间的关系,采用3NF降低冗余,通常在使用过程中,需要连接更多的维度表,导致性能偏低;星形模型反三范式,采用降维的操作将维度整合,以存储空间为代价有效降低维度表连接数,性能较雪花模型高;
- ETL(数据清洗):雪花模型符合业务ER模型设计原则,在ETL过程相对简单,但是由于阶段性模型的限制,ETL任务并行化较低;星形模型在设计维度表时反范式设计,所以在ETL过程中整合业务数据到维度表有一定难度,但是由于避免阶段性维度,可并行化处理
dataVault模型
(Data Vault是在ER模型的基础上衍生而来,模型设计的初识是有效的组织基础数据,使之易扩展,灵活的应对业务的变化,同时强调历史性,可追溯性和原子性,不要求对数据进行过度的一致性处理,并非针对分析场景设计)
包含三种结构:卫星表--satallite:历史的描述性数据,数据仓库中数据的真正载体
链接表-link:表示中心表之间的关系,通过链接表串联整个企业的业务关联关系
中心表-hub;唯一业务键的列表,唯一标识企业实际业务,企业的业务主体集合
anchor
- anchor是对dataVault模型做了更近一步的规范处理,初识是为了设计高度可扩展的模型,核心思想就是所有的扩展只添加不修改,于是设计出模型基本变成了k-v结构的模型,模型范式达到了6NF
- Map模型
建模总结
以上为四种基本的建模方法:当前主流的建模方法为:ER模型(主要应用于数据库),维度模型(主要应用于数据仓库)
- ER模型常用于OLTP数据库建模,应用到构建数据仓库时更偏重数据整合,站在企业整体考虑,将各个系统的数据按相似性一致性,合并处理,为数据分析,决策服务,但并不便于直接用来支持分析.
- 维度建模是面向分析场景而生,针对分析场景构建数据仓库模型;重点关注快速,灵活的解决分析需求,同时能够提供大规模数据的快速响应性能.针对性强,主要应用于数据仓库构建和OLAP引擎低层数据模型
- 不需要完整的梳理企业业务流程和数据
- 实施周期根据主题边界而定,容易快速实现demo
- 尽量要冗余,因为数据仓库(hive)后面是hdfs,硬盘空间无上限;推荐使用星形模型,可以使用雪花模型,但是层级不要太多;