Hadoop 之上的数据建模 - Data Vault 2.0

2023-11-18

对比传统的基于 RDBMS 之上的数据仓库和商业智能项目,尝试着说说,Hadoop 之上的数据仓库,从ETL, 数据存储,到分析展现。重点围绕数据建模方面做分析,因为这是本文的重点,介绍一份新的数据建模方式 Data Vault 2.0.

ETL 最基本的构建来自于 转换和工作流。

工作流,作用是规划一条完整的数据转换流。

转换,是 ETL 最中心的组件。可以用 MapReduce 来完成,也可以用 Spark, Hive .而使用 Spark, Hive 的益处,是在于 Spark, Hive 能将 MapReduce 封装起来。MapReduce 可以由多种语言编写,Java, Python, C++等。为了完成数据转换,而对每一次的转换计算都去用高级语言编程,成本过高。因此用 Spark, Hive 集成的函数和 HQL 语法,完成一些数据转换操作,针对传统基于 RDBMS 转醒过来的开发人员,学习成本会降低很多。

假设我们的电商系统后台是用 MySQL, 体量已经达到 10 TB。

用Sqoop 将这 10TB 同步到 Hive, 报表分析专家在分析的时候,就可以利用分布式计算优势了。简单的事务性事实表,通过传统的 ETL 工具抽取完成之后,直接再由 Sqoop 转入到 Hive.而复杂的二次聚合事实表,可以先由 Sqoop 转入 Hive, 再由 Hive 聚合生成事实表,导入 MySQL 做分布式存储或者报表源头。

hadoop 作为数据仓库,不再仅仅是分布式存储,还可以应用生态工具,Spark,Kylin 做计算。将最终的结果或传回传统的 RDBMS, 或存储到 Hive 这类分布式存储库里。

除了 Kim ball 的维度建模理论, Data Vault 也是数据仓库建模的一种方法。

Data Vault 简单实例,建模思想以及优点劣势,如下所述:

《Hadoop 构建数据仓库实践》中对 Data Vault 做了一些介绍。

从关系表转换成 Data Vault 模型,是对 中心实体,关系产生和消亡,实体及其关系属性的建模。

中心表 - Hubs:

实体,中心表的建模。每个实体都应该单独作为一个中心表的一个记录存在。

中心表,记录实体的代理键和主键,创建时间与创建源。

链接表 - Links:

链接两个实体的关系表。中心表是一个个独立的代表实体的表,没有父子关系存在,没有关联关系存在。因此作为审核两个实体关系的鉴证,链接表必须存储中心表的代理键,关系生效时间,消亡时间。

附属表 - Satellites:

中心表,链接表记录的都是一些维度主体信息,而更细粒度的维度属性信息,事实特征信息则由附属表记录。

让我们看看维基百科上,对 Data Vault 的解释:

https://en.wikipedia.org/wiki/Data_vault_modeling

Focused on the business process, the Data Vault as a data integration architecture, has robust standards and definitional methods which unite information in order to make sense if it. The Data Vault model is comprised of three basic table types:

HUB (blue): containing a list of unique business keys having its own surrogate key. Metadata describing the origin of the business key, or record ‘source’ is also stored to track where and when the data originated.

LNK (red): establishing relationships between business keys (typically hubs, but links can link to other links); essentially describing a many-to-many relationship. Links are often used to deal with changes in data granularity reducing the impact of adding a new business key to a linked Hub.

SAT (yellow): holding descriptive attributes that can change over time (similar to a Kimball Type II slowly changing dimension). Where Hubs and Links form the structure of the data model, Satellites contain temporal and descriptive attributes including metadata linking them to their parent Hub or Link tables. Metadata attributes within a Satellite table containing a date the record became valid and a date it expired provide powerful historical capabilities enabling queries that can go ‘back-in-time’.

重点来了,那么为什么我们需要 Data Vault 建模呢?

参考这篇文来做解释:

https://www.talend.com/blog/2015/03/27/what-is-the-data-vault-and-why-do-we-need-it

There are several key advantages to the Data Vault approach:

  • Simplifies the data ingestion process

  • Removes the cleansing requirement of a Star Schema

  • Instantly provides auditability for HIPPA and other regulations

  • Puts the focus on the real problem instead of programming around it

  • Easily allows for the addition of new data sources without disruption to existing schema

