数据仓库架构演变

数据库架构演变过程 背景 在互联网初创时期,企业往往采用单体架构去搭建自己的应用系统,但是,随着企业的不断壮大,系统访问量不断随之上升,数据量也急剧增长。数据的存储是首先要解决的问题,在这个大数据时代,数据就是企业的命根子,数据库的单体架构很难满足数据的存储,这时,我们要对数据进行切分,数据的切分又分为垂直切分和水平切分。 数据切分和数据库架构 在数据切分之前,我们的所有业务都放在一个数据库中,比如:我们的用户业务,... 阅读详情

目录

数仓架构演变

离线大数据架构

数据仓库分层

Lambda架构

Lambda架构存在的问题

Kappa架构

Kappa架构典型案例

Kappa架构的重新处理过程

Lambda架构和Kappa架构的对比

实时数仓和离线数仓


数仓架构演变

数据仓库概念是Inmon于1990年提出并给出了一个完整的建设方法,随着互联网时代来临,数据量暴增,开始使 用大数据工具来替代经典数仓中的传统工具。 此时仅仅是工具的取代,架构上并没有根本 的区别,可以把这个架构叫做离线大数据架构。

后来随着业务实时性要求的不断提高,人们 开始在离线大数据架构基础上加了一个加速 层,使用流处理技术直接完成那些实时性要 求较高的指标计算,这便是Lambda架构。

再后来,实时的业务越来越多,事件化的数据 源也越来越多,实时处理从次要部分变成了主 要部分,架构也做了相应调整,出现了以实时 事件处理为核心的Kappa架构。

离线大数据架构

特点:

  • 数据源通过离线的方式导入到离线数仓中
  • 数据处理采用MapReduce、Hive、SparkSQL等离线计算引擎

数据仓库分层

  • ODS(Operation Data Store)层:原始数据层,存放加载原始日志、数据,数据保持原貌不做处理。
  • DWD(Data warehouse detail)层:对ODS层数据进行清洗(去除空值,超过极限范围的数据)、维度退化、脱敏等。
  • DWS(data warehouse service)层:以DWD为基础,按天进行轻度汇总。
  • DWT(data warehouse Topic)层:以DWS为基础,按主题进行汇总。
  • ADS(Application Data Store)层:为各种统计报表提供数据。

Lambda架构

随着大数据应用的发展,人们逐渐对 系统的实时性提出了要求,为了计算 一些实时指标,就在原来离线数仓的 基础上增加了一个实时计算的链路, 并对数据源做流式改造(即把数据发 送到消息队列),实时计算去订阅消 息队列,直接完成指标增量的计算, 推送到下游的数据服务中去,由数据服务层完成离线&实时结果的合并。

流处理计算的指标批处理依然计 算,最终以批处理为准,即每次 批处理计算后会覆盖流处理的结 果。(这仅仅是流处理引擎不完 善做的折中)。

实时计算链路内部是否分层,取决 于指标的复杂度,各层之间通过消 息队列交互(多半是不分层的)。

Lambda架构存在的问题

  • 同样的需求需要开发两套一样的代码

这是最大的问题,两套代码不仅仅意味着开发困难(同样的需求,一个在批处理引擎上实现,一个在流处理引擎上实现,还要分别构造数据测试保证两者结果一致),后期维护更加困难,比如需求变更后需要分别更改两套代码,独立测试结果,且同时上线。

  • 资源占用增多

同样的逻辑计算两次,整体资源占用会增多(多出实时计算这部分)

  • 实现链路和离线链路数据差异容易让业务方困惑

例如业务方会发现,次日看到的数据比昨晚看到的要少。原因在于:数据在被放入Result Database  时,走了两条线的计算方式:一条线是ETL按照某个口径“跑”过来,得到更为准确的批量处理结果;  另一条线是通过Streaming“跑”过来,依靠Hadoop Hive或其他算法得出的实时性结果。当然它牺牲 了部分的准确性。可见,这两个来自批量的和实时的数据结果是对不上的。

Kappa架构

Lambda架构虽然满足了实时的 需求,但带来了更多的开发与 运维工作,其架构背景是流处 理引擎还不完善,流处理的结 果只作为临时的、近似的值提 供参考。后来随着Flink等流处 理引擎的出现,流处理技术很 成熟了,这时为了解决两套代 码的问题, Linkedln 的Jay  Kreps提出了Kappa架构。

