数据仓库的发展历程

数据仓库的概念可以追溯到20世纪60年代,但真正形成理论并被企业广泛应用还需要一个较长的发展过程。大致可以分为以下几个阶段:

  1. 决策支持系统(DSS)时期(1960s-1970s) 这一时期,随着管理信息系统(MIS)和电子计算机的兴起,企业开始尝试构建面向决策的数据处理系统。最初的决策支持系统主要依赖文件系统或小型数据库,并没有统一的数据模型和工具支持。
  2. 数据仓库概念的提出(1980s) 1988年,Inmon提出了"数据仓库"(Data Warehouse)的概念,正式将数据仓库与在线事务处理系统(OLTP)区分开来。他将数据仓库定义为"面向主题的、集成的、相对稳定的、反映历史数据的数据集合,用于支持管理决策过程。" 同年,Codd等人提出了关系型数据仓库的模型。这标志着数据仓库概念的正式形成。
  3. 数据仓库理论和实践的发展(1990s) 90年代,数据仓库的理论和实践得到快速发展。提出了星型模式、雪花模式等维度建模方法;发展了OLAP、数据挖掘等分析技术;涌现了数据集成、ETL等关键技术。 同时,数据仓库的商业应用逐渐兴起,出现了专门的数据仓库产品和工具。
  4. 商业智能(BI)和大数据时代(2000s至今) 2000年后,企业的商业智能需求快速增长。数据仓库发展成为支撑BI应用的关键平台。同时也融入了大数据、云计算等新技术。 此阶段数据仓库的应用范围不断扩大,从制造、金融等传统领域,延伸到电信、医疗、交通等新兴行业。分析内容也不断丰富,如实时分析、预测分析、机器学习等前沿技术的引入。
  5. 主要技术里程碑:
  • 1990年,Inmon提出了数据仓库的"企业数据总线"架构
  • 1991年,Kimball提出了维度建模思想,发表了数据仓库工具箱著作
  • 1993年,Arbor Software推出了Essbase OLAP引擎
  • 1995年,Inmon提出了数据营地(Datamart)的概念
  • 1996年,Mattison出版了"数据仓库设计实战"
  • 2000年,Kimball提出了"现代数据仓库"理论
  • 2008年,Hadoop分布式系统问世,推动大数据分析
  • 2011年,Kleppmann提出数据大屁股(Data Vault)建模方法
  • 2012年,Snowflake推出首个云数据仓库

架构演变

经典数仓架构

经典数仓架构(Inmon企业数据总线架构) - 20世纪90年代初 这是数据仓库最初的标准架构,由Inmon在1992年首次提出。当时的需求是将分散的运营数据集中到一个总线式架构中,用于决策分析。这种集中式架构确实满足了当时的需求,但也存在ETL过程开销大、扩展性差的问题。

数据集市

为了解决经典架构的扩展性问题,Kimball于1996年提出了分布式的数据马场架构。这种以过程为中心的架构,允许每个部门或主题区域独立构建数据马场,适合大型企业异构环境。但分散的特性也导致数据一致性较差。

离线大数据Lambda架构

随着大数据时代的到来,企业需要处理日益增长的大规模数据。为此,Nathan Marz于2011年提出了Lambda架构,将离线批处理与实时速度层相分离,以分布式方式高效处理大数据。这种复杂但可靠的架构成为大数据领域的标准。

Kappa架构

2014年左右 为了进一步简化Lambda架构的复杂性,Jay Kreps等人提出了Kappa架构理念。它取消了批处理和速度层的分离,所有数据均通过流处理管道写入数据湖。这种基于流处理的架构在延迟和扩展性方面更有优势。

湖仓架构(Data Lakehouse)

2019年前后 随着开源大数据框架(如Spark)性能的提升,以及云计算的普及,出现了将数据仓库构建于数据湖之上的湖仓架构。它结合了数据湖的低成本存储和数据仓库的结构化处理优势,成为新的最佳实践之一。

