数据仓库之Data Vault模型总结
一,Data Vault模型有几个主要的组件,这里先总结一下:
1.Hub组件,是一个数据表,用于记录在业务应用中常用到的业务实体键值,如员工ID,发票号、客户编号、车辆号等。
表内包括几个关键字段:代理主键(Surrorgate Key),即hub表的主键;业务实体主键(Business Key),记录业务键值;装载时间(Load Data/Time Stamp),记录该业务键值的记录时间;数据源(Record Source),记录该业务键值的来源,以追踪数据。
2.Link组件,通过存储相关业务实体间Hub表的SK(Surrorgate Key),以记录一对多、多对多的业务实体间关系,如员工与企业的雇佣关系,账户与客户之间的关系等。
包括以下几个关键字段:代理主键(Surrorgate Key),即Link表的主键;Hub1 SK…Hubn SK,与此Link相关的Hub表SK,记录业务关系;装载时间(Load Data/Time Stamp),记录该业务关系的记录时间;数据源(Record Source),记录该业务关系的来源,以追踪数据。
3.Satellite组件,Hub表中业务主键所对应的业务描述,即业务实体的属性信息,这些信息具有时效性,随时间变化而可能产生变化,因此,Satellite组件内的记录均具有时间维,可记录实体属性的历史变化情况。根据实体属性变化频率的不同,可将一类实体的业务属性分为若干Satellite表,通过向Satellite分表追加记录,以实现在更小粒度下,实现第二类渐变维的保存历史数据特性。
Satellite组件包括以下关键字段:代理主键(Surrorgate Key),即Satellite组件表的主键;Hub或Link表的主键,Satellite联合主键之一,记录该Satellite组件所属Hub或Link;装载时间(Load Data/Time Stamp),Satellite联合主键之一,记录该描述信息在数仓中的有效时间;数据源(Record Source),记录该描述信息的来源,以追踪数据。
4.Point-In-Time辅助表,用于同一Hub的多个Satellite组件间的时间同步。因为同一业务实体的不同类型属性的更新频率不同,因此同一Hub的多个Satellite组件基本不会同步更新,因此,只需要在PIT表中记录在同一时点同时有效的Satellite组件描述信息即可,以保证查询到的数据是查询时点的实体状态。通过PIT表中的记录,可以清晰的分析业务实体属性的变化频率及频率差异。
客户姓名和地址之间的变化情况
PIT表用于解决多Satellite组件统一时点的问题,如果只有一个Satellite组件则不需要PIT表。
二,Data Vault与星型模型比较
1.星型模型容易产生数据孤立,不同主题间的数据不容易产生联系,而且一旦模型确定,想要追加维度,涉及的调整范围较大,灵活性不足;而Data Vault继承了3NF的优点,可以从整体上描述企业的业务数据或信息结构,而且能够实现数据模型的动态架构。
2.Hub组件与星型模型中的维度表非常相似:记录了业务实体的维度信息的键值,但其它描述信息记录在了Satellite组件中。
3.Link组件与星型模型中的事实表非常相似,只是没有度量数据,因此可在原有Link组件的基础上,追加度量数据,以记录事实数据。
=》
4.Satellite组件的设计可以解决星型模型中多事实冗余的问题,由于Link本身具有多维的特性,因此通过在Link上追加度量信息的方式也同步解决了多维事实数据的问题。在向Link追加度量信息时,如果事实数据类型很多时,可以将度量信息按更新频度或类型进行分类,然后分别存储在多个Satellite组件中,以降低由于更新频度不同等原因导致的事实数据冗余。方法是为Link表增加一个Link组件,用于存储不同度量类型的主键关系,然后为建立对应的Satellite组件,以记录事实数据。
5.由于hub和link的设计,可以使Data Vault模型的数据仓库具有很好的扩展性,追加Hub和Link非常方便,也不用考虑粒度问题;Link的优势在于每个Link都是追加在Link组件中的或者是增加一个新的Link来记录新的关联关系,而不需要更新Link的数据结构,这样他的扩展性和灵活性就非常强,这一点与星型模型具有很大的区别。
6.理论上来说,Data Vault模型通过使用Satellite组件,减少了事实表的数据冗余(通过考虑不同变化率的数据而分别存储),大大降低了存储的数据量,能够提升查询性能,但因为Data Vault模型根据3NF对表进行了理细粒度的拆分,使查询过程增加了连接操作,这方面的影响需要验证,是否能够突破理论,实现真实的性能提升,本人再起无法评论,需要实际应用的检验。
三,一些设计原则:
关于Hub:
1.Hub之间不能直接通过外键进行关联,而必须通过Link联接,以保证模型的灵活性和扩展性;
2.两个或两个以上的Hub都可以通过Link相联;
3.Hub的键会出现在其它组件中(Link和Satellite)中,否则Hub数据将被孤立。
关于Link:
1.Link可以与其他Link相联;
2.Hub主键固定,而不会发生变化;
关于Satellite:
1.Satellite必须存在关联的Hub或Link才有意义,否则无效;
2.Satellite问题包含装载时间,以记录历史数据,且没有重复数据;
3.可根据更新频率拆分Satellite;
Data Vault模型是由业务键(Hub)、业务关系(Link)、业务描述(Satellite)组成的
---------------------
作者:junweishiwo
来源:CSDN
原文:https://blog.csdn.net/junweishiwo/article/details/82838407
版权声明:本文为博主原创文章,转载请附上博文链接!
数据仓库之Data Vault模型总结的更多相关文章
- Data Vault玩转数据仓库(三)
在Data Vault 2.0版本里,其不只是针对数据仓库的建模,同时也包含了架构,方法论以及实现.这篇挑几个概念,附上我个人对其的理解.同时也把这个系列的名字改成<Data Vault玩转数据 ...
- 利用Data vault对数据仓库建模
简介 国内关于Data Vault的信息很少,所以决定写点什么,纯粹都是自己在这个行业10多年的摸爬滚打.不过为了效率,尽量做到简短,直接上干货.对于各个细节大家有不同的理解欢迎来讨论. 数据仓库建模 ...
- 利用Data Vault对数据仓库进行建模(二)
写在前面 本篇先不讨论Data Vault其本身,因为不见得所有人都接受这个.但是里边有一些很不错的东西跟主流的数据仓库方法是有共同点的,所以这里主要讨论这些共同的方法,在笔者看来,无论是Kimbal ...
- Data Vault 简介
Data Vault 简介 Data Vault 2.0 不仅是建模技术,也提供了一整套数据仓库项目的方法论.它能提供一套非常可行的方案来满足数据仓库项目中对于历史轨迹和审核两个方面的需求. 多年来, ...
- 胖子哥的大数据之路(9)-数据仓库金融行业数据逻辑模型FS-LDM
引言: 大数据不是海市蜃楼,万丈高楼平地起只是意淫,大数据发展还要从点滴做起,基于大数据构建国家级.行业级数据中心的项目会越来越多,大数据只是技术,而非解决方案,同样面临数据组织模式,数据逻辑模式的问 ...
- Cross-Domain Security For Data Vault
Cross-domain security for data vault is described. At least one database is accessible from a plural ...
- BI 底座——数据仓库技术(Data Warehouse)
在开始喷这个主题之前,让我们先看看数据仓库的官方定义: 数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented).集成的(Integrate).相对稳定的(Non- ...
- [目录]Pentaho Kettle解决方案:使用PDI构建开源ETL解决方案
第一部分:开始 1 ETL入门 1.1 OLTP和数据仓库对比 1.2 ETL是什么 1.2.1 ETL解决方案的演化过程 1.2.2 ET ...
- Hive 建模
date: 2020-05-24 17:55:00 updated: 2020-06-15 11:19:00 Hive 建模 1. 存储格式 textFile sequenceFile:一种Hadoo ...
随机推荐
- 【.NET】 C# 时间戳和DataTime 互相转换
1.C# DateTime转换为Unix时间戳 System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(, , )); // ...
- Oarcle之集合操作
计算字段(列):不在于表中,通过x.÷操作和列进行计算得到的列: 获取员工的年薪 select (ename || '的年薪为:' || sal*12) info from emp; *info 为表 ...
- vue.js使用vue-preview做移动端缩略图时报错Property or method "$preview" is not defined
报错的详细信息为: Property or method "$preview" is not defined on the instance but referenced duri ...
- 1.2:Properties
文章著作权归作者所有.转载请联系作者,并在文中注明出处,给出原文链接. 本系列原更新于作者的github博客,这里给出链接. 上一节我们了解了一个Shader的基本结构,这一节,我们从 Propert ...
- 继承 派生 super()经典类 新式类
'''1什么是继承? 继承一种新建类的方式,在python中支持一个儿子继承多个爹 新建的类称为子类的或者派生类 父类有可以称为基类或者超类 子类会‘遗传’父类的属性 2 为什么要用继承 减少代码冗余 ...
- 多线程校验url的种种。。。
东西不经常看就容易忘,这两天抽空写了一个补丁库url验证工具,挺曲折的,记录一下需求大概流程如下:转换补丁库为xml,解析xml得到所有url,多线程校验url.就不到100行有效代码,断断续续写了三 ...
- RHCE
RHCE 配置 配置firewalld防火墙 配置firewalld端口转发 自定义用户环境 配置链路聚合 配置IPV6地址 配置本地邮件服务
- iOS imageNamed 与 imageWithContentsOfFile 的区别
imageNamed 方法 1)后面的参数是icon的名字,图片可以存在项目中,也可以存在Asset中 2)该方法只适合一些中小型的图片读取,而一些比较大的资源图片并不适合用这个方法 3)这个方法加载 ...
- Oracle错误——ORA-39002:操作无效、ORA-39070:无法打开日志文件、ORA-06512:在“SYS.UTL_FILE”,line
错误 在使用数据泵impdp导入文件时,出现错误,无法导入数据 Next 问题原因 初步猜测,应该是Oracle用户权限出现问题,是对Directory目录无操作权限所致,经过一番修改和测试,发现使用 ...
- 【POJ 1179】Polygon
[原题链接]传送门 [题解思路] 1.第一感觉没有其他做法,想到动态规划,去环,区间dp 2.f[l,r]表示[l,r]内的最大值,考虑转移 3.最大值分加法和乘法,其中乘法不一定由两个要求合并的区间 ...