不止是只有维度建模,数据仓库还有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,一经查实,立即删除!

相关文章

LVS+Keepalived 高可用集群搭建实验

192.168.40.204lvs+keepalivedlvs-k1192.168.40.140lvs+keepalivedlvs-k2192.168.40.150nginx官方教程web-1192.168.40.151nginxepel阿里云源web-2Woo79 | LVS+Keepalived 高可用集群搭建 (图文详解小白易懂) 第一步:负载均衡高可用 1.在lvs-k1和lvs-k2上面安装keepalived…

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 本身的基本概…

JC/T 626-2008 纤维增强低碱度水泥建筑平板检测

纤维增强低碱度水泥建筑平板是指以温石棉、短切中碱玻璃纤维或以抗碱玻璃纤维等为增强材料,以低碱度硫酸铝酸盐水泥为胶结材料制成的建筑平板。 JC/T 626-2008 纤维增强低碱度水泥建筑平板测试项目 测试要求 测试标准 外观 JC/T 412.2 尺寸 JC/T 412.2 抗折强…

lammps已经运算结束,有数据忘记算:rerun 命令

需要的文件 1、模拟运算的所有文件(模型 、in文件、力场文件) 2、模拟计算所得到的dump文件(原子轨迹文件) rerun命令的使用(修改in文件) 1、删除or注释掉 输出dump文件的那一行命令 2、加上需要补充计…

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

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

【LeetCode 3】无重复字符的最长子串

1. 题目 2. 分析 这道题比较简单。 思想就是:双指针,leftright0。从左到右遍历字符串,right递增,同时将遇到的字符放到set中。遍历的过程中,判断set中是否已经存在该字符了,如果存在,那么就递…

调和映照理论几个重要的基础理论

曲面Ricci流理论 曲面Ricci流理论(Ricci Flow on Surfaces)是一个重要的几何分析理论,研究流形上的Ricci流的演化。在数学领域,Ricci流是一种流形上的度量的演化过程,通过调整度量的曲率来研究流形的几何结构。曲面Ri…

【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实训

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

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

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