利用Data vault对数据仓库建模
简介
国内关于Data Vault的信息很少,所以决定写点什么,纯粹都是自己在这个行业10多年的摸爬滚打。不过为了效率,尽量做到简短,直接上干货。对于各个细节大家有不同的理解欢迎来讨论。
数据仓库建模的方法有哪些。
首先最经典的是数据仓库Inmon基于3NF的方法。这个方法知道概念的人很多,但是实际用的很少,也不建议你去了解更多,因为目前在国内的招聘网站上你会很少找到这个。
其次是Kimball的维度建模方法,这个基本上做过数据仓库的都用过,比如事实表和维度表,基于这种理论也可以构建数据立方体方便分析。其特点是简单快速,适合中小型数据仓库。招聘网站上九成以上关于数据仓库的招聘都会要求这个。
然后是Dan的Data Vault建模方法。这个国内知道的不多。不同于维度方法,它的基本表是LINK,HUB以及SAT表。这个方法论连Inmon都说好,只是圈子实在太小。这个方法论比较适合企业级数据仓库,以及大数据的场景。
为什么要Data Vault
关于DV的各种好处官方站点提了好多,但说得都很marketing。以下是我个人的理解:
- 适合企业级数据仓库。
- 适合大数据项目,是的,在大数据中你怎么去组织数据,直接扔那?还是用维度模型?是不是都不太合适?那你应该考虑Data Vault。
- 比较容易根据元数据系统去自动生成相应的代码。这个在下面我会介绍一些。
谁更爱DV?
这是一个很有意思的问题,同时你也可以看到这个话题在国内是多么冷门。
从我阅读到的文章观察到信息来看,首先是欧洲比较火热,其次是北美,然后是澳洲。
在欧洲,德国人似乎更爱这个话题,在海外网站偶尔能看到德国人写的文章以及在讨论相关的问题,所以,汽车领域会见到的比较多。开源的项目以及商业相关的项目,也大多数都是欧洲的公司。
在国内看到的讨论和文章真的是少之又少,目前我所观察到的是阿里有人在讨论,但是不确定是在哪个部门。
维度模型还是DV?
维度模型和DV的关系,我觉得他俩是不冲突的。在我自己参考别人的方法制定的规范中,核心层用的方法是DV,然后在集市层用到的方法就是维度模型和宽表。
如果你的前端有对应的OLAP Cube工具的话,那么维度模型确实是必要的。
在核心层,相比维度模型,DV就比较容易对各个系统的数据进行整合和关系的管理。
想知道关于Data Vault更多的信息?
首先你可以去都Dan的网站:
对英文多少有点要求,主要是他们的思路和文风有时候真的好飘逸。
其次是Roelant的网站:
里边的干货也很多,当然某些细节对大家的英语也是个挑战。他的博客里有好多细节的实现,其次他也有自己的开源项目可以作为不错的参考。
最后,也可以参考我正在翻译的DV规范:
https://github.com/microsoftbi/DWH-Standard-code-69/blob/master/DV2ModelingSpeci.md
这里面我按照英文-中文对照的方式,根据自己掌握的知识和理解去进行本地化的翻译。
进度很慢,但是如果你想要知道个大概的话那么看我中文翻译出来的部分基本就够了。
结合Data Vault我也自己编写了一个数据仓库的各方面标准:
https://github.com/microsoftbi/DWH-Standard-code-69/wiki/Data-Warehouse-standard--Code-Branch-69
Code name 69,我会不断加入更多项目的实施细节进去。
当然实际项目中会有很多实现的分支,比如对数据的变更处理,有SCD2等很多方法,在我的这个规范里就是insert only。
当然没有一个方法能适用所有场景,这个69规范也不见得就是最专业的,如果你的项目是start from zero的话,那么或许可以拿来做一个参考然后制作出自己的项目规范。
利用Data vault对数据仓库建模的更多相关文章
- 利用Data Vault对数据仓库进行建模(二)
写在前面 本篇先不讨论Data Vault其本身,因为不见得所有人都接受这个.但是里边有一些很不错的东西跟主流的数据仓库方法是有共同点的,所以这里主要讨论这些共同的方法,在笔者看来,无论是Kimbal ...
- Data Vault玩转数据仓库(三)
在Data Vault 2.0版本里,其不只是针对数据仓库的建模,同时也包含了架构,方法论以及实现.这篇挑几个概念,附上我个人对其的理解.同时也把这个系列的名字改成<Data Vault玩转数据 ...
- 数据仓库之Data Vault模型总结
一,Data Vault模型有几个主要的组件,这里先总结一下: 1.Hub组件,是一个数据表,用于记录在业务应用中常用到的业务实体键值,如员工ID,发票号.客户编号.车辆号等. 表内包括几个关键字段: ...
- Data Vault 简介
Data Vault 简介 Data Vault 2.0 不仅是建模技术,也提供了一整套数据仓库项目的方法论.它能提供一套非常可行的方案来满足数据仓库项目中对于历史轨迹和审核两个方面的需求. 多年来, ...
- 大数据之路week07--day05 (一个基于Hadoop的数据仓库建模工具之一 HIve)
什么是Hive? 我来一个短而精悍的总结(面试常问) 1:hive是基于hadoop的数据仓库建模工具之一(后面还有TEZ,Spark). 2:hive可以使用类sql方言,对存储在hdfs上的数据进 ...
- 场景4 Data Warehouse Management 数据仓库
场景4 Data Warehouse Management 数据仓库 parallel 4 100% —> 必须获得指定的4个并行度,如果获得的进程个数小于设置的并行度个数,则操作失败 para ...
- 《BI那点儿事》数据仓库建模:星型模式、雪片模式
数据仓库建模 — 星型模式Example of Star Schema 数据仓库建模 — 雪片模式Example of Snowflake Schema 节省存储空间 一定程度上的范式 星形 vs.雪 ...
- Cross-Domain Security For Data Vault
Cross-domain security for data vault is described. At least one database is accessible from a plural ...
- 数据仓库建模与ETL实践技巧
数据分析系统的总体架构分为四个部分 —— 源系统.数据仓库.多维数据库.客户端(图一:pic1.bmp) 其中,数据仓库(DW)起到了数据大集中的作用.通过数据抽取,把数据从源系统源源不断地抽取出来, ...
随机推荐
- ubuntu无法安装vim、tree等解决办法
rm /etc/apt/sources.list.d/* 删除该目录下所有文件
- js语法基础入门(6)
6.函数 6.1.函数是什么? 函数就是具有名称和一定功能点代码块,这段代码块被封装起来,由一组语句组成,它们是JavaScript的基础模块单元,用于代码复用.信息隐藏和组合调用.一般来说,所谓编程 ...
- 一.3.序列化使用之idc资源与api文档
前后端分离,前端写前端的,后端写后端的,但是它们中间得有一个api文档 1.idc资源 (1)models.py: from django.db import models class Idc(mod ...
- 这样基于Netty重构RPC框架你不可能知道
原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 今天是猿灯塔“365天原创计划”第5天. 今天呢!灯塔君跟大家讲: 基于Netty重构RPC框架 一.CyclicBarrier方法说明 1. ...
- css引入的方式有哪些_四种css的引入方式与特点
在网页中css主要负责html文档的样式显示,目前css主要有4种引入方式:行内式.内嵌式.导入式.链接式. 1.行内式 行内式也叫内联样式,是指标记的style属性中设定CSS样式,这种方式没有体现 ...
- css div如何隐藏?
在我们平时布局网站的时候,想要把div进行隐藏,但是很多人不知道css控制div显示隐藏?下面我们来讲解一下css如何让div隐藏. 1.使用display:none来隐藏div 我们可以使用disp ...
- 「从零单排canal 04」 启动模块deployer源码解析
基于1.1.5-alpha版本,具体源码笔记可以参考我的github:https://github.com/saigu/JavaKnowledgeGraph/tree/master/code_read ...
- Python-用xlrd模块读取excel,数字都是浮点型,日期格式是数字的解决办法
excel文件内容: 读取excel: # coding=utf-8 import xlrd import sys reload(sys) sys.setdefaultencoding('utf-8' ...
- 三种存储方式DAS、NAS、SAN
------------恢复内容开始------------ 一.DAS.NAS.SAN在存储领域的位置 随着主机.磁盘.网络等技术的发展,数据存储的方式和架构也在一直不停改变,本文主要介绍目前主流的 ...
- scala 数据结构(二):数组
1 数组-定长数组(声明泛型) 第一种方式定义数组 这里的数组等同于Java中的数组,中括号的类型就是数组的类型 val arr1 = new Array[Int](10) //赋值,集合元素采用小括 ...