不止是只有维度建模,数据仓库还有Data Vault建模

引言

在数据仓库设计中,传统的星型和雪花型模型有着各自的优势和劣势。随着数据量的增大和数据源的多样化,Data Vault(数据仓库)建模方法逐渐受到关注和应用。Data Vault建模是一种灵活、可扩展、适应性强的建模方法,特别适用于复杂和动态的数据环境。本文将介绍Data Vault建模的基本概念、组成部分以及如何在实际项目中应用,并附带详细示例。

目录

    • 引言
    • Data Vault建模概述
      • Hub(中心表)
      • Link(链接表)
      • Satellite(卫星表)
    • 实践中的Data Vault建模
      • 步骤一:定义Hub表
      • 步骤二:定义Link表
      • 步骤三:定义Satellite表
    • 总结

Data Vault建模概述

Data Vault由丹·林斯塔德(Dan Linstedt)在1990年代后期提出,是一种适应大规模数据整合的建模方法。它的主要特点包括:
image.png

  • 高扩展性:适应快速增长的数据量和多变的数据源。
  • 高灵活性:易于应对业务规则和数据源的变化。
  • 历史数据保留:完整记录数据变化历史。

Data Vault模型由三类主要实体组成:

  1. Hub(中心表):存储业务主键及其唯一标识符。
  2. Link(链接表):存储不同Hub之间的关系。
  3. Satellite(卫星表):存储Hub或Link的属性和时间戳信息。

Hub(中心表)

Hub是Data Vault模型的核心,用于存储业务实体的唯一标识符。每个Hub表对应一个业务实体,表中的每一行代表一个业务主键。Hub表的结构相对简单,通常包含以下字段:

  • 业务主键(Business Key)
  • 哈希键(Hash Key):用来唯一标识业务主键
  • 加载时间戳(Load Timestamp)
  • 记录源(Record Source):记录数据来源
    image.png

示例:

CREATE TABLE Hub_Customer (Customer_HashKey CHAR(32) PRIMARY KEY,Customer_BusinessKey VARCHAR(255),Load_Timestamp TIMESTAMP,Record_Source VARCHAR(50)
);

Link(链接表)

Link用于定义Hub之间的关系。每个Link表对应一种业务关系,表中的每一行代表一个关系实例。Link表的字段通常包括:

  • 哈希键(Hash Key):唯一标识Link
  • 外键(Foreign Key):指向相关的Hub
  • 加载时间戳(Load Timestamp)
  • 记录源(Record Source)
    image.png

示例:

CREATE TABLE Link_CustomerOrder (CustomerOrder_HashKey CHAR(32) PRIMARY KEY,Customer_HashKey CHAR(32),Order_HashKey CHAR(32),Load_Timestamp TIMESTAMP,Record_Source VARCHAR(50)
);

Satellite(卫星表)

Satellite用于存储Hub或Link的属性及其变化历史。每个Satellite表与一个Hub或Link相关联,表中的每一行代表一个属性快照。Satellite表的字段通常包括:

  • 哈希键(Hash Key):对应的Hub或Link的哈希键
  • 属性字段(Attribute Fields)
  • 加载时间戳(Load Timestamp)
  • 记录源(Record Source)

image.png

示例:

CREATE TABLE Sat_CustomerDetails (Customer_HashKey CHAR(32),Customer_Name VARCHAR(255),Customer_Address VARCHAR(255),Load_Timestamp TIMESTAMP,Record_Source VARCHAR(50)
);

实践中的Data Vault建模

下面我们通过一个实际例子来展示如何在项目中应用Data Vault建模。假设我们有一个电商系统,需要整合客户、订单和产品等信息。

image.png

步骤一:定义Hub表

首先,我们为客户、订单和产品定义Hub表。

-- 客户中心表
CREATE TABLE Hub_Customer (Customer_HashKey CHAR(32) PRIMARY KEY,Customer_BusinessKey VARCHAR(255),Load_Timestamp TIMESTAMP,Record_Source VARCHAR(50)
);-- 订单中心表
CREATE TABLE Hub_Order (Order_HashKey CHAR(32) PRIMARY KEY,Order_BusinessKey VARCHAR(255),Load_Timestamp TIMESTAMP,Record_Source VARCHAR(50)
);-- 产品中心表
CREATE TABLE Hub_Product (Product_HashKey CHAR(32) PRIMARY KEY,Product_BusinessKey VARCHAR(255),Load_Timestamp TIMESTAMP,Record_Source VARCHAR(50)
);

