数仓(Lambda/Kappa)架构

本文涉及的产品
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 1. 数仓相关概念2. 数据处理系统OLTP和OLAP3. OLAP分类4. 数仓分层(ODS, DWD,DWM,DWS, ADS)5. 离线数仓架构6. 实时数仓架构 Lambda和Kappa架构

1. 数仓与BI


  • 数据仓库(Data Warehouse)

数据仓库是一个各种数据的中心存储系统(包括历史数据和当前数据),是BI的核心组件。这里所说的数据包括来自企业内部的各种业务数据,例如订单,库存,交易流,账目,客户,供应商等,同时也包括从外部获取的各种数据,例如爬虫爬取的数据等。


  • BI 商业智能(Business Intelligence)

商业智能通常被理解为将企业中现有的数据转换为知识,帮助企业做合理的,明智的经营决策工具,是企业数字化转型的关键系统。为了将数据转化为知识,需要利用数据仓库,联机分析处理(OLAP)工具和数据挖掘等技术


  • 数仓和BI的关系

image.png


2. 数据处理系统


2.1 OLTP和OLAP的区别


  • 联机事务处理OLTP(on-line transaction processing)- 事务驱动

OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。

OLTP采用实体-联系ER模型和面向应用的数据库设计


  • 联机分析处理OLAP(On-Line Analytical Processing)- 分析驱动

OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。

OLAP采用星型或雪花模型和面向主题的数据库设计.



下表列出了OLTP与OLAP之间的比较:


OLTP OLAP

主要使用场景

在线业务服务

数据分析,挖掘,机器学习
涉及数据量 当前正在发生的业务数据

历史存档数据,可能时间跨度比较大

事务和数据完整性

对事务和数据一致性要求比较高

对事务能力没有要求,数据不一致也可重建数据

功能使用需求

简单的增删改查,要求相应极端

复杂的聚合和多数据源关联,查询执行时间可到分钟,小时,天级别

并发要求

高并发

低并发

技术实现方案

事务,索引,存储计算在一起

大量的scan,列式存储,存储计算可分离

数据模型/规约

关系模型,3NF范式

关系模型,维度模型,对范式要求低


总的来说,OLTP就是面向我们的应用系统数据库的,OLAP是面向数据仓库的。


image.png

2.2 OLTP和OLAP存储区别


⼀般来说OLTP数据库使⽤⾏式存储,OLAP数据库使⽤列式存储


  • OLAP场景下列式存储更具优势


image.png image.png


  • OLTP场景下行式存储更具优势


image.pngimage.png

2.3 OLAP分类

OLAP 是一种让用户可以用从不同视角方便快捷的分析数据的计算方法。

主流的 OLAP 可以分为3类:

多维 OLAP ( Multi-dimensional OLAP )、关系型 OLAP ( Relational OLAP ) 和混合 OLAP ( Hybrid OLAP ) 三大类。


  • MOLAP 的优点和缺点

MOLAP的典型代表是:Druid,Kylin,Doris,MOLAP一般会根据用户定义的数据维度、度量(也可以叫指标)在数据写入时生成预聚合数据;Query查询到来时,实际上查询的是预聚合的数据而不是原始明细数据,在查询模式相对固定的场景中,这种优化提速很明显。

MOLAP 的优点和缺点都来自于其数据预处理 ( pre-processing ) 环节。

数据预处理,将原始数据按照指定的计算规则预先做聚合计算,这样避免了查询过程中出现大量的即使计算,提升了查询性能。

但是这样的预聚合处理,需要预先定义维度,会限制后期数据查询的灵活性;如果查询工作涉及新的指标,需要重新增加预处理流程,损失了灵活度,存储成本也很高;同时,这种方式不支持明细数据的查询,仅适用于聚合型查询(如:sum,avg,count)。

因此,MOLAP 适用于查询场景相对固定并且对查询性能要求非常高的场景。如广告主经常使用的广告投放报表分析。


  • ROLAP 的优点和缺点

ROLAP的典型代表是:Presto,Impala,GreenPlum,Clickhouse,Elasticsearch,Hive,Spark SQL,Flink SQL

数据写入时,ROLAP并未使用像MOLAP那样的预聚合技术;ROLAP收到Query请求时,会先解析Query,生成执行计划,扫描数据,执行关系型算子,在原始数据上做过滤(Where)、聚合(Sum, Avg, Count)、关联(Join),分组(Group By)、排序(Order By)等,最后将结算结果返回给用户,整个过程都是即时计算,没有预先聚合好的数据可供优化查询速度,拼的都是资源和算力的大小。

ROLAP 不需要进行数据预处理 ( pre-processing ),因此查询灵活,可扩展性好。这类引擎使用 MPP 架构 ( 与Hadoop相似的大型并行处理架构,可以通过扩大并发来增加计算资源 ),可以高效处理大量数据。

但是当数据量较大或 query 较为复杂时,查询性能也无法像 MOLAP 那样稳定。所有计算都是即时触发 ( 没有预处理 ),因此会耗费更多的计算资源,带来潜在的重复计算。

因此,ROLAP 适用于对查询模式不固定、查询灵活性要求高的场景。如数据分析师常用的数据分析类产品,他们往往会对数据做各种预先不能确定的分析,所以需要更高的查询灵活性。


  • 混合 OLAP ( HOLAP )

混合 OLAP,是 MOLAP 和 ROLAP 的一种融合。当查询聚合性数据的时候,使用MOLAP 技术;当查询明细数据时,使用 ROLAP 技术。在给定使用场景的前提下,以达到查询性能的最优化。


