数仓核心概念阐述

数仓核心概念阐述

      • 一、数据仓库建模模型
      • 二、数据处理架构
      • 三、流批处理架构演进
        • **为什么需要流批融合?**
        • **1. Lambda 架构(双引擎护航)**
        • **2. Kappa 架构(流处理一统江湖)**
      • **关键概念对照表**
      • **实际案例理解**
      • **演进趋势**
      • 四、数据存储体系
      • 五、ETL 核心流程
      • 六、应用场景对标

一、数据仓库建模模型

  1. 星型模型 (Star Schema)

    • 结构:1个事实表 + N个维度表(直接连接)
    • 特点:维度表非规范化(含冗余字段),查询高效
    • 示例:销售事实表 + 产品/时间/门店维度表
  2. 雪花模型 (Snowflake Schema)

    • 结构:维度表进一步拆分为子维度表(层级化)
    • 特点:维度表规范化(减少冗余),存储节省但查询复杂
    • 示例:产品维度表 → 拆分为产品类目表、供应商表
  3. 星座模型 (Galaxy Schema/Fact Constellation)

    • 结构多个事实表共享维度表
    • 特点:支持跨业务分析(如销售与库存联合分析)
    • 示例:销售事实表 + 库存事实表 → 共享时间/产品维度表

二、数据处理架构

对比项OLTP (Online Transaction Processing)OLAP (Online Analytical Processing)
目标实时事务处理(增删改查)复杂数据分析(聚合、统计)
数据量高频率小数据量低频大批量数据
数据库设计规范化(3NF)星型/雪花模型
典型场景电商下单、银行转账销售报表、用户行为分析
代表系统MySQL, PostgreSQLHive, ClickHouse, Snowflake

三、流批处理架构演进

  1. Lambda 架构

    • 分层:批处理层(全量准确)+ 速度层(实时近似)+ 服务层(合并结果)
    • 痛点:代码维护双份,数据一致性难保障
  2. Kappa 架构

    • 核心仅用流处理,通过消息队列(如Kafka)存储历史数据
    • 流程:实时流处理 + 重播历史数据生成批视图
    • 优势:一套代码维护,简化架构

理解流批处理架构演进的关键在于抓住一个核心矛盾:如何同时满足大数据处理的准确性(批处理)和实时性(流处理)?下面用最直白的语言和场景帮你拆解:


为什么需要流批融合?
  • 批处理(如Hive):今天凌晨计算昨天的销售总额 → 结果准确但延迟高
  • 流处理(如Flink):实时计算此刻的销售金额 → 结果及时但可能不精确(如网络延迟导致漏数据)
    👉 业务既要看实时大盘又要对账准确报表 → 催生了混合架构

1. Lambda 架构(双引擎护航)
graph TD
A[新数据] --> B1[Kafka消息队列]
B1 --> C1[批处理层:Hadoop/Hive] 
B1 --> C2[速度层:Flink/Storm]
C1 --> D[批处理视图:HBase]
C2 --> E[实时视图:Redis]
D & E --> F[服务层:合并结果给用户]
  • 核心思想:用两条独立流水线分别处理
    • 批处理层:夜间跑全量数据 → 生成100%准确的结果(比如昨日最终销售额)
    • 速度层:实时处理最新数据 → 生成近似结果(比如当前分钟销售额)
  • 痛点
    • ❌ 同一套业务逻辑要写两遍代码(批处理+流处理)
    • ❌ 凌晨批处理覆盖实时结果时,用户可能看到数据跳变

场景类比
你同时用计算器(批处理)和心算(流处理)做同一道数学题,最后把两个结果拼在一起报告老师。


2. Kappa 架构(流处理一统江湖)
graph LR
A[新数据] --> B[Kafka(存储历史+实时数据)]
B --> C[流处理引擎:Flink]
C --> D{需要历史数据?}
D -->|是| E[重播旧数据生成新视图]
D -->|否| F[直接输出实时结果]
  • 核心思想所有数据都当流处理
    • 用Kafka等消息队列永久保存原始数据(相当于存储了历史库)
    • 需要修正历史结果时,重播数据流重新计算(如:发现昨天漏了100条数据,就从Kafka重新拉取昨天的数据再算一次)
  • 优势
    • ✅ 只需维护一套流处理代码
    • ✅ 避免批流结果不一致

场景类比
全程用录音笔(Kafka)记录老师讲题过程。如果发现某处算错了,就倒带重听那段录音(重播数据流)重新计算。


关键概念对照表

概念Lambda架构Kappa架构解决什么问题
数据存储批存HDFS,流存Kafka全量存Kafka历史数据可回溯
计算逻辑批+流两套代码仅流处理一套代码开发维护成本高
数据一致性难保证通过重播保证凌晨报表跳变
适用场景早期大数据系统云原生实时数仓实时风控/监控大屏