步骤二:定义Link表

接下来,我们定义Link表来表示客户和订单、订单和产品之间的关系。

-- 客户与订单关系表
CREATE TABLE Link_CustomerOrder (CustomerOrder_HashKey CHAR(32) PRIMARY KEY,Customer_HashKey CHAR(32),Order_HashKey CHAR(32),Load_Timestamp TIMESTAMP,Record_Source VARCHAR(50)
);-- 订单与产品关系表
CREATE TABLE Link_OrderProduct (OrderProduct_HashKey CHAR(32) PRIMARY KEY,Order_HashKey CHAR(32),Product_HashKey CHAR(32),Load_Timestamp TIMESTAMP,Record_Source VARCHAR(50)
);

步骤三:定义Satellite表

最后,我们为每个Hub和Link定义Satellite表,用于存储相关的属性信息。

-- 客户属性卫星表
CREATE TABLE Sat_CustomerDetails (Customer_HashKey CHAR(32),Customer_Name VARCHAR(255),Customer_Address VARCHAR(255),Load_Timestamp TIMESTAMP,Record_Source VARCHAR(50)
);-- 订单属性卫星表
CREATE TABLE Sat_OrderDetails (Order_HashKey CHAR(32),Order_Date DATE,Order_Amount DECIMAL(10, 2),Load_Timestamp TIMESTAMP,Record_Source VARCHAR(50)
);-- 产品属性卫星表
CREATE TABLE Sat_ProductDetails (Product_HashKey CHAR(32),Product_Name VARCHAR(255),Product_Price DECIMAL(10, 2),Load_Timestamp TIMESTAMP,Record_Source VARCHAR(50)
);

总结

image.png

Data Vault建模是一种灵活且扩展性强的数据仓库建模方法,特别适用于复杂和动态的数据环境。

它通过Hub、Link和Satellite表的组合,提供了一种结构化的方法来存储和管理大量的业务数据及其变化历史。

在实际应用中,Data Vault建模方法能够有效应对数据源和业务需求的变化,为企业提供稳定可靠的数据整合解决方案。

希望本文对您理解和应用Data Vault建模有所帮助。如果您在实际项目中遇到任何问题,欢迎留言讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/35517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java知识点整理 12 — 前端 Ant Design Pro 初始化模板使用

一. 项目初始化 Ant Design Pro 是基于 Ant Design 和 umi 封装的一整套企业级中后台前端设计框架,致力于在设计规范和基本组件的基础上,继续向上构建,提炼出典型模板或配套设计资源,进一步提升企业级中后台产品设计研发过程中的…

用MySQL和navicatpremium做一个项目—(财务管理系统)。

