DataVault模型
- DataVault是在ER模型的基础上衍生而来的,模型设计的初衷是有效的组织基础数据层,使之易扩展、灵活的应对业务变化,同时强调历史性、可追溯性和原子性,不要求对数据进行过度的一致性处理;并非针对分析场景所设计。
- Data Vault模型是一种中心辐射式模型,其设计重点围绕着业务键的集成模式。这些业务键是存储在多个系统中的、针对各种信息的键,用于定位和唯一标识记录或数据。
包含3种基本结构:
- 中心表——Hub
唯一业务键的列表,唯一标识企业实际业务,企业的业务主体集合。 - 链接表——Link
表示中心表之间的关系,通过链接表串联整个企业的业务关联关系。 - 卫星表——Satellite
历史的描述性数据,数仓中数据的真正载体。
中心表——Hub
只包含业务主键信息以及数据装载的描述,不包含非键值以外的业务数据属性本身;比如中心表商品,在Data Vault下的设计:
中心表一般都会在创建一个主键Hub_商品ID,与业务商品ID无关,一般称为代理键或者附加键。
PS: 大家会发现这张中心表中没有商品属性信息;商品属性以及描述信息,都属于卫星表的范畴。
链接表——Link
链接表用来描述中心表间的关联关系,亦不包含业务键值以及数据装载描述以外的任何非键值数据,比如:学生授课链接表,其设计:
与授课相关的课时数等描述信息,都属于卫星表的范畴。
卫星表——Satellite
数仓中数据的主要载体,包括对链接表、中心表的数据描述、数值度量等信息,中心表商品、订单明细的卫星表分别如下:
案例:
对上一篇已经讨论到的学生选课ER模型,进行Data Vault模型重构,原模型:
原则:
- 梳理所有主要实体。
- 将有入边的实体定义为中心表。
- 将没有入边且只有一个出边的表定义为中心表。
- 源系统没有入边且有两条或以上出边的表定义为链接表。
- 将外键关系定义为链接表
按Data Vault改造后的大概模型
hub——中心表
link——链接表
-
sat——卫星表
Data Vault模型更容易设计,ETL过程中更易配置化实现。
Hub想象成人体的骨架,那么Link就是连接骨架的韧带组织,而satelite就是骨架上的血肉。
Data Vault是对ER模型更近一步的规范化,由于对数据的拆解和更偏向于基础数据组织,在处理分析类场景时相对复杂,适合数仓底层构建,目前实际应用场景较少。