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 简介的更多相关文章

  1. 利用Data vault对数据仓库建模

    简介 国内关于Data Vault的信息很少,所以决定写点什么,纯粹都是自己在这个行业10多年的摸爬滚打.不过为了效率,尽量做到简短,直接上干货.对于各个细节大家有不同的理解欢迎来讨论. 数据仓库建模 ...

  2. 数据仓库之Data Vault模型总结

    一,Data Vault模型有几个主要的组件,这里先总结一下: 1.Hub组件,是一个数据表,用于记录在业务应用中常用到的业务实体键值,如员工ID,发票号.客户编号.车辆号等. 表内包括几个关键字段: ...

  3. Cross-Domain Security For Data Vault

    Cross-domain security for data vault is described. At least one database is accessible from a plural ...

  4. Spring Boot 之Spring data JPA简介

    文章目录 添加依赖 添加entity bean 创建 Dao Spring Data Configuration 测试 Spring Boot 之Spring data JPA简介 JPA的全称是Ja ...

  5. 利用Data Vault对数据仓库进行建模(二)

    写在前面 本篇先不讨论Data Vault其本身,因为不见得所有人都接受这个.但是里边有一些很不错的东西跟主流的数据仓库方法是有共同点的,所以这里主要讨论这些共同的方法,在笔者看来,无论是Kimbal ...

  6. Data Vault玩转数据仓库(三)

    在Data Vault 2.0版本里,其不只是针对数据仓库的建模,同时也包含了架构,方法论以及实现.这篇挑几个概念,附上我个人对其的理解.同时也把这个系列的名字改成<Data Vault玩转数据 ...

  7. Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解

    一.概念简介: Redis: Redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写,详细的信息在Redis官网上面有,因为我自己通过google等各种渠道去学习Redis, ...

  8. 【VMware vSphere】vSphere Data Protection简介

    [前言] 还记得一月份左右的时候,万达这边的服务器突然宕机,导致所有的项目不得不停止不说,还损失掉了很多宝贵的数据.为了防止这种情况再次发生,所以近期研究了vSphere Data Protectio ...

  9. Sentry 监控 - Snuba 数据中台架构(Data Model 简介)

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

随机推荐

  1. PAT甲级——1041 Be Unique

    1041 Be Unique Being unique is so important to people on Mars that even their lottery is designed in ...

  2. 用logstash 作数据的聚合统计

    用logstash 作数据的聚合统计 以spark-streaming 处理消费数据,统计日志经spark sql存储在mysql中 日志写入方式为append val wordsDataFrame ...

  3. VS制作dll、def文件的使用、dll加入工程使用

    1.VS新建工程,在选项的时候,选择dll和空项目,保持干净的dll库: 创建完以后,添加头文件以及源文件. 2.将外部模块使用的接口导出: (1)函数导出: __declspec(dllexport ...

  4. 实战_3:新建产品配置(product)并导出项目

    产品配置Product 产品配置用于定义和管理RCP应用的多个方面特征.并支持将RCP项目导出为部署包(类似eclipse压缩包),可以直接部署到其他环境上使用. 产品配置必须新建一个 扩展名为 .p ...

  5. 算法之匹配:KMP

    public static int getIndexOf(String str1, String str2) { if (str1 == null || str2 == null || str1.le ...

  6. COMET探索系列三【异步通知服务器关闭数据连接实现思路】

    在小编络络 COMET实践笔记一文中注意事项中有这么一段话 使用长连接时, 存在一个很常见的场景:客户端需要关闭页 面,而服务器端还处在读取数据的阻塞状态,客户端需要及时通知服务器端关闭数据连接.服务 ...

  7. CentOS 5.5 --学习(1)

    一.解决浏览器乱码问题: 用yum 安装 yum  -y  install  fonts-chinese yum  -y  install  fonts-ISO8859-2-75dpiCentOS系统 ...

  8. 基于ci框架 修改出来了一个带农历的万年历。

    1这里没有写model:代码一看就懂,没什么负杂地方,就是麻烦一点. 直接control模块的代码: <?php if ( ! defined('BASEPATH')) exit('No dir ...

  9. 吴裕雄--天生自然Android开发学习:1.2.1 使用Eclipse + ADT + SDK开发Android APP

    1.前言 这里我们有两条路可以选,直接使用封装好的用于开发Android的ADT Bundle,或者自己进行配置 因为谷歌已经放弃了ADT的更新,官网上也取消的下载链接,这里提供谷歌放弃更新前最新版本 ...

  10. JavaScript学习总结(五)原型和原型链详解

    转自:http://segmentfault.com/a/1190000000662547 私有变量和函数 在函数内部定义的变量和函数,如果不对外提供接口,外部是无法访问到的,也就是该函数的私有的变量 ...