Simply put, the Data Vault is both a data modeling technique and methodology which accommodates historical data, auditing, and tracking of data.

“The Data Vault is the optimal choice for modeling the EDW in the DW 2.0 framework”

Bill Inmon

文中提出的在 big data 中遇见的现实问题

problem #1 : The one constant is change, so how well can an EDW/BI solution adapt?

当常规的应用场景变化之后,EDW/BI 还能无更改适用吗?

我在这里强调无更改适用,是和需求变更区分开来。

需求变化了,底层结构不可能不变化,变化多大是需要衡量的。

每一次需求变化,底层结构都要彻底重构,那么成本是极高的。

所以在需求更替的情况下,底层结构如果能做到尽可能小的变更,这个问题就解决了。

每个行业都会有自己的业务模型,针对这些业务模型,专家们可以做出最佳实践来设计数据结构。

一方面,最佳实践来自于专家的经验,经验有来自于时间与案例。

如果这些专家的最佳实践并没有被公开,没有被推广,那么年轻一代依旧是无法掌握的。

年轻的工程师依然需要去走一遭前人趟过的坑,才能转化为自己的见识。

另一方面,业务是不断变化的,昨天的最佳实践,用到今天可能不会有太多效率的提高。比如一直遵循的范式设计,在 OLTP 阶段还能管用,但是在 OLAP 阶段就不适合了。分析场景如果用范式设计,效率差的不是一个级别,有可能就是跑不出来数据。

在前人的基础上,加上自己的一点领悟,与时俱进进行改造,才是正确的做事方法。

problem #2: Really Big Data, often characterized as :Volume, Velocity, Variety, Variability, Veracity, Visualization, & Value!

在商业应用领域,各种分析需要用到很多数据。捕获,清晰,转换,分析报告等各种技术是通过培训可以理解和掌握的。这些无形的应用技术与分析手段可以成为公司竞争的有力条件。随着社交,医疗,互联网金融的发展,数据的应用越来越多,数据的格式也越来越多样化。大数据行业带来的是传统数据应用技术无法交付的挑战。数据应用技术究竟在大数据时代该怎么规范,怎么适应潮流发展,是不是还有传统数据应用的规律可循?都等着去发现。

problem #3: Complexity

基于大数据的 ETL, Data Modeling, Reporting 都会变得比以往复杂。

仅仅是 ETL, 就涉及到了传统数据库与 NoSQL, Hadoop, Hive 的交互。这些交互使用的工具与编程语言是有很多选择性的。比如可以用使用 Java 编写 MapReduce, Sqoop 连接 RDBMS 和 Hadoop, 还可以应用 Talend, Kettle 等 ETL 工具。报表分析工具随着分析需求的变化,又变得多样化。传统的报表工具, BO, SSRS 可能已经不能满足需求,起码这部分工具是直连 RDBMS 而不能直连到 HDFS. 可视化的要求,可能涉及到自定义图像需求,比如聚合,分类,图连接,都需要借助 d3.js, Echarts 等的 Javascript 编程实现。Python, R 等用来分析机器学习结果,也都开发了自己的库。

problem #4: The Business Domain:

业务分析需求多样化。

人工智能与机器学习当下火热的两个领域,分析需求是多样化而且多变性的。

每个学习模型需要的数据格式,可能都需要大量随时可灵活变化。而机器学习专家们是不会去做数据收集这么繁琐的工作,理解他们的需求就变的更有成本。往往给非所需,词不达意。这是更需要数据模型的灵活性建模,在每个需求变化了之后,原先模型都能快速转变为可用的数据原型,供数据科学家使用。

problem #5: Flexibility

综合前面四点,我们要做的就是弹性化的设计方案,ETL ,Data Modeling ,分析与报表都要弹性化。需求随时有变化,上游数据结构也会随时变化以适应需求的更改,因此作为数据应用下游的数据仓库,在设计方面需要考虑到灵活性与可扩展性。而整个数据仓库设计的中心,就是数据建模。一来数据模型是 ETL 的目标结构,可以说 ETL 的设计就是基于数据模型而开展的;二来数据模型是数据分析的基石,决定了报表逻辑以及机器学习等数据挖掘工具的数据输入格式。

以及 Data Vault 对这几个现实问题的解决方案

problem #1 : The one constant is change, so how well can an EDW/BI solution adapt?

