Data Vault 简介
Data Vault 简介
Data Vault 2.0 不仅是建模技术,也提供了一整套数据仓库项目的方法论。它能提供一套非常可行的方案来满足数据仓库项目中对于历史轨迹和审核两个方面的需求。
多年来,商业智能(BI)项目一直并将继续在瀑布模型下运行。它是由每个阶段的长时间延伸的序列定义的,该序列需要一份详尽的前期需求列表、一个完整的数据模型设计,然后将所有硬业务规则和软业务规则编入ETL流程。可视化层是按顺序构建的,并从最初的开始日期算起,在几个月甚至几年之后提交给最终用户。
我们经常看到团队采用“缩小范围”的瀑布模式,目的是将大型BI计划分解成较小的项目。虽然有助于降低整体的复杂性,但是这种方法在应用于BI时仍然有很大的风险,因为有两个主要的问题:
- 业务需求的变化速度远快于BI研发的交付能力;
- 预算不愿意花在没有短期利益的长期项目.
以上两个原因就是为什么我们设计模式从瀑布转向可迭代敏捷模式,这种模式提供了一些方法来解决问题。但是在数据分析领域,敏捷本身并不能解决我们在更详细的数据仓库或BI项目级别上遇到的重大挑战。这些包括:
- 迭代数据建模
- 减少重构
- 设计ETL或ELT流程,使其能够快速响应业务逻辑的变化或新增数据
- 收集设计决策的输入数据相关的业务需求
为了应对这些问题,Data Vault 2.0应运而生,它定义了一种方法,该方法侧重于从敏捷实践中获得最大收益,并使用其他已被证明有效的规程和技术,看起来是迄今为止最迭代的BI方法
什么是Data Vault
Data Vault (DV)将敏捷、BEAM需求收集、CMMI、TQM、六西格玛和DV建模等方面结合在一起,以定义一种旨在提高BI项目速度和质量的方法。因为它既能提高适应性,又能提高准确性。
DV还包括关于DW项目评估和敏捷任务分级的敏捷方法,以确复杂性或跨DW所涉及的工作。在较低的层次上,它还提供了一种非常简洁和迭代的方法来处理常见的功能需求。这些包括全面的、可重复的、渐进的、基于敏捷的流程,以完成日常的任务。这些任务包括(但不限于)在ETL和建模阶段增加数据属性、切片、新增加数据源、扩大源、历史跟踪、弃用源和源结构更改。
简单地说,DV模型是一个存在于常规维度建模(OLAP、星型模式)和分段之间的层,它根据不断增长的业务需求提供伸缩性,并分解建模和ETL的复杂性。它由中心(业务实体)、链接(关系)和卫星(描述性属性)组成,它们在3NF和星型模式之间建模。该模型被放置在数据仓库的数据集成层(通常称为原始数据库)中,并与Kimball的模型有效地结合使用。
Data Vault 2.0 优点
下面概述了Data Vault 2.0方法的一些主要优点:
- 它假设了数据建模关系的最坏情况。业务对象之间的N:M关系,以消除在将1:M变为M:M时需要更新的情况。因此,当关系的程度发生变化时,几乎不需要再做额外工作。
- 它是为历史跟踪数据而设计的,所有的关系和属性,以及数据在一段时间内的来源都可以被追溯记录。
- 提出了一套设计原则和结构,在数仓中增加历史跟踪性能(坑和桥梁)。数据仓库模型足够灵活,可以在迭代建模过程中的任何时间点采用这些结构,并且不需要进行前瞻规划设计。
- 在逻辑上分隔包含原始数据和修改数据的空间。原始数据仓库是源系统可审计的数据的基础,并且业务仓库为需要访问数据集市下一级数据的高级用户提供了一个查询空间。
- 将软业务规则和硬业务规则分离到数据集成的不同部分。这加强了跨多个终端使用的数据的可重用性。例如,原始数据只在数据仓库中获得一次(较少重新集成到分段中),可以多次提供给下游需求。
- 对于每个敏捷迭代,存储所有数据历史轨迹的数据仓库模型很容易扩展,而不必担心丢失历史数据。此外,历史轨迹是独立于维度模型存储的。
- Data Vault 2.0提倡业务键使用hash key实现,以减少lookups,从而增加加载并行度。这导致较少的顺序加载依赖性
- 原始数据仓库(ods)被设计为完全可审计的.
- 在数据仓库中作为一个整体,从Staging到星型架构和OLAP的处理变得更加平滑和迭代。
- 它提供了一种全面的方法,将来自异构数据源带有多个不同业务键的数据组合在一起(跨多个源系统在仓库内集成数据)。业务键并不总是1:1或格式相同。
- “及时”建模的心态与敏捷方法非常匹配.
缺点
虽然DV优点很多,但是其缺点也不少, 比如:
- DV 其实就是在数据集市或者星型结构层和临时存储层之间的一层。在ETL开发和建模方面,开发这个层会带来一些额外的开销。如果项目是小规模的,或者项目的生命周期很短,那么就不值得采用数据库模型
- 使用Data Vault背后的主要驱动因素之一是出于审计和历史轨迹的目的。如果这些都不重要,那么将另一层引入到建模中所需要的开销就会变得得不偿失。然而,从长期的需求来看,这可能是一项值得的前期投资。
- DV代表了对关系、业务键和属性的分解方法,因此与非规范化结构(如星型模式)相比,创建的表的数量更多。但是,考虑到Data Vault是对星型模式的补充,所以多也只是相对的。由于这个原因,需要许多 joins 来查看DV中的数据
- 缺少大规模实际应用案例.
- 这种建模方法,一般来说,对于那些使用Kimball和Inmon的模型的人来说是不太常规和方便的。
何时使用DV?
有几个关键变量才是判断的标准。比如,
l 我们认为DV建模是满足数据仓库项目需求的一种非常可行的方法,其中历史轨迹跟踪和审核是两个重要的因素。
l 此外,如果跨业务实体的关系在数据仓库中不断发展(例如1:M到M:M),那么data Vault将简化这些关系的捕获,并更关注于交付真正的价值。
l 如果计划在仓库中存储PII数据,并受GDPR、HIPPA或其他法规的约束,data Vault将帮助进行数据审计和可追溯性
权衡DV的利弊,找到更好的适用于自身情况的建模方法才是最佳方案。
Data Vault 简介的更多相关文章
- 利用Data vault对数据仓库建模
简介 国内关于Data Vault的信息很少,所以决定写点什么,纯粹都是自己在这个行业10多年的摸爬滚打.不过为了效率,尽量做到简短,直接上干货.对于各个细节大家有不同的理解欢迎来讨论. 数据仓库建模 ...
- 数据仓库之Data Vault模型总结
一,Data Vault模型有几个主要的组件,这里先总结一下: 1.Hub组件,是一个数据表,用于记录在业务应用中常用到的业务实体键值,如员工ID,发票号.客户编号.车辆号等. 表内包括几个关键字段: ...
- Cross-Domain Security For Data Vault
Cross-domain security for data vault is described. At least one database is accessible from a plural ...
- Spring Boot 之Spring data JPA简介
文章目录 添加依赖 添加entity bean 创建 Dao Spring Data Configuration 测试 Spring Boot 之Spring data JPA简介 JPA的全称是Ja ...
- 利用Data Vault对数据仓库进行建模(二)
写在前面 本篇先不讨论Data Vault其本身,因为不见得所有人都接受这个.但是里边有一些很不错的东西跟主流的数据仓库方法是有共同点的,所以这里主要讨论这些共同的方法,在笔者看来,无论是Kimbal ...
- Data Vault玩转数据仓库(三)
在Data Vault 2.0版本里,其不只是针对数据仓库的建模,同时也包含了架构,方法论以及实现.这篇挑几个概念,附上我个人对其的理解.同时也把这个系列的名字改成<Data Vault玩转数据 ...
- Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解
一.概念简介: Redis: Redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写,详细的信息在Redis官网上面有,因为我自己通过google等各种渠道去学习Redis, ...
- 【VMware vSphere】vSphere Data Protection简介
[前言] 还记得一月份左右的时候,万达这边的服务器突然宕机,导致所有的项目不得不停止不说,还损失掉了很多宝贵的数据.为了防止这种情况再次发生,所以近期研究了vSphere Data Protectio ...
- Sentry 监控 - Snuba 数据中台架构(Data Model 简介)
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
随机推荐
- 关于使用MyEclipse自动生成Hibernate和Struts出现的jar不兼容的问题(antlr.collections.AST.getLine()I)
今天做Hibernate和Struts2结合的练习,使用MyEclipse自动创建Hibernate和Struts的相关配置文件和jar包,写完一个查询方法后,准备测试一下结果,简单的查询那种,很诡异 ...
- python面向对象类的约束和设计的统一化规范
.封装 定义:将一些东西内容封存到一个地方,你还可以再取出, 类设置静态属性,设置一些方法 对象可以在其对象空间中封装一些属性 2.多态 定义:一个事物的多种形态 就想a可以是一个字符串,可以是一个列 ...
- python3下scrapy爬虫(第十卷:scrapy数据存储进mysql)
上一卷中我将爬取的数据文件直接写入文本文件中,现在我将数据存储到mysql中,我依然用的是pymysql,这个很麻烦建表需要在外面建 这次代码只需要改变pipyline就行 来 现在看下结果: 对比发 ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-setup(4)
unittest封装测试类,setup对每个用例都要执行的函数进行初始化[初始化是自己的叫法] import unittest from day_20200208_mooc.base.interfac ...
- derby数据库的了解及使用
derby数据库 一.简介 Derby 易于管理.当嵌入到客户机应用程序中时, Derby 系统不需要任何管理干预. Derby 是可嵌入的.应用程序可以将数据库管理系统( Database Mana ...
- 基于Docker 部署Jmeter + Grafana + InfluxDB 性能测试监控配置(亲测可用)
工具介绍: InfluxDB:是一款用Go语言编写的开源分布式时序.事件和指标数据库,无需外部依赖.该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, lo ...
- 吴裕雄--天生自然python学习笔记:Python CGI编程
什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户 ...
- win7图片只显示图标不显示预览图解决方案
问题描述: win7上图片只显示图标,不显示缩略图:不管是调节小图.中图还是大图或者其他均不显示:而且这种情况下使用截图工具截下来的图片都不自动带上扩展名:情况如下图: 解决方案: 打开计算机-> ...
- 使用face_recognition进行人脸特征检测
效果图调用face_recognition.face_landmarks()方法即可得到人脸特征点, 返回一个字典, 下图是返回的数据, 包括chin(下巴), left_eye(左眼)等.我画了两种 ...
- Rails (栈)
题目链接:https://vjudge.net/problem/UVA-514 题目大意: 有A,B,C三个火车停靠点,火车最初停在A站,给你一个序列,问你能不能通过中转站C到达B站,火车从A站进入到 ...