当前位置: 首页 > news >正文

数仓-范式建模、维度建模、雪花模型、星型模型对比及其适用范围

1. 范式建模

定义

  • 范式建模是一种基于关系型数据库设计的建模方法,遵循数据库的范式规则(如第一范式、第二范式、第三范式等),通过消除数据冗余、规范化字段和表结构来优化存储。
  • 数据被分解为多个表,通过外键关系进行关联

特点

  • 规范化:每个表只存储与其主题相关的数据,避免数据冗余。
  • 关系复杂:表之间通过外键关联,查询时需要多表 JOIN。
  • 存储优化:减少数据冗余,节省存储空间。

优点

  • 数据一致性高,避免冗余导致的更新异常。
  • 存储空间占用少,适合事务型数据库。

缺点

  • 查询复杂:多表关联导致查询性能较低。
  • 不适合 OLAP(在线分析处理)场景,通常用于 OLTP(在线事务处理)

适用范围

  • 事务型系统:如银行系统、订单管理系统,数据更新频繁且需要高一致性。
  • 小规模数据分析:数据量较小时,范式建模可以满足基本的分析需求。

2. 维度建模

定义

  • 维度建模是一种面向分析型数据库的建模方法,主要用于数据仓库设计。它通过将数据分为 事实表维度表,以支持高效的查询和分析。
  • 核心思想是围绕业务过程构建模型,简化查询逻辑。

特点

  • 事实表存储业务事件的度量值(如销售额、订单数量),通常是数据量最大的表。
  • 维度表:存储业务事件的上下文信息(如时间、地点、产品),通常是数据量较小的表。
  • 去规范化:维度表通常包含冗余数据,以减少查询时的 JOIN 操作。

优点

  • 查询性能高:通过事实表和维度表的简单关联,快速获取分析结果。
  • 易于理解:模型设计贴近业务需求,便于业务人员使用。

缺点

  • 数据冗余:维度表中可能存在重复数据。
  • 存储空间占用较高。

适用范围

  • 数据仓库:适合大规模数据分析场景,如销售分析、用户行为分析。
  • BI 系统:支持多维度数据分析和报表生成。

3. 星型模型

定义

  • 星型模型是一种维度建模的具体实现方式,事实表位于中心,维度表直接与事实表关联,整体结构类似星形。
  • 维度表是去规范化的,通常包含冗余数据。

特点

  • 简单结构:维度表直接与事实表关联,查询时无需多级 JOIN。
  • 高效查询:减少了复杂的表关联,适合快速查询。

优点

  • 查询性能高:维度表去规范化,减少了查询时的计算量。
  • 易于理解:模型结构简单,业务人员容易理解。

缺点

  • 数据冗余:维度表中可能存在重复数据。
  • 不适合复杂维度:当维度表数据量较大或维度层级较深时,星型模型可能不够灵活。

适用范围

  • 简单分析场景:如销售数据分析、用户行为分析。
  • 小型数据仓库:数据量较小时,星型模型能提供高效的查询性能。

4. 雪花模型

定义

  • 雪花模型是星型模型的扩展,维度表进一步规范化,拆分为多个子表,整体结构类似雪花形状。
  • 维度表间通过外键关联,形成层级关系。有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上

特点

  • 规范化维度表:维度表被拆分为多个子表,减少数据冗余。
  • 复杂结构:查询时需要多级 JOIN,性能较低。

优点

  • 数据冗余低:规范化维度表减少了存储空间占用。
  • 适合复杂维度:支持维度表的层级关系,适合处理复杂的维度结构。

缺点

  • 查询性能较低:多级 JOIN 增加了查询复杂度。
  • 难以理解:模型结构复杂,业务人员不易理解。

适用范围

  • 复杂分析场景:如多层级的客户数据分析、供应链分析。
  • 大型数据仓库:数据量较大且维度层级较深时,雪花模型更适合。

5. 对比总结

特性范式建模维度建模星型模型雪花模型
设计目标数据一致性,减少冗余面向分析,简化查询简化查询,提升性能规范化维度表,减少冗余
数据冗余最低较高较低
查询性能较低较低
结构复杂度
适用场景OLTP,事务型系统OLAP,数据仓库简单分析场景,小型数据仓库复杂分析场景,大型数据仓库
易于理解较难易于理解易于理解较难