实际案例理解

  • Lambda架构(电商双十一)

    • 实时大屏:Flink每秒更新成交额(可能少算了未支付订单)
    • 次日清晨:Hive跑出精确成交额(覆盖实时大屏结果)
    • ⚠️ 问题:凌晨0:05管理员看到销售额突然从120亿→119亿
  • Kappa架构(银行风控)

    • 实时流:Flink检测当前转账是否欺诈
    • 发现规则漏洞:重播过去7天数据,重新计算风险评分
    • ✅ 过程:无需停服,动态修正历史结果

演进趋势

  1. 批流一体引擎兴起(如Flink、Spark Structured Streaming)
    → 同一段代码可切换批/流执行模式
  2. 存储层升级(如Kafka长期存储 + 云对象存储)
    → 支持低成本保存全量历史数据

简单来说:Kappa是Lambda的简化升级版,用“数据重播”技术干掉冗余的批处理层。但注意:重播大量历史数据需要高性能流引擎,否则可能把系统压垮!

四、数据存储体系

概念数据仓库 (Data Warehouse)数据湖 (Data Lake)
数据状态清洗后的结构化数据原始多态数据(文本/图片/日志等)
Schema写入前定义(Schema-on-Write)使用时定义(Schema-on-Read)
用户数据分析师数据科学家/工程师
代表技术Redshift, BigQueryHadoop HDFS, Delta Lake

现代趋势湖仓一体 (Lakehouse)
融合数据湖的低成本存储与数据仓库的管理能力(如Databricks、Iceberg)。


五、ETL 核心流程

Extract 抽取
Transform 转换
Load 加载
  • Extract:从业务系统(ERP/CRM)抽取原始数据
  • Transform:清洗脏数据、转换格式、关联维度
  • Load:写入目标库(数据仓库/数据湖)

现代变体:ELT(先加载原始数据到湖仓,再转换)


六、应用场景对标

模型/架构适用场景案例
星型模型快速查询的报表系统电商每日销售大盘
雪花模型需要节省存储的规范化场景金融合规审计
Kappa架构实时风控或监控银行反欺诈系统
数据湖机器学习原始数据存储用户行为日志分析

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

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

相关文章

Spring Boot 自动配置全流程深度解析

在 Spring Boot 的世界里,“约定优于配置” 理念通过自动配置机制展现得淋漓尽致。从一个简单的SpringBootApplication注解开始,背后隐藏着一套精妙的自动配置加载流程。本文将从SpringBootApplication出发,逐步拆解自动配置类是如何被发现、…

AI:业务驱动与技术赋能:企业智能化应用的双向进化深度指南

一、业务与技术的双螺旋进化模型 1.1 从单向适配到双向驱动的认知转变 传统的信息化建设往往遵循"业务提需求、技术做实现"的线性模式,这种模式在稳定的业务环境中确实有效,但在当前快速变化的数字化时代已经显露出明显的局限性。真正的数字化…

2721. 【SDOI2010】外星千足虫

2721. 【SDOI2010】外星千足虫 题解 题目描述 题目描述 公元2089年6月4日,在经历了17年零3个月的漫长旅行后,“格纳格鲁一号”载人火箭返回舱终于安全着陆。此枚火箭由美国国家航空航天局(NASA)研制发射,行经火星、…

[RestGPT] RestGPT智能体

第3章:RestGPT智能体 欢迎回来🐻‍❄️ 在第1章:配置与环境中,我们为RestGPT配备了必要的"钥匙和密码";在第2章:OpenAPI规范(OAS)中,我们为它提供了与在线服务对话的"使用说明…

笔记本电脑Windows+Ubuntu 双系统,Ubuntu无法挂载Windows的硬盘 报错问题解决

目录 一、前情提要 二、解决方案步骤 第一步:进入Windows进行修复和检查。这是最关键的一步,目的是让Windows来检查和修复它自己的文件系统。 第二步:回到Ubuntu验证挂载 三、总结与预防 一、前情提要 网上找到许多解决方案&#xff0c…

加密货币与区块链:六大刑事重灾区

高鹏律师(首席数据官)数字经济团队创作,AI辅助在数字货币的世界里,一夜暴富的传说屡见不鲜,但顷刻间失去所有的悲剧也时有发生,现在,我将为您剖析加密货币与区块链领域的六大刑事风险重灾区&…

Spring Ai 1.0.1中存在的问题:使用MessageChatMemoryAdvisor导致System未被正确的放在首位