Kappa架构可以认为是Lambda架构的简化版(只要移除lambda架构中的批处理部分即可)

可以直接完成计算,也可以跟离线 数仓一样分层,取决于指标的复杂 度,各层之间通过消息队列交互(多 半是不分层的)

Kappa架构典型案例

Kappa架构来构建数仓是妥妥的实时数仓,每个需求都自己开发流处理代码比较繁琐,一个较好的办法是借助OLAP引 擎,主流的引擎如下(个别的严格意义上来说不是OLAP引擎,但是具备相应功能):

Kappa架构的重新处理过程

在Kappa架构中,及时流处理引擎在健壮,由于上有数据原因,仍存在数据重新处理的需求,修改数据或历史数据重新处理都通过上游重放完成(从数据源拉取数据重新计算一次)。

Kappa架构最大的问题是:流式重新处理历史数据的吞吐能力会低于批处理,但这个可以通过增加计算资源来弥补,重新处理时对Kappa架构最担心的点,但实际上并不会复杂。

1.选择一个具有重放功能的、能够保存历史数据并支持多消费者的消息队列,根据需求设置历史数据保存的 时长,比如Kafka,可以保存全部历史数据。

2.当某个或某些指标有重新处理的需求时,按照新逻辑写一个新作业,然后从上游消息队列的最开始重新消 费,把结果写到一个新的下游表中。

3.当新作业赶上进度后,应用切换数据源,读取2中产生的新结果表。

4.停止老的作业,删除老的结果表。

Lambda架构和Kappa架构的对比

对比LambdaKappa
实时性实时实时
计算资源批和流同时运行,资源消耗大只有流处理,资源开销小
重新计算吞吐量批式全量处理,吞吐较高流式全量处理,吞吐较批式全量要低一 些
开发、测试难度每个需求都需要批处理和流处理两套代 码,开发、测试、上线难度大一些只需实现一套代码,开发、测试、上线 难度相对较小
运维成本维护两套系统(引擎),运维成本大维护一套系统(引擎),运维成本较小

 

 

 

 

 

 

 

 

 

 

实时数仓和离线数仓

  • 从架构上,实时数仓与离线数仓有比较明显的区别,实时数仓以Kappa架构为主,而 离线数仓以传统大数据架构为主。Lambda架构可以认为是两者的中间态。目前业界所说的实 时数仓大多是Lambda架构,这是由需求决定的。
  • 从建设方法上,实时数仓和离线数仓基本还是沿用传统的数仓主题建模理论,产出 事实宽表。另外实时数仓中实时流数据的join有隐藏时间语义,在建设中需注意。
  • 最后,从数据保障看,实时数仓因为要保证实时性,所以对数据量的变化较为敏感。在大 促等场景下需要提前做好压测和主备保障工作,这是与离线数据的一个较为明显的区别。

实际业务中,很多时候并不是完全规范的Lambda架构或者Kapa架构,可以是两者的混合,比如大部分实时指标使用Kappa架构完成计算,少量关键指标(比如金融相 关)使用Lambda架构用批处理重新计算,增加一次校对过程。

离线大数据架构在很多公司仍然比较实用(性价比高)

monocle3-单细胞轨迹分析在疾病研究中的应用 本文深入探讨了monocle3在单细胞轨迹分析中的核心应用,特别是在疾病研究领域。通过实战案例,详细讲解了如何利用monocle3进行轨迹推断,构建细胞状态演变的“路线图”,并结合伪时间分析定位疾病进展阶段。文章还介绍了如何挖掘驱动疾病发展的关键基因,并分享了数据整合、根节点选择等进阶技巧与避坑指南,旨在帮助研究者利用这一强大工具揭示肿瘤异质性、免疫治疗耐药等复杂生物学过程的动态机制。 阅读详情

相关推荐

第二十三章 Nest集成日志框架Winston

Winston是一个非常流行的Node.js日志框架,而Nest.js是一个基于Node.js的后端框架。修改 winston.module.ts 内容如下 添加 forRoot 方法,接收 winston 的 createLogger 方法的参数,返回动态模块的 providers、exports。这里用到了 printf 的 format 函数,它可以自定义打印的日志格式 且使用了chalk 加上了颜色,并且打印了 dayjs 格式化的时间。可以看到控制台打印了自定义的 logger 的自定义。

枫ゞ的博客 1069