6. 适用范围总结

  1. 范式建模

    • 适合事务型系统(如订单管理、银行系统),需要高数据一致性和低冗余。
    • 不适合大规模数据分析场景。
  2. 维度建模

    • 适合数据仓库和 BI 系统,支持多维度分析。
    • 是数据仓库设计的主流方法。
  3. 星型模型

    • 适合简单分析场景或小型数据仓库,查询性能高。
    • 不适合复杂维度或大规模数据。
  4. 雪花模型

    • 适合复杂分析场景或大型数据仓库,支持多层级维度。
    • 查询性能较低,适合存储优化需求较高的场景。

7. 总结建议

  • 如果数据量较小,分析需求简单:选择 星型模型,查询性能高且易于理解。
  • 如果数据量大,维度复杂:选择 雪花模型,规范化维度表,减少存储冗余。
  • 如果是事务型系统:选择 范式建模,保证数据一致性。
  • 如果是数据仓库或 BI 系统:选择 维度建模,结合业务需求设计事实表和维度表。

相关文章:

数仓-范式建模、维度建模、雪花模型、星型模型对比及其适用范围

1. 范式建模 定义 范式建模是一种基于关系型数据库设计的建模方法,遵循数据库的范式规则(如第一范式、第二范式、第三范式等),通过消除数据冗余、规范化字段和表结构来优化存储。数据被分解为多个表,通过外键关系进行…...

批量导出docker镜像

#!/bin/bash # 创建备份目录 BACKUP_DIR"docker_images_single_backup" mkdir -p "$BACKUP_DIR" # 遍历所有镜像 docker images --format "{{.Repository}}:{{.Tag}} {{.ID}}" | while read -r line; do # 提取镜像名称和ID REPO_TAG$(echo …...

棒球裁判员学习指南·棒球1号位

针对棒球裁判员的规则学习与能力提升指南,包含系统性学习路径和实践建议,帮助裁判员高效掌握规则并提升执法水平: 一、基础规则体系构建 1. 官方规则精读 核心文件:完整研读《世界棒垒球联盟(WBSC)官方规…...

vue注册用户使用v-model实现数据双向绑定

定义数据模型 Login.vue //定义数据模型 const registerData ref({username: ,password: ,confirmPassword: })使用 v-model 实现数据模型的key与注册表单中的元素之间的双向绑定 <!-- 注册表单 --><el-form ref"form" size"large" autocompl…...

BM14 链表的奇偶重排

20250510 题目我的解法❗️问题描述&#xff1a;为什么会报 OutOfMemoryError&#xff1f;&#x1f50d;详细分析✅如何修复&#xff1f;✅推荐修改方案&#xff08;正确版本&#xff09;✅为什么这样改有效&#xff1f;&#x1f9ea;测试示例✅总结 修改 题目 我的解法 impor…...

Client 和 Server 的关系理解

client.py 和 server.py 是基于 MCP&#xff08;Multi-Component Protocol&#xff09;协议的客户端-服务端架构&#xff0c;二者的关系如下&#xff1a; 1. 角色分工 server.py&#xff1a;服务端&#xff0c;负责注册和实现各种“工具函数”&#xff08;如新闻检索、情感分…...

Checkmk实战指南:从零构建企业级监控系统

在当今复杂的IT环境中,监控系统如同运维团队的"眼睛"和"耳朵",而Checkmk正是一款能够帮助企业实现全方位监控的开源利器。本文将带您从零开始,通过8个关键步骤构建一个功能完备的监控系统,涵盖从安装部署到高级优化的完整流程。 一、为什么选择Checkm…...

多模态大模型中的视觉分词器(Tokenizer)前沿研究介绍

文章目录 引言MAETok背景方法介绍高斯混合模型&#xff08;GMM&#xff09;分析模型架构 实验分析总结 FlexTok背景方法介绍模型架构 实验分析总结 Emu3背景方法介绍模型架构训练细节 实验分析总结 InternVL2.5背景方法介绍模型架构 实验分析总结 LLAVA-MINI背景方法介绍出发点…...

