Data Vault是一种怎样的数据建模方式?

关注者
5
被浏览
4,147
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

Data Vault是一种数据仓库建模方法,最早由Dan Linstedt在20世纪90年代提出,主要应用于企业级数据仓库建模。

不同于三范式数据仓库模型、维度模型,Data Vault模型主要用于存储来自多个业务系统的完整的历史数据。它不区分数据在业务层面的准确与否,装载数据也不做验证和清洗,因此,Data Vault模型可用于跟踪所有数据的来源。

它的每一行数据都需要包含来源系统和装载时间戳,用于审计和跟踪数据来源的源系统。

一、Data Vault 模型定义

按照Dan Linstedt的定义,Data Vault模型是面向细节的、可追踪历史的、一组有连接关系的规范化的表的集合。它综合了三范式建模和星型模型的优点,其设计理念是满足企业对数据模型灵活性、可扩展性、一致性和对需求的适应性要求,是专门针对企业级数据仓库需要的一套建模方法。

Data Vault模型只按照业务数据的原始状态存储数据,不做任何过滤、清洗、转换,比如:同一客户在不同系统有不同地址,Data Vault模型会存储多个不同版本的客户地址数据。

二、Data Vault 模型特点

DataVault模型主要具有以下特点:

1、与源系统完成独立。

2、所有数据基于时间戳,即便数据质量很低,也不能清洗掉数据。

3、可以适应源数据的各种变化,并可以灵活的实现模型扩展。

4、数据的来源可以完全追踪,并且数据处理作业可以支持重载。

三、Data Vault 模型体系

Data Vault模型由中心表、链接表、附属表三部分构成,其核心是中心表,用于存储业务主键,链接表用于存储业务关系,附属表用于存储业务描述。

1、中心表

中心表用于存储企业每个业务实体的业务主键,业务主键需要能够唯一标识一个业务实体。按此定义,中心表与源系统无关,即无论业务主键是否用于多个业务系统,其在Data Vault模型中也只有一份数据。

出于设计上的考虑,中心表一般由主键、业务主键、装载时间戳、数据来源系统四个字段构成,其中主键根据业务主键唯一分配,一般是与业务无关的序列数值。

2、链接表

链接表是不同中心表之间的关系链接,链接表一般由一组外键字段构成,表示一种业务关系,比如:交易表、客户关联账户等。

链接表主要包括主键、外键1、······、外键n、装载时间戳、数据来源系统等字段构成,其中主键对应多个外键的唯一组合,一般是与业务无关的序列数值。

3、附属表

附属表用于保存中心表和链接表的描述属性,包含了所有历史变化数据,附属表有且仅有一个唯一外键关联到中心表或链接表。

附属表主要包括主键、外键、属性1、······、属性n、是否失效、时效时间戳、装载时间戳、数据来源系统,主键用于唯一标识附属表中的一行记录,一般是与业务无关的序列数值。

四、Data Vault 模型设计

根据Data Vault模型体系构成,Data Vault模型设计也由此分成三大部分。

1、中心表设计

(1) 明确模型需要覆盖的业务范围。

(2) 按业务范围划分若干原子业务实体,比如:客户、产品、投资品种等。

(3) 从业务实体中抽象业务主键,业务主键必须是可唯一标识业务实体且不会发生变化。

(4) 按照业务主键生成中心表。

2、链接表设计

(1) 分析业务实体间的业务关系,并识别对应的中心表,这些业务关系可以是一对一、一对多、多对多多种关系。

(2) 按业务关系涉及的中心表,提取中心表主键,组成构成链接表的外键,并确定链接表的主键。

* 说明:链接表内可以保存交易数据,也可以用附属表描述交易数据。

3、附属表设计

附属表的设计相对比较简单,主要是从中心表、链接表出发,提取与中心表、链接表相关的上下文描述信息。由于同一业务实体的各类描述信息可能会经常变化、变化频率也不尽相同,因此需要按变化频率将不同属性信息分隔,建立多个附属表。

为了访问数据的方便,可能需要设计PIT表,PIT表不是必须的,但如果一个中心表有多个附属表,就有可能用到PIT表。PIT表的主键是有附属表关联的中心表提取而来,有几个附属表就会有几个字段用于记录附属表的变化时间戳。


原文地址:安正软件(ID:BusinessMatrix)
技术揭秘 | 数据仓库建模之Data Vault模型