1 ER图缩小的话怕你们看不清,所以截了两张图 2 vsdx绘图结果 3DDL和DML,都有点长分了好多次上传,慢慢看 DDL -- 用户表 CREATE TABLE users (user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,username VARCHAR(50) NOT NULL UNIQUE COMMENT 用…

SpringCloud分布式微服务链路追踪方案:Skywalking

一、引言 随着微服务架构的广泛应用,系统的复杂性也随之增加。在这种复杂的系统中,应用通常由多个相互独立的服务组成,每个服务可能分布在不同的主机上。微服务架构虽然提高了系统的灵活性和可扩展性,但也带来了新的挑战&#xf…

vue的学习--day2

如有错误,烦请指正~ 目录 一、什么是单页面应用程序 二、使用工具:node.js 三、工具链 易错点 一、什么是单页面应用程序 多个组件(例如登录、注册等以vue结尾的都叫做组件)在一个页面显示,叫单页面应用…

【软件测试】白盒测试与接口测试详解

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是白盒测试 白盒测试是一种测试策略,这种策略允许我们检查程序的内部结构&a…

Vite: Esbuild的使用与其插件开发

概述 作为 Vite 的双引擎之一,Esbuild 在很多关键的构建阶段(如 依赖预编译 、 TS 语法转译 、 代码压缩 ) 让 Vite 获得了相当优异的性能,是 Vite 高性能的得力助手无论是在 Vite 的配置项还是源码实现中,都包含了不少 Esbuild 本身的基本概…

你知道大数据信用分低需要如何改善吗?

在当今社会,大数据信用分已经成为个人信用评估的重要指标之一。然而,有时候我们会发现自己的大数据信用分较低,这可能会对我们的信用状况产生负面影响。那么,如何改善自己的大数据信用分呢?本文将从信用分低的原因进行分析&#…

【Micro-ROS学习】

Micro-ROS 是专为 ROS 2 设计的,它允许在微控制器(microcontrollers)上实现ROS 2的功能。Micro-ROS 从 ROS 2 架构优化而来,目的是让那些资源有限的嵌入式设备也能够接入ROS 2生态系统,享受ROS 2带来的标准化通信、模块…

java简易计算器(多种方法)

parseDouble() 方法属于 java.lang.Double 类。它接收一个字符串参数,其中包含要转换的数字表示。如果字符串表示一个有效的 double,它将返回一个 double 值。 应用场景 parseDouble() 方法在以下场景中非常有用: 从用户输入中获取数字&a…

国内AI行业对GPU算力的需求有多大?

随着人工智能(AI)技术的飞速发展,算力作为支撑其持续进步的核心动力,在国内的重要性日益凸显,无论是海外还是国内,AI算力行业都呈现出蓬勃发展的态势,而国内对于AI算力的需求更是呈现出爆发式的…

离散傅里叶变化

傅里叶变换 对傅里叶变换了解不是很清楚的朋友推荐一下这个帖子,讲得很详细 傅里叶变换 源码 先看源码链接 #include "opencv2/core.hpp" #include "opencv2/imgproc.hpp" #include "opencv2/imgcodecs.hpp" #include "open…

从零开始了解GPT-4o模型:它是如何工作的?

人工智能(AI)技术正以惊人的速度发展,其中最引人注目的是OpenAI发布的GPT-4o模型。作为GPT系列的新成员,GPT-4o在多模态输入处理和响应速度上取得了重大进展。本文将深入探讨GPT-4o的工作原理,帮助您全面了解这一尖端A…

MySQL实训

项目名称与项目简介 股票交易系统是一个综合性的金融服务平台,它提供了股票买卖、交易查询、用户管理、股票信息管理以及资金账户管理等功能。系统旨在为用户提供一个安全、高效、便捷的股票交易环境,让用户能够实时掌握市场动态,做出合理的…

模拟物理弧线轨道运动(模拟飞盘,子弹运动)

模拟物理弧线运动(模拟飞盘) 介绍实现代码总结 介绍 模拟弧线的运动,并且对象始终朝向运动的方向,模拟飞盘子弹的运动轨迹。这里我是没有加重力这么一个概念的,当然了重力其实比较简单可以参考我之前写的模拟抛物线运动…

ubuntu 挂载新硬盘 记录

Ref 安全自动挂载硬盘, https://berylbot.com/archives/mount-disks-ubuntu 挂载新硬盘, https://berylbot.com/archives/mount-disks-ubuntu 1. 检查新硬盘是否被系统识别 lsblk -f 查看所有硬盘的UUID, 其中 mount point 为空则表示尚未挂载的硬盘。 列出所有可用…

ET9中ETTask传递新的Context原理

ET9中ETTask传递新的Context原理 前言 每一个异步函数都会创建两个对象, 第1个是当前异步函数返回值(ETTASK)对应的ETAsyncTaskMethodBuilder,通过这个类的静态方法Create创建返回,这个builder类中会有一个Task对象&…

idea 自动生成序列化数字

目标:当类继承Serializable后自动生成序列化Uid 网上查了很多说勾选class without ‘serialVersionUID’ 但是我勾选没用 最后发现,我勾选的是Serialization issues里面的配置,要勾选的是JVM languages下的 如下图所示,记录一下…

技术干货|SimLab 电子产品热流体仿真

电子产品热仿真特点有哪些? 结构复杂,电子设备包含几十~上千个元器件 体积小,功率密度高、关注热敏感元器件 多种冷却方式,自然冷却、风扇冷却、液冷、热管等 多维度,芯片级,板级,系统级 单…

昇思25天学习打卡营第03天|张量Tensor

何为张量? 张量(Tensor)是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 𝑛维空间内,有  𝑛&a…

ppt模版免费下载网站大全

PPT是我们传达信息、分享知识、展示项目和进行商务沟通的重要工具。一个设计精美、布局合理的PPT不仅能吸引观众的注意力,还能有效提升演讲者的专业形象。PPT模版可以帮助我们高效制作出精美的PPT,下面小编就来和大家分享一些免费无需注册登录就可以直接…