我们将实体分为三种存在形式:一是实体的 key 值,二是实体的属性值, 三是实体的 relationship(关系)。Data Vault 2.0 将这些都分开存储,解决了耦合的复杂度,变得更加灵活与可扩展,也就是弹性化程度更高了。

key, relationship都是固定的几列值,相对稳定。

实体的属性值是可以随时变化的,而这种变化反映在Data Vault 2.0 模型上,就是增加几个列。

所以可扩展性非常高。

problem #2: big data

传统的 BI 工具,在ETL 方向上是需要做脏数据处理的,比如删掉一些不符合逻辑的数据。而 Data Vault 2.0 是基于客观事实做的数据增量抽取,不做逻辑校验,因此可以大规模的抽取和处理数据,更符合大数据特征。

problem #3: Complexity:

传统的 BI 工具,建模会有很多的可变性,比如 SCD(Slowly Change Dimension), Fact 表的多变性。而 Data Vault 2.0 就只有 Hub, Link, SAT(Satellite), Link-Satellite 表。区分清楚这些表,剩下的重点就只有设计和调度 ETL了。在建模这一步反而更简单了。

problem #4: The business Domain:

我们不应该把 Data Vault 当做处理脏数据的地方,他仅仅是反映了上游系统数据的真实性,无论是正确还是逻辑错误的数据,都应该在 Data Vault 数据仓库里面反映出来。基于Data Vault 2.0 模型,很快就可以生成业务分析需要的数据模型。这才是需要处理验证逻辑的地方。

problem #5: The Flexibility

Data Vault 2.0 是联合了 Six Sigma, TQM, SDLC 制定的符合 SEI/CMMI Level 5的标准。有着更短的发布周期,一般2-3周即可发布。因此更快更方便的更替业务需求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hadoop 之上的数据建模 - Data Vault 2.0 的相关文章