车载电子电器架构 --- 汽车网关概述

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

JVM对象创建内存分配

对象创建的主要流程&#xff1a; 检查加载类–》分配内存–》初始化–》设置对象头–》实例化&#xff0c;执行init方法。 在内存分配中&#xff0c;虚拟机将为新生对象内存分配 Minor GC : 新生代垃圾收集&#xff0c;特点是频繁&#xff0c;回收速度快&#xff1b; Full GC …...

project从入门到精通(五)

目录 创建资源的基本信息 在project中创建资源工作表 ​编辑信息详解 最大单位 标准费率与加班费率 每次使用成本 成本累算 基准日历 三类资源工作表的总结——不同的资源必须要设置的属性 除了资源名称是必须设置的之外&#xff0c;剩余的资源的可设置选项如下图所…...

研发效率破局之道阅读总结(5)管理文化

研发效率破局之道阅读总结(5)管理文化 Author: Once Day Date: 2025年5月10日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: 程序的艺术_Once-Day…...

Java常用类概述

Java常用类概述 一、字符串三剑客1. String&#xff08;不可变字符串&#xff09;2. StringBuilder&#xff08;可变&#xff0c;线程不安全&#xff09;3. StringBuffer&#xff08;可变&#xff0c;线程安全&#xff09; 二、日期时间类&#xff08;重点掌握新版API&#xff…...

202535| Kafka架构与重要概念+幂等性+事务

好的&#xff01;以下是关于 Kafka 架构 以及其 重要概念 的详细介绍&#xff0c;结合 Mermaid 图形 和 表格&#xff0c;帮助你更好地理解各个概念的关系和作用。 Kafka 架构与重要概念 Kafka 是一个分布式消息系统&#xff0c;广泛应用于日志收集、流处理、事件驱动架构等场…...

MySQL 索引和事务

目录 一、MySQL 索引介绍 1、索引概述 2、索引作用 3、索引的分类 &#xff08;1&#xff09;普通索引 &#xff08;2&#xff09;唯一索引 &#xff08;3&#xff09;主键索引 &#xff08;4&#xff09;组合索引&#xff08;最左前缀&#xff09; &#xff08;5&…...

IPFS与去中心化存储:重塑数字世界的基石

引言 在数据爆炸式增长的数字时代&#xff0c;中心化存储的弊端日益凸显——数据垄断、隐私泄露、单点故障等问题频发。IPFS&#xff08;InterPlanetary File System&#xff09; 作为一种去中心化存储协议&#xff0c;正与区块链技术共同推动一场存储革命。本文将深入解析IPF…...

Web3 学习全流程攻略

目录 🧭 Web3 学习全流程攻略 🌱 第一阶段:打好基础(Web3 入门) 🧠 目标: 📚 学习内容: ✅ 推荐资源: 🧑‍💻 第二阶段:技术栈搭建(成为 Web3 开发者) 🧠 目标: 📚 学习内容: ✅ 推荐资源: 🌐 第三阶段:构建完整 DApp(去中心化应用)…...

AUTODL Chatglm2 langchain 部署大模型聊天助手

资源申请 注册登录 进入下面的链接 AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDLAutoDL为您提供专业的GPU租用服务&#xff0c;秒级计费、稳定好用&#xff0c;高规格机房&#xff0c;7x24小时服务。更有算法复现社区&#xff0c;一键复现算法。https://autodl.com/ho…...

牛客练习赛138

牛客练习赛138 A.小s的签到题 思路&#xff1a;过题人数最多的就是签到题 #include <bits/stdc.h> using namespace std; typedef long long ll; typedef pair<int, char> PII;bool cmp(PII a, PII b) {return a.first > b.first; }void solve() {int n;cin …...

【脑机接口临床】脑机接口手术的风险?脑机接口手术的应用场景?脑机接口手术如何实现偏瘫康复?

脑机接口的应用 通常对脑机接口感兴趣的两类人群&#xff0c;一类是适应症患者 &#xff0c;另一类是科技爱好者。 1 意念控制外部设备 常见的外部设备有&#xff1a;外骨骼、机械手、辅助康复设备、电刺激设备、电脑光标、轮椅。 2 辅助偏瘫康复或辅助脊髓损伤患者意念控制…...

