大家好,不管是离线数仓与实时数仓,建设的时候都少不了架构设计,今天来学习一下常见的架构及发展演变过程。

一、离线数仓大数据架构

1.数仓架构

    下面详细说明图中的各个组件及其所起的作用。图中显示的整个数据仓库环境包括操作型系统和数据仓库系统两大部分。ETL过程分成了抽取和转换装载两个部分。抽取过程负责从操作型系统获取数据,该过程一般不做数据聚合和汇总,但是会按照主题进行集成,物理上是将操作型系统的数据全量或增量复制到数据仓库系统的RDS中。转换、装载过程将对数据进行清洗、过滤、汇总、统一格式化等一系列转换操作,使数据转为适合查询的格式,然后装载进数据仓库系统的TDS中。传统数据仓库的基本模式是用一些过程将操作型系统的数据抽取到文件,然后另一些过程将这些文件转化成MySQL或Oracle这样的关系数据库的记录。最后,第三部分过程负责把数据导入进数据仓库。RDS(RAW DATA STORES)是原始数据存储的意思。将原始数据保存到数据仓库里是个不错的想法。ETL过程的bug或系统中的其它错误是不可避免的,保留原始数据使得追踪并修改这些错误成为可能。有时数据仓库的用户会有查询细节数据的需求,这些细节数据的粒度与操作型系统的相同。有了RDS,这种需求就很容易实现,用户可以查询RDS里的数据而不必影响业务系统的正常运行。这里的RDS实际上是起到了操作型数据存储(Operational Data Store,ODS)的作用,关于ODS相关内容本小节后面会有详细论述。TDS(TRANSFORMED DATA STORES)意为转换后的数据存储。这是真正的数据仓库中的数据。大量的用户会在经过转换的数据集上处理他们的日常查询。如果前面的工作做得好,这些数据将被以保证最重要的和最频繁的查询能够快速执行的方式构建。这里的原始数据存储和转换后的数据存储是逻辑概念,它们可能物理存储在一起,也可能分开。当原始数据存储和转换后的数据存储物理上分开时,它们不必使用同样的软硬件。传统数据仓库中,原始数据存储通常是本地文件系统,原始数据被组织进相应的目录中,这些目录是基于数据从哪里抽取或何时抽取建立(例如以日期作为文件或目录名称的一部分);转换后的数据存储一般是某种关系数据库。自动化调度组件的作用是自动定期重复执行ETL过程。不同角色的数据仓库用户对数据的更新频率要求也会有所不同,财务主管需要每月的营收汇总报告,而销售人员想看到每天的产品销售数据。作为通用的需求,所有数据仓库系统都应该能够建立周期性自动执行的工作流作业。传统数据仓库一般利用操作系统自带的调度功能(如Linux的cron或Windows的计划任务)实现作业自动执行。数据目录有时也被称为元数据存储,它可以提供一份数据仓库中数据的清单。用户通过它应该可以快速解决这些问题:什么类型的数据被存储在哪里,数据集的构建有何区别,数据最后的访问或更新时间等。此外还可以通过数据目录感知数据是如何被操作和转换的。一个好的数据目录是让用户体验到系统易用性的关键。查询引擎组件负责实际执行用户查询。传统数据仓库中,它可能是存储转换后数据的Oracle、MySQL等关系数据库系统内置的查询引擎,还可能是以固定时间间隔向其导入数据的OLAP立方体,如Essbase cube。用户界面指的是最终用户所使用的接口程序。可能是一个GUI软件,如BI套件的中的客户端软件,也可能就是一个浏览器。

2.数据集市架构
数据集市是按主题域组织的数据集合,用于支持部门级的决策。有两种类型的数据集市:独立数据集市和从属数据集市。

    独立数据集市集中于部门所关心的单一主题域,数据以部门为基础部署,无需考虑企业级别的信息共享与集成。

从属数据集市的数据来源于数据仓库。数据仓库里的数据经过整合、重构、汇总后传递给从属数据集市。

3.Inmon企业信息工厂架构

应用系统:这些应用是组织中的操作型系统,用来支撑业务。它们收集业务处理过程中产生的销售、市场、材料、物流等数据,并将数据以多种形式进行存储。操作型系统也叫源系统,为数据仓库提供数据。
ETL过程:ETL过程从操作型系统抽取数据,然后将数据转换成一种标准形式,最终将转换后的数据装载到企业级数据仓库中。ETL是周期性运行的批处理过程。
企业级数据仓库:是该架构中的核心组件。正如Inmon数据仓库所定义的,企业级数据仓库是一个细节数据的集成资源库。其中的数据以最低粒度级别被捕获,存储在满足三范式设计的关系数据库中。
部门级数据集市:是面向主题数据的部门级视图,数据从企业级数据仓库获取。数据在进入部门数据集市时可能进行聚合。数据集市使用多维模型设计,用于数据分析。重要的一点是,所有的报表工具、BI工具或其它数据分析应用都从数据集市查询数据,而不是直接查询企业级数据仓库。

