大数据架构(二)大数据发展史

news2024/12/24 9:55:05

1.传统数仓发展史

传统数据仓库的发展史这里不展开架构细讲,只需快速过一遍即可。了解这个历史发展过程即可。

1.1 传统数仓历史

1.1.1 5个时代

 传统数仓发展史可以称为5个时代的经典论证战。按照两位数据仓库大师 Ralph kilmball、Bill Innmon 在数据仓库建设理念上碰撞阶段来作为小的分界线:

  • 1970~1991 数据仓库概念萌芽到全企业集成。

  • 1991~1994 EDW企业数据集成时代。Bill Innmon 博士出版了《如何构建数据仓库》,范式建模。

  • 1994~1996 数据集市时代。 Ralph Kimball 博士出版了《数据仓库工具箱》,里面非常清晰的定义了数据集市、维度建模。

  • 1996~1997 神仙大战时代(维度建模与范式建模争论)

  • 1998~2001 合并时代,CIF架构。Bill Innmon推出了新的BI架构CIF(Corporation information factory),把Kimball的数据集市也包容进来了,第一次,Kimball承认了Inmon。

1.1.2 经典争论

如果说,Hans Peter Luhn和Howard Dresner,一个为了文本挖掘,一个为了企业管理中的信息民主,而定义了BI(智能商业)的话。那么Bill Inmon 和Ralph Kimball,这2位大师则通过不同理念,设计技术和实施策略使BI从定义落地为真实。两位大师在1991-2001,引领了传统数仓发展的一个时代。

 Bill Innmon和Ralph kilmball论证的核心在于EDW(企业级数据仓库)和数据集市的建立先后顺序(也可以理解为范式建模和维度建模的争论)。

  • Bill Inmon 提出自上而下的建设原则(EDW->DM):提倡先数据模型创建企业级数据仓库EDW(3NF范式建模)后,再建数据集市(DM)。
  • Ralph kilmball 提出自下而上的建设原则(DM->EDW):提倡先创建数据集市,认为数据仓库是数据集市的集合,信息总是被存储在多维模型(维度建模)中。后期可根据需要来合并数据集市,并逐步形成企业级的数据仓库(EDW)。

两种方法的明细区别如下表(摘自网络):

1.2 传统数据仓库架构史

  伴随着kilmball和Innmon的经典争论,诞生了三代典型数据仓库架构(网上有些文章把Opdm操作型数据集市架构定义为第四代数据仓库架构,笔者不认可这一架构能和另外3个并列,故删之),分别是:

  • 企业级数据仓库架构(Enterprise Data Warehouse,EDW)-BIll Inmon
  • Kilmball DW/BI(Multidimensional Architecture,MD)-Ralph kilmball
  • 企业信息工厂架构(Corporate Information Factory,CIF)-BIll Inmon

1.2.1 企业级数据仓库架构(Enterprise Data Warehouse,EDW)-BIll Inmon

  90 年代 BIll Inmon 出版《如何构建数据仓库》一书体系化的与明确定义了如何构建数据仓库,这套方法在落地上形成了第一代数据仓库架构。书中定义:数据仓库(Data Warehouse) 是一个面向主题的(Subject Oriented) 、集成的( Integrate ) 、相对稳定的(Non -Volatile ) 、反映历史变化( Time Variant) 的数据集合,用于支持管理决策( Decision Marking Support)。具体如下图所示:

从左至右依次是数据源、数据清洗、数仓、应用。

核心原理:

  • 数据仓库是面向主题的。
  • 数据仓库是集成的,数据仓库的数据有来自于分散的操作型数据,将所需数据从原来的数据中抽取出来,进行加工与集成,统一与综合之后才能进入数据仓库。
  • 数据仓库是不可更新的,数据仓库主要是为决策分析提供数据,所涉及的操作主要是数据的查询。
  • 数据仓库是随时间而变化的,传统的关系数据库系统比较适合处理格式化的数据,能够较好的满足商业商务处理的需求,它在商业领域取得了巨大的成功