普通IT的股票交易成长史--股价起伏的真相-缺口(2)

声明&#xff1a;本文章的内容只是自己学习的总结&#xff0c;不构成投资建议。价格行为理论学习可参考简介中的几位&#xff0c;感谢他们的无私奉献。 送给自己的话&#xff1a; 仓位就是生命&#xff0c;绝对不能满仓&#xff01;&#xff01;&#xff01;&#xff01;&…...

基于NI-PXI的HIL系统开发

基于NI-PXI平台的汽车电控单元HIL系统开发全解析 引言&#xff1a;HIL系统如何成为汽车电控开发的“效率倍增器”&#xff1f; 某车企通过基于NI-PXI的HIL系统&#xff0c;将悬架控制器的测试周期从3个月压缩至2周&#xff0c;故障检出率提升65%。这背后是硬件在环技术对汽车电…...

IOC和Bean

IOC IOC将对象的创建&#xff0c;依赖关系的管理和生命周期的控制从应用程序代码中解耦出来了 IOC容器的依赖注入(DI) 在程序运行过程中动态的向某个对象中注入他所需要的其他对象 依赖注入是基于反射实现的 Spring IOC 容器使用的是Map&#xff08;concorrentMap&#xff…...

助力你的Neovim!轻松管理开发工具的魔法包管理器来了!

在现代编程环境中&#xff0c;Neovim 已经成为许多开发者的编辑器选择。而针对 Neovim 的各种插件与功能扩展&#xff0c;则是提升开发体验的重要手段。今天我们要介绍的就是一个强大而便捷的开源项目——mason.nvim&#xff0c;一个旨在简化和优化 Neovim 使用体验的便携式包管…...

AI与机器人学:从SLAM到导航的未来

AI与机器人学&#xff1a;从SLAM到导航的未来 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 AI与机器人学&#xff1a;从SLAM到导航的未来摘要引言技术路线对比1. 传感器融合架构&#xff1a;纯激光 vs 多模态2. …...

C++学习之模板初阶学习

今天我们来学习C中模板的学习。但是模板是C中比较难的部分&#xff0c;因此本节我们直接出相对比较初阶的部分。 目录 泛型编程 函数模板 函数模板格式 函数模板的原理 函数模板的特性 函数模板的实例化 模板参数的匹配原则 类模板 类模板定义格式 类模板实例化 泛型…...

专业级软件卸载工具:免费使用,彻底卸载无残留!

在数字生活节奏日益加快的今天&#xff0c;我们的电脑就像每天都在"吃进"各种软件。但您是否注意到&#xff0c;那些看似消失的程序其实悄悄留下了大量冗余文件&#xff1f;就像厨房角落里积攒的调味瓶空罐&#xff0c;日积月累就会让系统变得"消化不良"。…...

JSON|cJSON 介绍以及具体项目编写

一、JSON介绍 JSON&#xff08;JavaScript Object Notation 即JavaScript对象表示法&#xff09;是一种轻量级的数据交换格式。采用完全独立于编程语言的文本格式来存储和表示数据。 JSON是一种数据交换格式.JSON独立于编程语言(你不必学习JavaScript).JSON表达数据的方式对通…...

Cell | 大规模 单细胞图谱 揭示非小细胞肺癌抗PD-1治疗后的免疫微环境异质性

–https://doi.org/10.1016/j.cell.2025.03.018 A single-cell atlas reveals immune heterogeneity in anti-PD-1-treated non-small cell lung cancer 留意更多内容&#xff1a;组学之心 研究简介 背景与问题 非小细胞肺癌&#xff08;NSCLC&#xff09;术后复发率高。新…...

光流 | 基于深度学习的光流估计算法汇总,原理,公式,流程图,代码

基于深度学习的光流算法 一、光流估计的基本原理二、基于深度学习的光流估计算法1. **FlowNet系列**2. **FlowNet 2.0**3. **PWC-Net**4. **RAFT(Recurrent All-Pairs Field Transformers)**5. **LiteFlowNet系列**三、算法流程图示例FlowNet2.0架构PWC-Net金字塔处理流程四、…...