3. 离线数仓


3.1 离线数仓架构


离线数仓特点:

数据源通过离线的方式导入到离线数仓中

数据处理采用MapReduce,Hive,SparkSql等离线计算引擎

离线数仓内部分层计算

通过OLAP引擎和数据服务,对外提供计算之后的数据


image.png


3.2 离线数仓分层


ADS(Application Data Store)层:应用数据层


DWS(Data Warehouse Summary)层:高度汇总数据层。从ODS层中对用户的行为做一个初步的汇总,抽象出来一些通用的维度:时间、ip、id,并根据这些维度做一些统计值,比如用户每个时间段在不同登录ip购买的商品数等。这里做一层轻度的汇总会让计算更加的高效,在此基础上如果计算仅7天、30天、90天的行为的话会快很多。我们希望80%的业务都能通过我们的DWS层计算,而不是ODS。


DWM(Data Warehouse Middle)层:中间层, 对明细数据按照常用的维度,做轻度汇总


DWD(Data Warehouse Detail)层:明细数据层。这一层主要解决一些数据质量问题和数据的完整度问题。比如用户的资料信息来自于很多不同表,而且经常出现延迟丢数据等问题,为了方便各个使用方更好的使用数据,我们可以在这一层做一个屏蔽。(汇总多个表)


ODS(Operational Data Store)层: 离线或准实时数据接入层


image.png

image.png


3.3 典型案例


image.png


4. 实时数仓-Lambda架构

4.1 Lambda架构


image.png


image.png


image.png


4.2 Lambda架构的缺陷


  • 使用两套大数据处理引擎,如果两套大数据处理引擎的API不同,有任何逻辑上的改动,需要在两边同步更新,维护成本高,后期的迭代时间周期长。
  • 早期流处理层的结果只是近似准确。


5. 实时数仓-Kappa架构



Kafka的创始人Jay Kreps认为在很多场景下,维护一套Lambda架构的大数据处理平台耗时耗力,于是提出在某些场景下,没有必要维护一个批处理层,直接使用一个流处理层即可满足需求,即下图所示的Kappa架构。


5.1 Kappa架构


image.png


image.png

5.2 Kappa架构重处理过程

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

Kappa架构最⼤的问题是流式重新处理历史数据的吞吐能⼒会低于批处理,但这个可以通过增加计算资源来弥补。


重新处理是⼈们对Kappa架构最担⼼的点,但实际上并不复杂:

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


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


  • 3. 当新作业赶上进度后,应⽤切换数据源,读取2中产⽣的新结果表。 4. 停⽌⽼的作业,删除⽼的结果表


6. Lambda vs Kappa架构


image.png


7. 离线数仓 vs 实时数仓


image.png







相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
3月前
|
存储 SQL 缓存
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
快手 OLAP 系统为内外多个场景提供数据服务,每天承载近 10 亿的查询请求。原有湖仓分离架构,由离线数据湖和实时数仓组成,面临存储冗余、资源抢占、治理复杂、查询调优难等问题。通过引入 Apache Doris 湖仓一体能力,替换了 Clickhouse ,升级为湖仓一体架构,并结合 Doris 的物化视图改写能力和自动物化服务,实现高性能的数据查询以及灵活的数据治理。
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
|
4月前
|
存储 边缘计算 运维
实时数仓Hologres发展问题之实时数仓对Lambda架构的问题如何解决
实时数仓Hologres发展问题之实时数仓对Lambda架构的问题如何解决
74 2
|
1月前
|
消息中间件 Java Kafka
实时数仓Kappa架构:从入门到实战
【11月更文挑战第24天】随着大数据技术的不断发展,企业对实时数据处理和分析的需求日益增长。实时数仓(Real-Time Data Warehouse, RTDW)应运而生,其中Kappa架构作为一种简化的数据处理架构,通过统一的流处理框架,解决了传统Lambda架构中批处理和实时处理的复杂性。本文将深入探讨Kappa架构的历史背景、业务场景、功能点、优缺点、解决的问题以及底层原理,并详细介绍如何使用Java语言快速搭建一套实时数仓。
155 4
|
2月前
|
分布式计算 大数据 Serverless
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
在2024云栖大会开源大数据专场上,阿里云宣布推出实时计算Flink产品的新一代向量化流计算引擎Flash,该引擎100%兼容Apache Flink标准,性能提升5-10倍,助力企业降本增效。此外,EMR Serverless Spark产品启动商业化,提供全托管Serverless服务,性能提升300%,并支持弹性伸缩与按量付费。七猫免费小说也分享了其在云上数据仓库治理的成功实践。其次 Flink Forward Asia 2024 将于11月在上海举行,欢迎报名参加。
240 6
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
|
1月前
|
存储 SQL 缓存
AnalyticDB 实时数仓架构解析
AnalyticDB 是阿里云自研的 OLAP 数据库,广泛应用于行为分析、数据报表、金融风控等应用场景,可支持 100 trillion 行记录、10PB 量级的数据规模,亚秒级完成交互式分析查询。本文是对 《 AnalyticDB: Real-time OLAP Database System at Alibaba Cloud 》的学习总结。
65 1
|
2月前
|
存储 SQL 分布式计算
湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
【10月更文挑战第7天】湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
149 1
|
2月前
|
存储 SQL 缓存
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
|
4月前
|
Cloud Native Serverless 异构计算
Serverless 架构问题之AWS Lambda在容器镜像层面的进展如何解决
Serverless 架构问题之AWS Lambda在容器镜像层面的进展如何解决
50 0
|
19天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
28天前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
42 3