数据仓库的发展历程
数据仓库的概念可以追溯到20世纪60年代,但真正形成理论并被企业广泛应用还需要一个较长的发展过程。大致可以分为以下几个阶段:
- 决策支持系统(DSS)时期(1960s-1970s) 这一时期,随着管理信息系统(MIS)和电子计算机的兴起,企业开始尝试构建面向决策的数据处理系统。最初的决策支持系统主要依赖文件系统或小型数据库,并没有统一的数据模型和工具支持。
- 数据仓库概念的提出(1980s) 1988年,Inmon提出了"数据仓库"(Data Warehouse)的概念,正式将数据仓库与在线事务处理系统(OLTP)区分开来。他将数据仓库定义为"面向主题的、集成的、相对稳定的、反映历史数据的数据集合,用于支持管理决策过程。" 同年,Codd等人提出了关系型数据仓库的模型。这标志着数据仓库概念的正式形成。
- 数据仓库理论和实践的发展(1990s) 90年代,数据仓库的理论和实践得到快速发展。提出了星型模式、雪花模式等维度建模方法;发展了OLAP、数据挖掘等分析技术;涌现了数据集成、ETL等关键技术。 同时,数据仓库的商业应用逐渐兴起,出现了专门的数据仓库产品和工具。
- 商业智能(BI)和大数据时代(2000s至今) 2000年后,企业的商业智能需求快速增长。数据仓库发展成为支撑BI应用的关键平台。同时也融入了大数据、云计算等新技术。 此阶段数据仓库的应用范围不断扩大,从制造、金融等传统领域,延伸到电信、医疗、交通等新兴行业。分析内容也不断丰富,如实时分析、预测分析、机器学习等前沿技术的引入。
- 主要技术里程碑:
- 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等公司推动。它在湖仓架构基础上进一步整合了数据管道和处理引擎,使得单个统一平台即可支持数据湖、数据仓库、实时分析等多种工作负载。这种简化的架构更加灵活高效。
每一次新架构的出现,都是为了更好地适应新的技术发展(如大数据、实时处理、云计算等)和企业需求的变化。总的演进方向是向着更高性能、更低延迟、更低成本、更加灵活和统一的架构模式发展。未来还可能会有新的架构出现,以应对人工智能、边缘计算等新兴需求。
总的来说,数据仓库经历了从概念提出到理论发展,再到工程实践和产品化的过程。随着大数据、云计算、人工智能等新技术的融入,数据仓库正在向更加智能化、自动化的方向发展,为企业的数字化转型提供坚实的分析基础。
相关文章:
数据仓库的发展历程
数据仓库的概念可以追溯到20世纪60年代,但真正形成理论并被企业广泛应用还需要一个较长的发展过程。大致可以分为以下几个阶段: 决策支持系统(DSS)时期(1960s-1970s) 这一时期,随着管理信息系统(MIS)和电子计算机的兴起,企业开始尝试构建面向决策的数据处理系统。最初的决策支…...
MySQL开窗函数
测试环境:mysql8.0.18 官方文档:https://dev.mysql.com/doc/refman/8.0/en/window-functions.html 一、窗口函数介绍二、语法结构三、自定义窗口1.rows(重点)2.range3.默认窗口 四、常用窗口函数示例1.row_number & rank &…...
Java学习笔记(23)
多线程 并发 并行 多线程实现方式 1.继承Thread类 自己创建一个类extends thread类 Start方法开启线程,自动执行重写之后的run方法 2.实现runable接口 自己创建一个类implements runnable Myrun不能直接使用getname方法,因为这个方法是thread类的方法…...
nodejs下载安装以及npm、yarn安装及配置教程
1、nodejs下载安装 1.1、使用nodejs版本管理工具下载安装,可一键安装、切换不同nodejs版本, nvm-setup.zip:安装版,推荐使用 本次演示的是安装版。 1、双击安装文件 nvm-setup.exe 选择nvm安装路径 例如:E:\Soft…...
Playwright库page.evaluate()方法执行JavaScript 表达式
page.evaluate() 方法是 Playwright 中常用的方法之一,用于在页面上下文中执行 JavaScript 代码。它允许在浏览器环境中执行各种操作,如操作 DOM 元素、获取页面数据、执行复杂的计算等,并将结果返回到 Node.js 或 Python 代码中。 在 Playw…...
【微服务】OpenFeign+Sentinel集中处理远程调用异常
文章目录 1.微服务基本环境调整1.对10004模块的application.yml调整2.启动nacos以及一个消费者两个提供者3.测试1.输入http://localhost:8848/nacos/index.html 来查看注册情况2.浏览器访问 http://localhost:81/member/nacos/consumer/get/13.结果 2.使用OpenFeign实现微服务模…...
集合嵌套,Collections,斗地主案例,日志框架
文章目录 集合嵌套List嵌套ListList嵌套MapMap嵌套Map Collections类方法排序 sort 乱序 shuffle 斗地主案例需求思路代码 日志框架介绍优势体系结构Logback概述快速入门配置详解 集合嵌套 List嵌套List public static void main(String[] args){//一个年级有许多班级…...
maven pom relativePath属性的作用
maven pom relativePath属性的作用 文章目录 maven pom relativePath属性的作用一、relativePath出现的地方二、relativePath默认值三、四、<relativePath>一个pom路径 一、relativePath出现的地方 搭建maven项目,子模块指定父模块试,经常会在par…...
【STM32 HAL库SPI/QSPI协议学习,基于外部Flash读取。】
1、SPI协议 简介 SPI 协议是由摩托罗拉公司提出的通讯协议 (Serial Peripheral Interface),即串行外围设备接口,是 一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间,要求通讯速率 较高的场合。 SPI 物理层 SPI 通讯…...
Nginx入门--初识Nginx的架构
一、概述 Nginx的架构设计旨在高效处理并发的网络请求。它采用了事件驱动的、非阻塞的IO模型,可以同时处理成千上万个并发连接,而不会消耗太多的系统资源。 二、主要组件 Nginx的主要组件包括: Master Process(主进程…...
网络性能提升10%,ZStack Edge 云原生超融合基于第四代英特尔®至强®可扩展处理器解决方案发布
随着业务模式的逐渐转变、业务架构逐渐变得复杂,同时容器技术的兴起和逐渐成熟,使得Kubernetes、微服务等新潮技术逐步应用于业务应用系统上。 为了充分释放性能、为业务系统提供更高效的运行环境,ZStack Edge 云原生超融合采用了第四代英特尔…...
双非计算机考研目标211,选11408还是22408更稳?
求稳得话,11408比22408要稳! 很多同学只知道,11408和22408在考察的科目上有区别,比如: 11408考的是考研数学一和英语一,22408考察的是考研数学二和英语二: 考研数学一和考研数学二的区别大吗…...
简单了解策略模式
什么是策略模式? 策略模式提供生成某一种产品的不同方式 Strategy策略类定义了某个各种算法的公共方法,不同的算法类通过继承Strategy策略类,实现自己的算法 Context的作用是减少客户端和Strategy策略类之间的耦合,客户端只需要…...
算法——运动模型
智能驾驶中常用的速度计算算法包括基于GPS的速度计算、惯性测量单元(IMU)的速度计算、雷达测距的速度计算、视觉测距的速度计算等。这些算法可以单独使用或者结合使用,以提高速度计算的准确性和稳定性。 智能驾驶中常用的加速度计算算法包括…...
基于R语言lavaan结构方程模型(SEM)技术应用
结构方程模型(Sructural Equation Modeling,SEM)是分析系统内变量间的相互关系的利器,可通过图形化方式清晰展示系统中多变量因果关系网,具有强大的数据分析功能和广泛的适用性,是近年来生态、进化、环境、…...
本地虚拟机服务器修改站点根目录并使用域名访问的简单示例
说明:本文提及效果是使用vmware虚拟机,镜像文件是Rocky8.6 一、配置文件路径 1. /etc/httpd/conf/httpd.conf #主配置文件 2. /etc/httpd/conf.d/*.conf #调用配置文件 调用配置文件的使用: vim /etc/httpd/conf.d/webpage.conf 因为在主配…...
生信数据分析——GO+KEGG富集分析
生信数据分析——GOKEGG富集分析 目录 生信数据分析——GOKEGG富集分析1. 富集分析基础知识2. GO富集分析(Rstudio)3. KEGG富集分析(Rstudio) 1. 富集分析基础知识 1.1 为什么要做功能富集分析? 转录组学数据得到的基…...
微服务(基础篇-007-RabbitMQ)
目录 初识MQ(1) 同步通讯(1.1) 异步通讯(1.2) MQ常见框架(1.3) RabbitMQ快速入门(2) RabbitMQ概述和安装(2.1) 常见消息模型(2.2) 快速入门ÿ…...
汇总:五个开源的Three.js项目
Three.js 是一个基于 WebGL 的 JavaScript 库,它提供了一套易于使用的 API 用来在浏览器中创建和显示 3D 图形。通过抽象和简化 WebGL 的复杂性,Three.js 使开发者无需深入了解 WebGL 的详细技术就能够轻松构建和渲染3D场景、模型、动画、粒子系统等。 T…...
JavaScript(一)---【js的两种导入方式、全局作用域、函数作用域、块作用域】
一.JavaScript介绍 1.1什么是JavaScript JavaScript简称“js”,js与java没有任何关系。 js是一种“轻量级、解释型、面向对象的脚本语言”。 二.JavaScript的两种导入方式 2.1内联式 在HTML文档中使用<script>标签直接引用。 <script>console.log…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门  Modul…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