常见的算法介绍

算法概述线性回归(Linear Regression)线性回归是一种通过属性的线性结合来进行预测的线性模型, 其目的是找到一条直线, 一个平面或者更高维的超平面, 使预测值和真实值之间的误差最小化逻辑回归(Logistic Regression)逻辑回归是一种分类模型, 入二分类公式 P ( Y 1 ∣ X ) e …...

【基于 LangChain 的异步天气查询1】异步调用 Open-Meteo API 查询该城市当前气温

目录 一、功能概述 二、文件结构 三、城市天气实时查询&#xff08;运行代码&#xff09; weather_runnable.py main.py 运行结果 四、技术亮点 五、使用场景 一、功能概述 它实现了以下主要功能&#xff1a; 用户输入地点&#xff08;城市名&#xff09; 构造提示词…...

深入解析JavaScript变量作用域:var、let、const全攻略

在JavaScript中&#xff0c;变量作用域是一个核心概念&#xff0c;它决定了变量的可访问性和生命周期。理解变量作用域对于编写清晰、高效且无错误的代码至关重要。本文将深入探讨JavaScript中不同类型的变量声明方式&#xff08;var、let、const等&#xff09;&#xff0c;分析…...

C33-函数嵌套及编码实战

我们以一个编程题目的实践来学习此部分内容 题目:输入四个数,以函数的方式找出最大值 思维:使用两个数找出较大值→较大值与第三个数比较得出新的较大值→新的较大值与第四个数比较得出最大值 代码 #include <stdio.h>//内层函数的封装int GetMaxFromTwoNums(int a,int…...

clangd与clang-tidy

Clangd是基于Clang的Language Server&#xff0c;主要用于提供代码补全、跳转定义、错误提示等IDE功能。而Clang-Tidy则是静态代码分析工具&#xff0c;用于检查代码中的潜在问题&#xff0c;比如风格违规、潜在bug等。 clangd 核心工作原理 1. 基于编译器的精准解析 底层引擎…...

【Linux】冯诺依曼体系结构和操作系统的理解

目录 冯诺依曼体系结构一个例子来深入理解 初识操作系统操作系统的作用设计操作系统的目的操作系统之上和之下分别有啥 管理的精髓&#xff0c;先描述&#xff0c;再组织 冯诺依曼体系结构 我们知道&#xff0c;计算机这个东西发明出来就是帮助人们快速解决问题的。那如果我们想…...

Windows系统Jenkins企业级实战

目标 在Windows操作系统上使用Jenkins完成代码的自动拉取、编译、打包、发布工作。 实施 1.安装Java开发工具包&#xff08;JDK&#xff09; Jenkins是基于Java的应用程序&#xff0c;因此需要先安装JDK。可以从Oracle官网或OpenJDK下载适合的JDK版本。推荐java17版本&#x…...

服务预热原理

Java、Spring、Springboot工程启动后&#xff0c;第一次访问比较慢&#xff0c;而从第二次访问开始就快很多&#xff0c;这通常是由以下几个原因导致的&#xff1a; 类加载与初始化开销 类加载过程&#xff1a;Java程序在启动时需要加载大量的类文件到内存中&#xff0c;包括…...

Python核心编程深度解析:作用域、递归与匿名函数的工程实践

引言 Python作为现代编程语言的代表&#xff0c;其作用域管理、递归算法和匿名函数机制是构建高质量代码的核心要素。本文基于Python 3.11环境&#xff0c;结合工业级开发实践&#xff0c;深入探讨变量作用域的内在逻辑、递归算法的优化策略以及匿名函数的高效应用&#xff0c…...

python环境搭建和pycharm的安装配置以及使用face_recognition与cv2

一.python环境的搭建: 1.下载python&#xff08;这里以python3.11为例&#xff09; step 1&#xff1a;打开下载网址&#xff1a;https://www.python.org/downloads/windows/ step 2&#xff1a;我这里选着python3.11.9的版本 2. 安装我就不说了,网上很多 二.pycharm的安装…...