4.Kimball数据仓库架构

Kimball与Inmon两种架构的主要区别在于核心数据仓库的设计和建立。Kimball的数据仓库包含高粒度的企业数据,使用多维模型设计,这也意味着数据仓库由星型模式的维度表和事实表构成。分析系统或报表工具可以直接访问多维数据仓库里的数据。在此架构中的数据集市也与Inmon中的不同。这里的数据集市是一个逻辑概念,只是多维数据仓库中的主题域划分,并没有自己的物理存储,也可以说是虚拟的数据集市。

5.混合型数据仓库架构

所谓的混合型结构,指的是在一个数据仓库环境中,联合使用Inmon和Kimball两种架构。从架构图可以看到,这种架构将Inmon方法中的数据集市部分替换成了一个多维数据仓库,而数据集市则是多维数据仓库上的逻辑视图。使用这种架构的好处是,既可以利用规范化设计消除数据冗余,保证数据的粒度足够细,又可以利用多维结构更灵活地在企业级实现报表和分析。

二、实时数仓Lambda 架构


Lambda 架构总共由三层系统组成:批处理层(Batch Layer),速度处理层(Speed Layer),以及用于响应查询的服务层(Serving Layer)。

在 Lambda 架构中,每层都有自己所肩负的任务。

批处理层 存储管理主数据集(不可变的数据集)和预先批处理计算好的视图。

批处理层 使用可处理大量数据的分布式处理系统预先计算结果。它通过处理所有的已有历史数据来实现数据的准确性。这意味着它是基于完整的数据集来重新计算的,能够修复任何错误,然后更新现有的数据视图。输出通常存储在只读数据库中,更新则完全取代现有的预先计算好的视图。

速度处理层 会实时处理新来的大数据。

速度层 通过提供最新数据的实时视图来最小化延迟。速度层所生成的数据视图可能不如批处理层最终生成的视图那样准确或完整,但它们几乎在收到数据后立即可用。而当同样的数据在批处理层处理完成后,在速度层的数据就可以被替代掉了。

Lambda 架构问题:

虽然 Lambda 架构使用起来十分灵活,并且可以适用于很多的应用场景,但在实际应用的时候,Lambda 架构也存在着一些不足,主要表现在它的维护很复杂。

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

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

三、实时数仓Kappa 架构



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

在 Kappa 架构中,需求修改或历史数据重新处理都通过上游重放完成。

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

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

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

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

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

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

四、混合架构

【美团 实时数仓架构(实时数据生产 + 实时分析引擎)】、
【阿里 流批一体架构(Lambda+Kappa)】
【基于MySQL、Canal、Kafka、Greenplum构建的实时数据仓库架构】

五、Lambda 架构与 Kappa 架构的对比

总结

架构设计不是为了设计出最牛逼技术方案,而是所设计方案是最切合业务场景与资源情况的。有时候牛逼技术方案会加大技术复杂程度与运维难度,需要投入更高成本驾驭它。因此我们选择的不是技术最牛逼方案,而且最切合我们实际情况技术架构。

在实时数仓架构设计时,主要是思考“是否数据集成流批一体、“是否存储层流批一体”、“是否 ETL 逻辑流批一体”、“是否 ETL 计算引擎流批一体”;权衡这几个一体带来问题,而设计出符合业务场景的实时数仓架构。

参考资料链接:
https://wxy0327.blog.csdn.net/article/details/121166024?spm=1001.2101.3001.6650.19&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-19.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-19.pc_relevant_paycolumn_v3&utm_relevant_index=25