湖仓一体架构

这是最新提出的数据架构模式,由Databricks等公司推动。它在湖仓架构基础上进一步整合了数据管道和处理引擎,使得单个统一平台即可支持数据湖、数据仓库、实时分析等多种工作负载。这种简化的架构更加灵活高效。

每一次新架构的出现,都是为了更好地适应新的技术发展(如大数据、实时处理、云计算等)和企业需求的变化。总的演进方向是向着更高性能、更低延迟、更低成本、更加灵活和统一的架构模式发展。未来还可能会有新的架构出现,以应对人工智能、边缘计算等新兴需求。

总的来说,数据仓库经历了从概念提出到理论发展,再到工程实践和产品化的过程。随着大数据、云计算、人工智能等新技术的融入,数据仓库正在向更加智能化、自动化的方向发展,为企业的数字化转型提供坚实的分析基础。

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

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

相关文章

python批量转化pdf图片为jpg图片

1.把pdf图片批量转为jpg;需要注意的是,需要先安装poppler这个软件,具体安装教程放在下面代码中了 2.代码 #poppler安装教程参考:https://blog.csdn.net/wy01415/article/details/110257130 #windows上poppler下载链接&#xff1a…

从零开始机器学习(机器学习 监督学习之线性回归 损失函数及可视化 梯度下降 线性回归的平方误差损失函数 lab实验)

文章目录 机器学习定义监督学习之线性回归损失函数及可视化梯度下降线性回归的平方误差损失函数lab实验 机器学习定义 机器学习就是机器通过不断训练数据集从逐渐知道正确的结果 机器学习包括监督学习和非监督学习 监督学习:需要输入数据和结果数据来不断训练学习…

Java-常见面试题收集(八)

十五 JDBC 1 JDBC 访问数据库的基本步骤 加载驱动,通过 DriverManager 对象获取连接对象 Connection,通过连接对象获取会话,通过会话进行数据的增删改查封装对象,关闭资源 2 PreparedStatement 和 Statement 的区别 PreparedSta…

linux0.11中jmpi 0,8解析

系统在执行该行代码时已经为保护模式, jmpi 0,8会将段选择子(selector)载入cs段寄存器,并计算出逻辑地址。 段选择子的结构如下: 段选择子包括三部分:描述符索引(index)、TI、请求特权级(RPL)。…

SpringMVC常见面试题

1:Spring mvc执行流程 回答: 版本1:视图版本,jsp 用户发送出请求到前端控制器DispatcherServletDispatcherServlet收到请求调用HandlerMapping(处理映射器)HandlerMapping找到具体的处理器,生成处理器对象及处理器拦…

ajax的优缺点有哪些?

我们先来介绍一下什么是ajax: 对于ajax的理解,ajax是一种使用现有技术集合技术内容包括: HTML或XHTML、CSS、 JavaScript、DOM、XML、 XSLT, 以及最重要的XMLHttpRequest。 用于浏览器与服务器之间使用异步数据传输(HTTP请求),做…

二十四种设计模式与六大设计原则(一):【策略模式、代理模式、单例模式、多例模式、工厂方法模式、抽象工厂模式】的定义、举例说明、核心思想、适用场景和优缺点

目录 策略模式【Strategy Pattern】 定义 举例说明 核心思想 适用场景 优缺点 代理模式【Proxy Pattern】 定义 举例说明 核心思想 适用场景 优缺点 单例模式【Singleton Pattern】 定义 举例说明 核心思想 适用场景 优缺点 多例模式【Multition Pattern】…

C# 微软官方学习文档

链接:https://learn.microsoft.com/zh-cn/dotnet/csharp/ 在C#的学习过程中,我们可以参考微软官方的学习文档。它是一个免费的学习平台,提供了丰富的C#学习路径和教程(如下图),对我们入门到高级应用开发都…

PhpWord导入试题