养生:为健康生活筑牢根基

养生并非遥不可及的目标&#xff0c;而是贯穿于日常生活的点滴之中。从饮食、运动到心态调节&#xff0c;每一个环节都对我们的健康有着重要意义。以下为你详细介绍养生的实用策略&#xff0c;助力你开启健康生活模式。 饮食养生&#xff1a;科学搭配&#xff0c;滋养生命 合…...

linux-----------Ext系列⽂件系统(上)

1.理解硬盘 1-1 磁盘、服务器、机柜、机房 机械磁盘是计算机中唯⼀的⼀个机械设备 磁盘--- 外设 慢 容量⼤&#xff0c;价格便宜 1-2 磁盘物理结构 1-3 磁盘的存储结构 扇区&#xff1a;是磁盘存储数据的基本单位&#xff0c;512字节&#xff0c;块设备 如何定位⼀个扇区呢…...

ts装饰器

TypeScript 装饰器是一种特殊类型的声明&#xff0c;能够被附加到类声明、方法、访问符、属性或参数上。它本质上是一个函数&#xff0c;会在运行时被调用&#xff0c;并且被装饰的声明信息会作为参数传递给装饰器函数。 装饰器的分类 类装饰器 类装饰器作用于类构造函数&…...

未来通信中的大型人工智能模型:基础、应用与挑战的全面综述

题目&#xff1a;A Comprehensive Survey of Large AI Models for Future Communications: Foundations, Applications and Challenges 作者&#xff1a;江沸菠&#xff0c;潘存华&#xff0c;董莉&#xff0c;王可之&#xff0c;Merouane Debbah&#xff0c;Dusit Niyato&…...

青藏高原七大河流源区径流深、蒸散发数据集(TPRED)

时间分辨率 月空间分辨率 1km - 10km共享方式 开放获取数据大小 83.27 MB数据时间范围 1998-07-01 — 2017-12-31元数据更新时间 2024-07-22 数据集摘要 通过构建耦合积雪、冻土、冰川等冰冻圈水文物理过程的WEB-DHM模型&#xff08;Water and Energy Budget-based Distribute…...

5.2 参数管理

目标 访问参数&#xff0c;用于调试、诊断和可视化&#xff1b;参数初始化&#xff1b;在不同模型组件间共享参数。 模型&#xff1a;单隐藏层的MLP import torch from torch import nnnet nn.Sequential(nn.Linear(4, 8), nn.ReLU(), nn.Linear(8, 1)) X torch.rand(size…...

Best Video下载器——抖音视频去水印工具

在浏览抖音时&#xff0c;我们常常会遇到一些精彩的短视频&#xff0c;想要保存下来作为创作素材或与朋友分享。然而直接下载的视频往往带有平台水印&#xff0c;影响观看体验。今天就为大家介绍几种简单实用的去水印方法&#xff0c;让你轻松获取高清无水印视频。 目前市面上…...

C语言_程序的段

在 C 语言程序中,内存通常被分为多个逻辑段,每个段存储不同类型的数据。理解这些段的结构和功能,有助于你更高效地编写、调试和优化程序。以下是 C 语言程序中主要的内存段及其特点: 1. 代码段(Text Segment) 存储内容:编译后的机器指令(程序代码)。特性: 只读:防止…...

Google Earth Pro(谷歌地球)2025大陆版安装教程

软件介绍 【名称】&#xff1a;Google Earth Pro&#xff08;谷歌地球&#xff09;2025 【大小】&#xff1a;63.6M 【语言】&#xff1a;简体中文 【安装环境】&#xff1a;Win/Win8/Winxp/Win10/Win11 谷歌地球(Google Earth) 是由Google公司开发的地图软件。谷歌地球采用了…...

2025年数维杯赛题C题专家 组委会C题专家疑集锦

1、段前段后距&#xff0c;行间距有要求嘛 C题专家&#xff1a;一般是单倍行距 2、请问参考文献和附录上方也要有图示页眉吗?ai使用报告放在附录里还是附录之后? C题专家:附录 3、第三问的那个三天都在一个城市可以吗?这样我们列两份城市的清明自由行&#xff0c;还是说…...