用Flink取代Spark Streaming!知乎实时数仓架构演进

简介:实时数仓 1.0 版本,主题:ETL 逻辑实时化,技术方案:Spark Streaming。实时数仓 2.0 版本,主题:数据分层,指标计算实时化,技术方案:Flink Streaming。实时数仓未来展望:Streaming SQL 平台化,元信息管理系统化,结果验收自动化。 作者 | 知乎数据工程团队 “数据智能” (Data Intelligence) 有一个必须且基础的环节,就...

u011250186的博客 440

RT-Thread Studio使用笔记(四):带片外Flash(W25Q128)的OTA(YModem)

前言 在学习OTA之前,请先参考上两篇博客写的关于SPI设备及W25Q128的使用方法,传送门: https://blog.youkuaiyun.com/tigerots/article/details/107423633 https://blog.youkuaiyun.com/tigerots/article/details/107933991 如何使用OTA 一. 制作BootLoader 打开Bootloader 在线获取地址,注册,并根据RT-thread官方文档生成BootLoader,官方文档已经写的很清楚,再此

tigerots的专栏 4008

数仓架构演进

数仓架构演进3.0

aaaak_的博客 2053

XIAO ESP32S3 Sense摄像头与麦克风实战:从硬件连接到AI语音视觉项目

本文详细介绍了如何使用Seeed Studio XIAO ESP32S3 Sense开发板进行AI语音视觉项目开发。从硬件连接到Arduino环境搭建,再到摄像头拍照、视频流传输、麦克风录音等实战操作,最后引导读者探索基于TensorFlow Lite Micro的语音唤醒和SenseCraft AI的图像识别等AI应用,为物联网和边缘AI项目提供了完整的入门指南。

xray4的博客 1022

LVGL项目内存告急?试试把中文字库放到SD卡里(基于LvglFontTool V0.5)

本文详细介绍了在LVGL嵌入式项目中如何通过将中文字库存储到SD卡来优化内存使用。针对Flash资源有限的MCU,如STM32F103,提供了基于LvglFontTool V0.5的外部字库生成与动态加载方案,适用于多字号、多语言及OTA场景,显著减少固件体积并提升显示灵活性。

weixin_33726318的博客 456

实时数仓之实时数仓架构(理论篇)

ODS(Operational Data Store,原始数据存储)层是数据仓库架构中的一个重要组成部分,主要用于存储来自操作性系统的原始、细节级别的数据,完整的ODS层可以分解成两个部分,一个是接入数据组件,另一个是持久存储组件。ODS数据不对外提供服务。接入数据:承接数据源数据,数据格式和数据类型与数据源保持不变;通过消息队列保存数据,数据直接对下游可见;持久存储:原始数据备份,数据格式和数据类型与数据源保持不变,对下游不可见,涉及数据修复可回流接入数据区;

道可道非常道 5709

机器人外接 USB 音响完整配置指南

摘要:本文介绍了为机器人配置外接音响的方法。由于内置音响音量小且有散热噪音,建议使用Type-C接口外接音响。配置步骤包括:1)通过aplay -l命令查看音响端口信息;2)使用aplay命令测试音频播放;3)通过amixer命令设置音量。关键点在于正确识别音响的卡号(如card 2)和设备号(如device 0),并在命令中准确配置这些参数即可实现外接音响的正常使用。

m0_47999117的博客 356

数据仓库架构-实时数仓演进

1 L离线数仓架构 数据仓库从模型层面分为三层: ODS,操作数据层,保存原始数据; DW,数据仓库明细层,根据主题定义好事实与维度表,保存最细粒度的事实数据; DM,数据集市/轻度汇总层,在DWD层的基础之上根据不同的业务需求做轻度汇总; 典型的数仓存储是HDFS/Hive,ETL可以是MapReduce脚本或HiveSQL。 2 Lambda架构 随着大数据应用的发展,人们逐渐...

haungtan07的博客 1096

在 ABAP Push Channel 里玩转 Detached Client:用 Attach Handle 把 WebSocket 连接交接给业务逻辑

摘要:本文介绍了ABAP Push Channels (APC)中的Detached Client技术,该技术通过将WebSocket连接建立与后续处理分离,实现更高效的实时通信。核心流程包括创建连接、使用connect_and_detach交接连接、以及通过attach handle重新附着发送消息。文章还探讨了PCP协议和AMC技术在企业级推送场景中的应用,并通过示例代码展示了Detached Client的具体实现方式。这种设计解决了传统轮询的资源浪费问题,特别适用于生产线监控、客服系统等需要服务端主

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2314