数据仓库建设之数仓架构相关推荐

  1. 数仓架构的持续演进与发展 — 云原生、湖仓一体、离线实时一体、SaaS模式

    简介: 数据仓库概念从1990年提出,经过了四个主要阶段.从最初的数据库演进到数据仓库,到MPP架构,到大数据时代的数据仓库,再到今天的云原生的数据仓库.在不断的演进过程中,数据仓库面临着不同的挑战. ...

  2. 数仓建模—数仓架构发展史(02)

    发展史 时代的变迁,生死的轮回,历史长河滔滔,没有什么是永恒的,只有变化才是不变的,技术亦是如此,当你选择互联网的那一刻,你就相当于乘坐了一个滚滚向前的时代列车,开往未知的方向,不论什么样的技术架构只 ...

  3. 数据仓库介绍:什么是数据仓库、数据仓库功能、数据仓库价值、数仓领域职业发展方向规划

    数据仓库介绍:什么是数据仓库.数据仓库功能.数据仓库价值.数仓领域职业发展方向规划 大家好,本次分享的主题是数据仓库,通过本次分享的目的,一个是帮助到初次接触大数据行业.或者想要了解大数据体系的伙伴, ...

  4. ​爱奇艺的数仓架构​

    首先介绍一下爱奇艺公司整体的业务情况以及数据仓库 1.0 的设计和出现的问题,针对数仓 1.0 的缺陷,是如何演进到数仓 2.0 架构以及数仓 2.0 需要解决的问题和需要达成的目标. 这张图非常清晰 ...

  5. Apache Flink不止于计算,数仓架构或兴起新一轮变革

    作者 | 蔡芳芳 采访嘉宾 | 王峰(莫问) 维基百科的"Apache Flink"词条下,有这么一句描述:"Flink 并不提供自己的数据存储系统,但为 Amazon ...

  6. ML:阿里云计算平台之搜索推荐演讲分享《多场景智能推荐助力业务增长》、《阿里云智能推荐应用实践:PAI-EasyRec Framework》、《新一代数仓架构漫谈》

    ML:阿里云计算平台之搜索推荐演讲分享<多场景智能推荐助力业务增长>.<阿里云智能推荐应用实践:PAI-EasyRec Framework>.<新一代数仓架构漫谈> ...

  7. 数据仓库建设从0到1-一文带你深入建设金融数仓体系

    前言 本文讲述了金融数据仓库从无到有的整体设计思路,以及对数据建模.质量控制.元数据管理及开发规范各方面的经验思考,希望对大家在数仓建设工作方面有所帮助. 背景 自2018年以来,随着业务体系的不断丰 ...

  8. 数据仓库系列(四)数仓架构以及多维数据模型的设计

    文章目录 一.前言 二.数据仓库的定义 三.数据仓库的特点 四.数据仓库的作用 五.数据仓库的架构 六.数据仓库的要求 七 .数据仓库分层 八.数据仓库四个层次的划分 8.1 ODS层 8.2 PDW ...

  9. OushuDB入门(四)——数仓架构篇

    本实验将应用OushuDB数据库,为一个销售订单系统建立数据仓库.通过这个简单的示例,讨论如何利用OushuDB提供的特性,在Hadoop上建立数据仓库系统.本篇说明示例的业务场景.数据仓库架构.实验 ...

最新文章

  1. VTK:PolyData之PointNormals
  2. mysql忘记root密码解决办法
  3. node和npm版本更新
  4. Spring 事务 以及拦截器的前后关系实验 Mybatis 日志拦截
  5. 十强决赛即将拉开帷幕!TECHSPARK星星之火IT创新大赛诚邀您观赛
  6. Spring Boot笔记-get请求发送json数据(方便前端vue解析)
  7. 英伟达DALI加速技巧:让数据预处理速度比原生PyTorch快4倍
  8. ux.form.field.Year 只能选年的时间扩展
  9. 12种获取节点和元素的代码
  10. Node.js系列之node.js初探
  11. UVa 10400 记忆化搜索
  12. mysql 数据导出语句_mysql导出数据语句
  13. 专利服务器拒收 文件异常解压,电子申请专利常见错误总结.pdf
  14. css3-文字添加边框
  15. Android手机OCR+扫描APP
  16. Maven中dependencyManagement标签的作用
  17. angular Tabs (ui.bootstrap.tabs)
  18. TypeScript-基础类型学习
  19. 【Linux】scp命令基本使用
  20. 最美的时间你遇见了谁

热门文章

  1. 对待员工的4个阶段:我如何让员工过好自己的一生?
  2. 酰肼PEG酰肼,HZ-PEG-HZ
  3. 未认证公众号接入公众号支付
  4. linux gtx驱动程序,NVIDIA 430.09 Linux 驱动发布:支持 GTX 1650
  5. 创新创意ssm计算机毕业设计题目300例之java农村电商网站3252s
  6. 黄金避险有效?量化实测黄金资产与A股轮动真实收益
  7. 股票量化对冲策略的黄金时期要来了?
  8. 翁恺老师 | 城堡游戏解读
  9. 在被线上大量日志输出导致性能瓶颈毒打了很多次之后总结出的经验
  10. Mac/MacBookPro解决系统升级后运行卡顿问题(非配置问题)