随机推荐

  • hsql获取数组中最后一个值的写法

    一 问题抛出 在数据分析中我们有时候会遇到需要取出数组中最后一个值的方法 1 表xxx数据如下图所示 2 现在需要取出字符串最后的 321 和 987 二 方案探讨 1 反转字符串后 使用切割函数切割获取第一个值 然后再反转一下 代码如下
  • Spring Boot starter 启动流程(无废话版)

    如果无产阶级不能发出自己的声音 他们就会被社会遗忘 一 pom xml文件 1 父依赖 其中它主要是依赖一个父项目 主要是管理项目的资源过滤及插件
  • Superset整合keycloak系统

    本篇主要介绍superset如何整合单点登陆系统keycloak 现在网上的博客大部分都是失效了 这里我相当于更新一下 避免大家再走弯路 一 环境配置 Macos keycloak 18 0 0 superset 2 1 0 keycloa
  • PMSM学习笔记1——永磁同步电机的工作原理与数学模型

    文章目录 一 PMSM工作原理 1 同步电机工作原理 来源 电机学 李发海 2 永磁同步电机数学模型及坐标变换 来源 现代电机控制技术 王成元 2 1旋转磁场 2 2三相PMSM的基本数学模型 2 3三相PMSM的坐标变换 2 3 1 Cl
  • 【Unity 3D】学习笔记 - 粒子系统制作

    这次的任务是制作一个简单的粒子系统 并用代码控制使之在不同的场景下呈现出不同的效果 我想要制作出颜色渐变的烟花效果 关于粒子系统 可以参考 Unity 3D 学习笔记 粒子系统初探 粒子系统基本设置如下 其中Simulation Rotat
  • 学生用计算机怎么恢复出厂设置,电脑怎么恢复出厂设置

    关机或重启时 按住电脑键盘的 Del 键进入BIOS 使用Enter回车键选中 Load Optimized Defaults 选项 使用方向键选中 Y 确认 点击 Save Exit Step 或者按 F10 退出即可 以下是详细介绍 电
  • Go语言实现Onvif客户端:2、获取设备信息

    Go语言实现Onvif客户端 2 获取设备信息 文章目录 Go语言实现Onvif客户端 2 获取设备信息 1 思路 2 代码 1 思路 搜索设备 获取设备能力 通过设备能力的设备接口读取设备信息 我们上节说了 主要是通过设备信息中的内容来区
  • 线性代数 【基础1】

    文章目录 行列式 方阵的行列式公式 矩阵 矩阵的逆 矩阵的秩 伴随矩阵 初等变换与初等矩阵 分块矩阵 向量 正交矩阵 正交化 线性表示 线性无关与线性相关 极大无关组与向量组的秩 线性方程组 解的性质与判定 齐次线性方程组 非齐次线性方程组
  • 大型网站在架构上应当考虑哪些问题?

    分层 分层是处理任何复杂系统最常见的手段之一 将系统横向切分成若干个层面 每个层面只承担单一的职责 然后通过下层为上层提供的基础设施和服务以及上层对下层的调用来形成一个完整的复杂的系统 计算机网络的开放系统互联参考模型 OSI RM 和In
  • Java8 CompletableFuture处理多个异步任务

    CompletableFuture Java5引入了Future和 FutureTask 用于异步处理 Future可以通过get 方法获取异步的返回值 在Java8引入了CompletableFuture CompletableFutur
  • 设置GPU及显存大小

    20210128 引言 之前搜索过设置GPU和显存大小的方式 但是升级了新的版本的keras以及tensorflow 导致之前的代码失效了 这里记录一下 本质上 就是版本更换的原因 很多api可能被取消 或者改了别的 原始代码 import
  • 计算机网络ip尽最大努力交付,计算机网络知识(IP、TCP、UDP)--持续更新

    互联网的两个重要的基本特点 连通性和共享 计算机网络由若干结点和连接这些结点的链路组成 互联网的组成 边缘部分 核心部分 网络边缘的端系统之间的通信可分为两大类 客户 服务器方式 C S方式 和对等方式 P2P方式 互联网的核心部分 许多网
  • 原始传奇手游服务器不显示,原始传奇手游为什么进不去 无法登录游戏解决方法...

    近日有一款由古力娜扎代言的手游 原始传奇 上线了 不少玩家也很想体验一番 可是却发现原始传奇手游进不去 不知道是为什么 下面悠小悠就为大家详细介绍下无法登录游戏的原因和解决方法 一起探讨下吧 原始传奇手游进不去原因及解决方法 1 如果是登录
  • tomcat没有日志输出--解决办法

    程序没有问题 只是控制台信息卡 感觉像程序休眠了一样 然后在控制台点backspace或是enter 程序恢复正常 控制台日志正常输出 静态文件访问可以 解决办法 转载于 https blog 51cto com 13693838 2398
  • BIND9的架构与机制笔记1

    BIND9采用的是事件驱动的机制来工作 而事件的源头则是IO IO在linux使用的EPOLL的边缘触发模式 本篇说的是epoll BIND9如果创建了watcher线程 宏USE WATCHER THREAD控制 这里就讨论有线程的情况
  • Redis第五讲 Redis内存淘汰策略之LRU与LFU算法详细介绍

    前面介绍了Redis的一些内存淘汰策略 一般比较常用的两种淘汰策略为LRU LFU 而且他们的算法考察的也比较多 LRU 最近最久未使用 标准LRU算法是这样的 它把数据存放在链表中按照 最近访问 的顺序排列 当某个key被访问时就将此ke
  • 机器学习——无监督学习

    机器学习的分类 一般分为下面几种类别 监督学习 supervised Learning 无监督学习 Unsupervised Learning 强化学习 Reinforcement Learning 增强学习 半监督学习 Semi supe
  • Vue 中实现 excel文件上传功能

    Duang 最近搭建了一个自己的博客小破站 欢迎各位小伙伴来访吖 ares coder blog portalhttps www ares stack cn blog service game 场景 上传excel表 并将excel表中的数
  • Django实现前后端分离开发

    前后端分离开发 在传统的Web应用开发中 大多数的程序员会将浏览器作为前后端的分界线 将浏览器中为用户进行页面展示的部分称之为前端 而将运行在服务器 为前端提供业务逻辑和数据准备的所有代码统称为后端 所谓前后端分离的开发 就是前后端工程师约
  • Hadoop 之上的数据建模 - Data Vault 2.0

    对比传统的基于 RDBMS 之上的数据仓库和商业智能项目 尝试着说说 Hadoop 之上的数据仓库 从ETL 数据存储 到分析展现 重点围绕数据建模方面做分析 因为这是本文的重点 介绍一份新的数据建模方式 Data Vault 2 0 ET