【系统分析师】2009年真题:综合知识-答案及详解

在某银行业务的用例模型中,“取款”用例需要等到“存款”用例执行之后才能执行,两个用例之间的关系属于(1);“取款”和“存款”两个用例中都需 要执行查询余额的功能,将查询余额提取成独立的用例,那么“取款”和“存款” 用例与“查询余额”用例之间的关系属于(2)。(1)A. 关联关系 B. 扩展关系 C. 使用关系 D. 依赖关系 (2)A. 扩展关系 B. 使用关系 C. 依赖关系 D. 继承关系【参考答案】D、A雇员类含有计算报酬的行为,利用面向对象的(3),可以使得其派生类专职 雇员类和兼职雇员类计算报酬的

数据知道的博客 1万+

一文了解实时数据仓库的发展、架构和趋势

数据处理现状:当前基于Hive的离线数据仓库已经非常成熟,数据中台体系也基本上是围绕离线数仓进行建设。但是随着实时计算引擎的不断发展以及业务对于实时报表的产出需求不断膨胀,业界最近几年就一...

过往记忆大数据 2188

大模型在电力交易功率预测中的应用:短期,超短期,中长期的完整解决方案代码详解

本文介绍了基于大模型的电力交易功率预测系统,该系统覆盖超短期(15分钟-1小时)、短期(1-6小时)和中长期(1天-1月)三个时间尺度。文章详细阐述了数据准备与特征工程,包括多源数据集成和特征重要性分析。在模型构建方面,采用了Temporal Fusion Transformer (TFT)模型进行超短期预测,Informer模型进行短期预测,以及N-HiTS模型进行中长期预测。此外,文章还探讨了概率预测与风险分析,并介绍了模型部署与交易策略集成的实现。最后,文章总结了系统的贡献,并展望了未来发展方向,如市

专注AI大模型,软件混淆,授权 1261

浅谈数据仓库的架构及其演变

其主要功能是作为数据进入数据仓库的缓冲区域,在这一层可以对数据进行简单的清洗和转换操作,比如去除明显的噪声数据、统一数据格式等,但不会进行复杂的数据处理。在这个阶段,企业开始将实时流式数据与批处理数据进行整合,并建立一个实时化的、可扩展的、高性能的实时数据仓库。,就会以分析对象为建模驱动,把DWD清理好的一些表进行跨关联,建立面向业务主题的大宽表模型,为应用层提供统一的计算口径和数据标准,提高效率。中,需要将数据仓库ODS层的原样数据按照主题去建立相应的数据模型,对数据进行统一的清洗和一致性处理。

oOBubbleX的博客 1941

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

数据库架构演变

1、单机时代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。 上述架构下,我们来看看数据存储的瓶颈是什么? 1.数据量的总大小 一个机器放不下时 2.数据的索引(B+ Tree)一个机器的内存放不下时 3.访问量(读写混合)一个实例不能承受 综合上述几个问题,数据库出现了演变! 2、Memcache...

千手修罗之乐少的博客 4111

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

数据库架构的演变

最近看了很多公司架构的演变的文章,发现其中的基本思路和架构演变都很类似,这里也总结一下数据库架构的演变以及演变背后的思路。 单主机 最开始网站一般都是由典型的LAMP架构演变而来的,一般都是一台linux主机,一台apache服务器,php执行环境以及mysql服务器,一般情况下,这些都在一台虚拟主机上,简称单主机模式。 单主机模式缺点: 1 web服务器和mysql服务器公用一台主机

it_man的专栏 4143

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数据库的架构演变、Nosql 、以及redis

一 Nosql 1、什么是NoSql Nosql的意思是Not Only Sql,不仅仅是sql。 随着互联网的发展,数据类型多种多样(有文字,图片,视频,音频等等)类型的数据,而且数据量非常多,传统的数据库(关系型数据库,MySql,ORACLE,DB2,Sql Server)无法解决这些问题(数据的存储和高效读取问题),就促进了Nosql的发展。 Nosql中存储数据没有固定的格式,而...

qq_44775798的博客 496
上一篇: 累计型快照事实表——订单优惠表使用
下一篇: Flume知识点详解总结
Poolweet_
博客等级 码龄7年 21粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值