规定word导入格式 1、[单选题][2024][一般]题目1 A.选项1 B.选项2 C.选项3 D.选项4 答案:D 试题图片(上传多媒体图片): 分数:2 答案解析: 2、[多选题][2024][困难]题目2 A.选项1 B.选项2 C.选项3 D.选项4 E…

专升本-人工智能(AI)

人工智能(AI): 什么是人工智能:(总结:感知,获取,得出(结论,执行)) 运用数理逻辑和计算机成果,提供关于形式化计算和处理…

Math常用方法,什么是math?

首先我们先来介绍一下什么是math? Math是一个内置对象,具有数学常数和函数的属性和方法,不是一个函数对象, 数学是一个内置对象,具有数学常数和函数的属性和方法,不是一个函数对象Math适用于Number类型&…

微服务篇-C 深入理解第一代微服务(SpringCloud)_VIII 深入理解Bus消息总线

原创作者:田超凡(程序员田宝宝) 版权所有,引用请注明原作者,严禁复制转载 Part 1 理论部分 1 配置文件如何刷新? 在SpringCloud中,配置文件的刷新有手动刷新和实时刷新两种方式。 手动刷新使…

Hive详解(4)

Hive 窗口函数 分析函数 聚合函数,例如sum,avg,max,min等 移位函数 lag(colName, n):以当前行为基础,来处理第前n行的数据 lead(colName, n):以当前行为基础,来处理第后n行的数据 …

CSS:样式

1. 引入方式 <!-- 方式一&#xff1a;行内式 通过元素的style属性引入样式 语法&#xff1a;style"样式1&#xff1a;值; 样式2&#xff1a;值; ... " 缺点&#xff1a;1.代码复用率低&#xff0c;不利于维护。比如&#xff1a;定义多个相同的按钮要重复书写 2.cs…

Intellij IDEA / Android studio 可持续开发笔记

Intellij 的Java/安卓工具链有着一种不可持续性&#xff0c;这种不可持续性体现在多个方面。 首先是不可持续运行。IDEA 使用时间越长&#xff0c;内存占用越大&#xff0c;从不主动释放。运行时间越长&#xff0c;日志越多&#xff0c;从不主动清理。 然后是不完整的开源&am…

用html实现一个手风琴相册设计

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>手风琴相册设计</title><link rel"stylesheet" href"./style.css"> </head> <body> <h1>Accordio…

Linux 著名的sudo、su是什么?怎么用?

一、su 什么是su&#xff1f; su命令&#xff08;简称是&#xff1a;substitute 或者 switch user &#xff09;用于切换到另一个用户&#xff0c;没有指定用户名&#xff0c;则默认情况下将以root用户登录。 为了向后兼容&#xff0c;su默认不改变当前目录&#xff0c;只设…

【蓝桥杯第十三届省赛】(部分详解)

九进制转十进制 #include <iostream> #include<math.h> using namespace std; int main() {cout << 2*pow(9,3)0*pow(9,2)2*pow(9,1)2*pow(9,0) << endl;return 0; }顺子日期 #include <iostream> using namespace std; int main() {// 请在此…

分布式理论:CAP理论 BASE理论

文章目录 1. CAP定理1.1 一致性1.3 分区容错1.4 矛盾 2. BASE理论3. 解决分布式事务的思路4. 扩展 解决分布式事务问题&#xff0c;需要一些分布式系统的基础知识作为理论指导。 1. CAP定理 Consistency(一致性): 用户访问分布式系统中的任意节点&#xff0c;得到的数据必须一…

python超详细知识点汇总整理

1、注释以及编码格式的声明 单行注释&#xff1a;# &#xff08;后面放上被注释的内容&#xff09;多行注释&#xff1a;字符段落的上下加上三引号 举个例子: ‘’’ …‘’’编码格式的声明&#xff1a;#coding:utf-8 或者是 #codingutf-8 2、代码编写格式和一些琐碎说明 同…