初见 Data Vault 模型

    最近因为工作需要接触了Data Vault这个概念,所以又开始了新一轮的学习,作为一个java开发者,平时主要和代码打交道,实现的是业务逻辑,初探数据的故事,感觉整个整个世界都是新的。作为一个懵逼小白,第一件事当然是了解什么是Data Vault,还是从5W1H出发来看。

What

    Data Vault模型是Dan Linstedt在20世纪90年代提出的,主要在对自然界中发现的复杂网络建模。

    根据维基百科,Data Vault定义如下:

Data Vault modeling is a database modeling method that is designed to provide long-term historical storage of data coming in from multiple operational systems. It is also a method of looking at historical data that deals with issues such as auditing, tracing of data, loading speed and resilience to change as well as emphasizing the need to trace where all the data in the database came from. This means that every row in a data vault must be accompanied by record source and load date attributes, enabling an auditor to trace values back to the source

    根据《数据架构 大数据、数据仓库以及DATA VAULT》这本书里所说:

    Data Vault 模型是一个面向细节的,历史追溯的并且唯一链接的规范化表集,能够支持一个或者多个业务功能区。

    从建模风格上看,它采用了一种由第三范式方法与维度建模方法混合而成的方式,以二者的独特组合来满足企业需求。

    简而言之,Data Vault就是一种以业务数据为中心的建模方法,存储全量数据,和一般的数据仓库方法不同的是,Data Valut不是要维护data of truth,而是认为所有数据是有业务意义的,无论这条数据从业务层面上来说是否正确。这样,一切活动都可以溯源从而可以进行后续的一系列商业活动。

Who & Where & When

    看了定义,加上数据仓库本身的应用场景,这个3W就不用多说了。

    一句话飘过:Data Vault(DV)模型是用于企业级的数据仓库建模。

Why

    前面说了Data Valut模型对的定义和主要实施场地,最后1W就是很关键的了,就是我们如何确定要选用Data Vault模型列,如果只有这一种模型,那毫无疑问肯定就是它了,但是显然构建数据仓库模型有很多,所以我们可以从对比不同常用模型来看看这里的Why。

    说起对比,大家常来对比的就是3NF和维度建模了,3NF应该是大家最熟悉的一种建模方式了,优点就不多说了,比如结构化,方便扩张,减少数据冗余,易于理解等等,但是它的局限性也不少,例如数据之间的关系不方便修改,而且查询时间比较高,构建企业数据库可能会花费比较长的时间;再说说维度建模,它和3NF截然不同,因为它是反范式的,是面向数据的使用方的,可以很方便的进行多维分析,而且对复杂查询比较友好,当然构建起来也相对3NF高效,既然是反范式,那么范式解决的一些问题肯定会在维度建模中有所体现,例如数据冗余,加载数据处理成本高,灵活度不够等等。

3NF和维度建模各有优缺点,在企业数据仓库模型中,因为商业行为的不确定性,所以Data Vault作为一种混合的建模方式应运而生,作为一种解决数据仓库领域问题的方案,Data Vault保留了3NF和维度建模的优点,例如结构灵活易于扩展,加载数据方便可追溯历史等,当然他引入了这些方案的一些缺点,例如因更细化的拆分而增加的对象,对象多也会存在大量的连表性能问题,而且使用Data Vault模型时对建模人员的要求比较高等。

    上面这段文字可能看起来很虚,让我们来看个例子,在3NF模型中,我们可能存在一些一对多的关系,当存在多对多的关系时,我们便会拆分为多个一对多的关系,在Data Vault模型中,一般会认为所有逻辑关系都是会变的,因为商业就是会变的。看个例子,可能最初我们在做我们的外卖订单的时候一个人可以下很多分订单,但是每个订单只属于同一个人,但是后来随着大家需求的变换,突然发现想两个人一起下一份订单,这样在关系型数据库中我们可能需要对原有的数据结构进行修改,但是Data Vault中所有的关系都是多对多的,因此可以很好地适应商业的变化。

    上面的例子只是Data Vault要解决的问题之一,这里就不展开了,我们可以在实际看Data Vault的构建方式的时候慢慢体会。

How

    前面了解了很多,大部分都是意识层面的内容,作为一个小兵,最关心的就是如何落地实现了,大概的阅读了一些书籍和文章,下面我们来看看怎么来运用这个模型:

    Data Vault 模型中有三种基本的实体(结构):中心表(Hub)、链接表(Link),卫星表(Satellites)。其中Hub表主要用于存储业务主键,主要用于来确定一个业务中心对象,Link是一个业务关系表,用来存储不同Hub之间的联系,卫星表就像是业务或者关系的描述表,用来细节描述一个Hub或者一个Link的属性。

    这里尝试着和3NF硬拉了一下关系,感觉Hub表就是其中实体的主键,Link表就是外键,Satellites表就是非主属性,可能不近完全是这样,但是姑且先类比一下。

    截了一张《Data Architecture: A Primer for the Data Scientist》中Data Vault模型的例子来帮助理解

    说了这么多,可能关于Data Vault模型还是比较抽象,接下来想想如何用一个例子来更具体的看看经过怎么落地Data Vault。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员学习圈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值