1.2.2 Kimball DW/BI架构(Multidimensional Architecture,MD)-Ralph kimball

  第二代就是 Kimball DW/BI架构。又称Multidimensional Architecture(MD)多维架构,或Bus Architecture总线架构。即从业务或部门入手,设计面向业务或部门主题数据集市。(网上大部分都说Kimball的数据集市架构,笔者不赞同。Kimball提倡的是维度建模、总线架构思想。Kimball架构甚至都不包含物理的数据集市,而是逻辑概念上的)Kimball DW/BI架构从流程上看是是自底向上的,即从数据集市到数据仓库(DM->DW)的一种敏捷开发方法。这种构建方式可以不用考虑其它正在进行的数据类项目实施,只要快速满足当前部门的需求即可,这种实施的好处是阻力较小且路径很短

  核心原理:一致性维度建模(总线型架构)+ 基于企业总线的数据仓库

  但是考虑到在实施中可能会存在多个并行的项目,是需要在数据标准化、模型阶段是需要进行维度归一化处理,需要有一套标准来定义公共维度,让不同的数据集市项目都遵守相同的标准,在后面的多个数据集市做合并时可以平滑处理。比如业务中相似的名词、不同系统的枚举值、相似的业务规则都需要做统一命名,这里在现在的中台就是全域统一ID之类的东西。具体如下图所示:

注意:kimball架构的数据仓库是没有实际存在数据集市的,如果非要区分,可以通过主题域划分获取自己的数据集市。(比如上图的维度数仓下的交易域数仓,可以理解为逻辑上的数据集市。预留数据集市飞机票//TODO)

1.2.3 企业信息工厂架构(Corporate Information Factory,CIF)-BIll Inmon

  第三代架构就是CIF架构,CIF强制引入了一层规范化的、原子的(满足第三范式)企业数据仓库EDW。这一层承担了数据协调和集成的职责。Inmon 模式从流程上看是自顶向下的,即从数据仓库再到数据集市的(DW->DM)。

  核心原理:Inmon EDW企业数仓(遵循3NF)+ 数据集市。具体如下图所示:

 

混合架构(CIF+Kimball,CIF2.0)

  混合架构是CIF架构的变种,可以认为是CIF2.0架构。BIll Inmon把Kimball的多维架构融入进来(据说Inmon很生气,没能说服Kimball,一气之下把Kimball架构也融进去了...)。并限定EDW不对外提供查询能力,其中的数据是维度的、原子的、以过程为中心的。这种架构主要适用于前期已经购入建设了原子级的EDW,但尚无法满足用户的灵活的分析需求,在这种情况下可以采用这种架构,算是一种无奈之举。 缺点很明显,EDW和维度数仓数据冗余造成资源浪费,架构复杂导致人力成本较高。

  核心原理:Inmon EDW企业数仓(遵循3NF)+ Kimball 维度数仓(一致性维度)

2. 大数据架构发展史

 根据大数据架构发展史,总结出历史发展如下图:

最终都会走向批流一体、湖仓一体的架构。

2.1 第一代:离线统计分析技术架构

特点:

1、数据源通过离线的方式导入到离线数仓中;
2、数据处理采用MapReduce、Hive、SparkSQL 等离线计算引擎。 架构及数据处理流程如下;

 

2.2 第二代:Lambda架构(离线+实时结合)--2011

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

2.3 第三代:Kappa架构(批流一体)--2014

  Lambda 架构虽然满足了实时的需求,但带来了更多的开发与运维工作,其架构背景是流处理引擎还不完善,流处理的结果只作为临时的、近似的值提供参考。 后来随着Flink等流处理引擎的出现,流处理技术很成熟了,这时为了解决两套代码的问题。 Linkedln 的 Jay Kreps 提出了 Kappa 架构,在实时计算中可以直接完成计算,也可以跟离线数仓一 样分层,取决于指标的复杂度,各层之间通过消息队列交互(多半是不分层的),Kappa 架构可以认为是 Lambda 架构的简化版(只要移除 Lambda 架构中的批处理部分即可)。Kappa 架构如下图所示:

2.4 第四代:基于MPP数据库的实时统一数仓架构---数仓增强-2017

  面对越来越强的OLAP数据分析需求,新一代高性能MPP数据库高速发展:2016年Clickhouse、2017年Doris相继面世。Flink(同步+计算)+Doris(同步+存储)的实时数仓架构流行起来。架构如下图所示:

2.5 第五代:基于数据湖实时数仓架构-数据湖增强(湖仓一体)-2019

数据湖最早是由Pentaho的创始人兼CTO, 詹姆斯·迪克森(James Dixon),在2010年10月纽约Hadoop World大会上提出来的。但再国内一直到19年三大数据湖开源后,才真正火起来。其中又以Flink+Iceberg应用范围最广。实现了计算的批流一体、存储的湖仓一体。架构如下图所示:

=====================================

透过数字化转型再谈数据中台(三):一文遍历大数据架构变迁史  松子(李博源)

Greenplum 实时数据仓库实践(1)——数据仓库简介

第一章 数据仓库和商业智能(二)

kimballgroup官网:The Kimball bus architecture and the Corporate Information Factory: What are the fundamental differences?

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

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

相关文章

吃透Redis面试八股文

Redis连环40问,绝对够全! Redis是什么? Redis(Remote Dictionary Server)是一个使用 C 语言编写的,高性能非关系型的键值对数据库。与传统数据库不同的是,Redis 的数据是存在内存中的&#xf…

Python Review 01

1、Anaconda Installation 使用Anaconda Navigator进行python环境管理,使用conda进行依赖管理。 2、Use of Jupyter 将代码写入一个个cell,代码文件由一个个cell组成,书写代码时就像一行一行在写笔记,这就是notebook的代码编辑环…

无宿主机权限情况下,获取pod的日志文件

如果没有宿主机权限,是无法访问宿主机及里边的文件的,但是如果想获取某些文件,如日志等如何操作呢? 整体思路:通过抓包工具,抓取websocket的的信息,然后把信息处理拼接后导出即可。 1、启动抓包工具 我这里使用的是charles抓包工具 2、打开对应pod的命令行窗口 3、抓…

基于灰度图像和小波图的双模态卷积神经网络在心血管疾病分类中的应用

目录 一、研究对象和ECG记录预处理 二、机器学习和LSTM 三、将一维ECG记录转换为二维图像 四、双模态CNN模型 五、性能评估 参考文献 一、研究对象和ECG记录预处理 本研究采用Chapman大学和Shaoxing人民医院(浙江大学医学院绍兴医院)收集的12导联…

领导力专题︱如何培养与提升领导力

本文内容结构 一、领导力的核心技能 1、完美领导者? 2、认识你的组织需要什么 3、不同层面领导力共有的特征和技能 4、你的个人行为准则 5、领导风格 6、创造个人影响力 7、完善自己的领导网络 二、领导力与领导者 1、领导力与组织环境 2、领导者还是管理…

2023/4/23总结

项目: 做出了个人信息界面,通过点击头像的方式: 然后就是点击头像可以选择文件(后面考虑是存储该文件到自己的文件夹还是只是加载该文件比较好)只是能选择文件,写了指定文件后缀名的代码但是好像没什么用…

如何将Edge插件迁移至Google?

问题描述: 因为无法访问谷歌,无法从谷歌插件市场下载插件 第一步:在电脑上找到插件地址 高亮部分:自己电脑上的用户名【不同用户可能会有所不同】 C:\Users\star-dream\AppData\Local\Microsoft\Edge\User Data\Default\Extensi…

rust的现状和未来发展

rust现状: Stack Overflow 的开发者调研显示只有 7% 的开发者在使用 Rust,对比 JavaScript、Python 等语言,使用 Rust 的开发者占比并不高;但从 2016 年开始,Rust 每年都是开发者最爱的编程语言。 根据 JetBrains 2021 年的调研报…

SSH远程访问及控制

文章目录 1.SSH远程管理1.1 SSH的概述1.2 OpenSSH服务器1.3 sshd_ config常用选项设置1.4 SSH端口、配置文件 2.配置OpenSSH服务端2.1 更改端口号2.2 用户登录控制 3.登录验证方式3.1 密码验证3.2 密钥对验证3.3 配置密钥对验证 5.TCP Wrappers访问控制5.1 TCPWrappers机制的基…

第37讲:Python if-elif-else流程控制语句核心概念以及案例演示

文章目录 1.流程控制的概念2.Python中代码块的相关注意事项3.if流程控制语句的语法格式4.if流程控制的简单使用4.1.单分支的if流程控制语句4.2.加else语句的if流程控制4.3.多分支的if流程控制4.4.多分支if代码优化 5.对象的布尔值6.if-else条件表达式6.1.if-else条件表达式语法…

String的那些事儿

String作为我们最常用的Java类之一,在日常开发过程中充当着重要角色?那么大家真的了解String吗?让我们一起看看下面的问题: String内存结构?对象存储在堆上还是栈上?一个String有多长?占内存多…

享元设计模式解读

目录 问题引进 展示网站项目需求 传统方案解决网站展现项目 传统方案解决网站展现项目-问题分析 享元模式基本介绍 基本介绍 享元模式的原理类图 对类图的说明 内部状态和外部状态 享元模式解决网站展现项目 应用实例要求 思路分析和图解(类图) 代码实现 享元模式…

创建一个 vue 3 项目

vue create projectNameVue CLI v5.0.8 ? Please pick a preset: ❯ Default ([Vue 3] babel, eslint)Default ([Vue 2] babel, eslint)Manually select featuresbabel : ES2015 and beyond。Babel 默认使用一组 ES2015 语法转换器,允许你使用新的语法&#xff0c…

vue2数据响应式原理(6) 处理数组特殊遍历

打开一直在写的案例 然后 找到src下的 dataResp.js 这里 我们Observer中 数数组和对象还是要分开处理 因为他们还是有所不同 我们修改 Observer 类代码如下 class Observer{constructor(value) {//相当于 给拿到的对象 其中的__ob__绑定 值为thsi,在类中用this 表示取实例本…

数据结构入门(C语言版)一篇文章教会你手撕八大排序

八大排序 排序的概念常见的排序算法排序算法的实现一、直接插入排序二、希尔排序三、选择排序四、堆排序五、冒泡排序六、快速排序1.递归写法①三位取中函数②hoare版本③挖坑法④前后指针版本⑥快排主函数 2.非递归写法 七、归并排序1.递归写法2.非递归写法 八、非比较排序1.基…

倾斜摄影三维模型顶层合并技术及其实现方法

倾斜摄影三维模型顶层合并技术及其实现方法 倾斜摄影三维模型由于数据量大、结构复杂,常常需要进行顶层合并,以便更好地应用到城市规划、土地管理和文化遗产保护等领域。本文将介绍倾斜摄影三维模型顶层合并技术及其实现方法。 1、什么是顶层合并 倾斜…

【安全与风险】普适计算中的安全与隐私研究

普适计算中的安全与隐私研究 日常生活的数字化无处不在的计算对移动社交媒体的影响讨论更便宜的存储和更强大的处理的影响移动和普适计算的影响有时候,惊奇另一个例子攻击模型贡献是什么?智能家居的案例研究本文的主要内容如何自学? 日常生活的数字化 …

第三章 使用 Maven:命令行环境

第一节 实验一:根据坐标创建 Maven 工程 Maven 核心概念:坐标 ①数学中的坐标 使用 x、y、z 三个**『向量』作为空间的坐标系,可以在『空间』中唯一的定位到一个『点』**。 ②Maven中的坐标 [1]向量说明 使用三个**『向量』在『Maven的仓…

不知道今天吃什么?今天吃什么 API 告诉你

引言 在现代社会,由于生活节奏加快和繁忙的工作日程,越来越多的人感到选择今天吃什么餐点是一项繁琐且令人困扰的任务。为了解决这个问题,许多人会求助于在线菜谱和美食博客等渠道,但是这些选项通常是繁琐和耗时的。 幸运的是&a…

聚观早报 | 马斯克称星舰1-2个月内准备再发射;推特撤下官媒标签

今日要闻:马斯克称星舰1-2个月内准备再发射;推特撤下「官媒」标签;Pixel Fold 折叠机型首次被泄露;蔚来员工曝半年加班500小时;苹果Mac Pro和Mac Studio无缘WWDC 马斯克称星舰1-2个月内准备再发射 美国当地时间 4 月 …