使用MessageChatMemoryAdvisor导致System未被正确的放在首位 如下是使用Spring Ai实现多轮对话的官方例子(文档地址:https://docs.spring.io/spring-ai/reference/api/chat-memory.html):AutowiredChatMemoryRepository chatMemor…

全景式综述|多模态目标跟踪全面解析:方法、数据、挑战与未来

【导读】 目标跟踪(Visual Object Tracking, VOT)一直是计算机视觉领域的核心问题之一,广泛应用于自动驾驶、无人机监控、人机交互等场景。随着单模态方法在复杂环境下逐渐遇到瓶颈,多模态视觉目标跟踪(Multi-Modal V…

怎么用pytorch训练一个模型,并跑起来

MNIST 手写数字识别 任务描述 MNIST 手写数字识别是机器学习和计算机视觉领域的经典任务,其本质是解决 “从手写数字图像中自动识别出对应的数字(0-9)” 的问题,属于单标签图像分类任务(每张图像仅对应一个类别&#x…

Qt应用程序发布方式

解决的问题:在自己电脑上用QT Creator编译的exe文件放到其他电脑上不能正常打开的问题。1、拷贝已经编译好的exe应用程序到桌面文件夹。桌面新建文件夹WindowsTest,并且将编译好的软件WindowTest.exe放入此文件夹中。2、在此文件夹空白处按住Shift再点击…

Linux 软件编程(九)网络编程:IP、端口与 UDP 套接字

1. 学习目的实现 不同主机之间的进程间通信。在 Linux 下,进程间通信(IPC)不仅可以发生在同一台主机上,也可以通过网络实现不同主机之间的通信。要做到这一点,必须同时满足以下两个条件:物理层面&#xff1…

5.Kotlin作用于函数let、run、with、apply、also

选择建议 需要返回值:使用 let、run 或 with配置对象:使用 apply附加操作:使用 also非空检查:使用 let链式调用:使用 let 或 run Kotlin作用域函数详解 概述 Kotlin提供了5个作用域函数:let、run、with、ap…

嵌入式学习日记(32)Linux下的网络编程

1. 目的不同主机,进程间通信。2. 解决的问题1). 主机与主机之间物理层面必须互联互通。2.) 进程与进程在软件层面必须互联互通。IP地址:计算机的软件地址,用来标识计算机设备 MAC地址:计算机的硬件地址&…

C#_接口设计:角色与契约的分离

2.3 接口设计:角色与契约的分离 在软件架构中,接口(Interface)远不止是一种语言结构。它是一份契约(Contract),明确规定了实现者必须提供的能力,以及使用者可以依赖的服务。优秀的接…

vsCode或Cursor 使用remote-ssh插件链接远程终端

一、Remote-SSH介绍Remote-SSH 是 VS Code 官方提供的一个扩展插件,允许开发者通过 SSH 协议连接到远程服务器,并在本地编辑器中直接操作远程文件,实现远程开发。它将本地编辑器的功能(如语法高亮、智能提示、调试等)与…

C语言实战:从零开始编写一个通用配置文件解析器

资料合集下载链接: ​https://pan.quark.cn/s/472bbdfcd014​ 在软件开发中,我们经常需要将一些可变的参数(如数据库地址、端口号、游戏角色属性等)与代码本身分离,方便日后修改而无需重新编译整个程序。这种存储配置信息的文件,我们称之为配置文件。 一、 什么是配置…

车机两分屏运行Unity制作的效果

目录 效果概述 实现原理 完整实现代码 实际车机集成注意事项 1. 显示系统集成 多屏显示API调用 代码示例(AAOS副驾屏显示) 2. 性能优化 GPU Instancing 其他优化技术 3. 输入处理 触控处理 物理按键处理 4. 安全规范 驾驶员侧限制 乘客侧…

vivo“空间计算-机器人”生态落下关键一子

出品 | 何玺排版 | 叶媛不出所料,vivo Vision热度很高。从21号下午发布到今天(22号),大众围绕vivo Vision探索版展开了多方面的讨论,十分热烈。从讨论来看,大家现在的共识是,MR行业目前还处于起…

Azure TTS Importer:一键导入,将微软TTS语音接入你的阅读软件!

Azure TTS Importer:一键导入,将微软TTS语音接入你的阅读软件! 文章来源:Poixe AI 厌倦了机械、生硬的文本朗读?想让你的阅读软件拥有自然流畅的AI语音?今天,我们将为您介绍一款强大且安全的开…

用过redis哪些数据类型?Redis String 类型的底层实现是什么?

Redis 数据类型有哪些? 详细可以查看:数据类型及其应用场景 基本数据类型: String:最常用的一种数据类型,String类型的值可以是字符串、数字或者二进制,但值最大不能超过512MB。一般用于 缓存和计数器 Ha…