海山数据库(He3DB)数据仓库发展历史与架构演进:(一)传统数仓
从1990年代Bill Inmon提出数据仓库概念后经过四十多的发展,经历了早期的PC时代、互联网时代、移动互联网时代再到当前的云计算时代,但是数据仓库的构建目标基本没有变化,都是为了支持企业或者用户的决策分析,包括运营报表、企业营销、用户画像、BI分析等。
广义上看数据库仓库并不是一项技术或者产品而是数据处理过程,从不同的数据源进行数据汇合,然后经过数据的统一建模成适合于分析的数据模型,最终辅助企业的决策分析。这个过程涉及到ETL、数据建模及数据可视化等一系列实现,这也是与数据库的本质区别。
随着计算机科学技术发展与产业变革,数据仓库在应对从数据特征呈现多样化、海量化到业务特征复杂化、智能化及实时化等,再到基础设施(存储、网络及计算资源)能力的提升、云计算技术的发展等变化,数仓的整个体系也在持续演进中,这里从数据仓库的系统架构及内核引擎的实现角度去分析数据仓库的发展过程,基本上如下图所示:
从数仓的核心能力去分析各个阶段实现的变化,我将重点分析以下几个方面:
- 存储引擎:主要是数据的组织方式,定义了数据如何存储及压缩、索引的创建和更新、锁机制、事务及缓存管理等。在数仓中数据是面向主题的将数据进行整理归纳和重组,这是提高数据分析性能的核心,在分析过程只需要处理部分维度的数据,并且大量的统计任务需要进行数据的扫描或者精确检索,因此存储引擎的合理设计是数仓架构发展的重要部分。
- 计算引擎:分析型任务涉及到大量的计算,计算效率往往会成为数据库系统的瓶颈,计算模型(框架)、优化技术、和运行中间数据的处理等都是数仓演进的突破点。MPP计算、分布式流计算、分布式批计算等都有相应的使用场景,在具体的算子执行过程中向量计算、编译执行及硬件加速技术等都是近年有效的提升性能的方法。
- 技术实现架构,数据库可以基于功能分为存储、计算及管理等层次,这些功能的运行机制影响着系统的灵活性、可运维性、成本及分析的性能等。云计算的出现为数仓架构的演进提供了新的方向,赋予数仓获得自服务、弹性等能力,同时目前企业将基础系统、平台部署到云端降低信息化建设成本及优化运行管理流程等成为趋势。
数据仓库的演进变革的因素有很多,例如快速的业务模式与群体规模的数据量带来的大数据处理技术、互联网的发展带来的数据源及数据类型的增多、人工智能的发展带来数智的融合、云计算交付模式的出现需要的细粒度的资源管理与隔离等,业务实时性的要求等都会带来数据仓库架构的变化。本文将分三章分析不同阶段数据仓库的核心特性的变化,包括传统数仓、大数据数仓、云数仓,并逐一进行讲解,本章主要介绍传统数仓。
- 初代数仓(单体分析型数据库)
这个阶段是数据仓库概念提出后,数据库厂商传统数据库的基础上结合数仓方法论提供的数仓产品。在这个阶段数仓的数据来自于CRM、ERP等业务数据,数据量小多GB级别,数据类型基本上是结构化数据,而且产生的周期按天或者周为单位,因此对数据仓库的要求不高,基本上是单机(性能较高的商用主机,例如中小型机器)分析型数据库,以Oracle、DB2、SQL Server、SybaseIQ等为代表。
这些数据仓库产品从本质上是关系型数据库,使用ETL工具实现多种异构数据源的有效集成与处理,并按照主题的方式进行数据进行重新整合,即按照数仓的维度模型进行归一化构建。这些数据库的设计是为了决策分析而进行的,例如使用位图化索引、按列存储、数据压缩及与众不同的锁机制,这些特性都极大提高了查询引擎的性能。这个阶段的数据仓库主要集中在金融、电信、大型零食及制造等行业。
- 传统MPP数据仓库
随着业务的发展,单机数据仓库的数据存储和计算模式不能满足大量数据处理的需求,在这个背景下基于MPP架构的数据仓库成为主流的解决方案,这阶段的数仓产品以在2000年代后出现的Teradata、Greenplum、Vertica等为代表。MPP(Massively Parallel Processing),大规模并行处理架构,更适合于复杂的数据处理和综合分析,典型实现如下图所示:
这种架构主要的特征如下:
- Shared Nothing,节点之间不共享存储、计算资源和磁盘,节点之间仅通过网络通信。
- 数据按照特定的规则进行本地化存储,例如基于特定分布式键上按照Hash规则分布到全部节点上。
- 完全对称的并行执行策略,每个节点都参与计算,并且节点上执行的任务逻辑完全一致。
- 任务按照流水线的方式进行组织执行,任务之间数据的传递以流水线的方式来进行,数据的流转在内存中进行,避免了数据积压的时间开销。任务的流水线执行使得MPP数据库具有优异的性能。
这种架构可以实现横向扩展的方式,使用普通主机就可以构建较大规模的集群系统,通过并行化来实现快速的分析任务的快速执行,同时更具有成本优势。
在这个阶段的MPP架构在技术实现基于传统数据库实例进行扩展,例如Greenplum、ADB for PG等都是基于PostgreSQL内核进行开发,在集群中每个节点都是一个独立的数据库实例,具有独立的系统表、用户表等,数据是按照某种策略分布到不同的实例中。客户端在发起请求后由管理节点生成查询计划并进行并行化调度,当涉及到多个节点的数据交换时,例如HashJoin的执行,引入数据交换算子,如下图所示:
管理节点分布到每个节点的查询计划是相同的,在执行时如果需要每个节点扫描自己所在节点的数据,当需要进行数据交换时调用Motion算子发送到其他节点,例如Join计算中符合过滤条件的右表数据,最后在管理节点上通过GatherMotion进行查询结果的汇总。
MPP数仓它是整体向外提供服务,每台节点无法单独运行局部数据,数据在存储时通过一定的策略进行分布,存储位置是不透明的,因此在执行任务时由于无法断定数据的位置,导致任务会在所有节点上执行,同时在计算过程中涉及到锁、事务、内外存交互等问题,所以当数据达到一定规模后就会出现性能的瓶颈问题。当集群或者数据量达到一定程度后,节点的故障成本较高,查询任务在某个节点故障时需要重启整个任务。
另一个缺点是存算耦合的架构,节点进行扩缩容时需要进行数据的重新分布,整个操作的过程会由于耗费大量IO请求引起业务处理速度的下降,影响客户的正常查询需求,最后是无法动态适应业务的发展。对于不同的请求,例如导入类任务耗费大量IO、网络带宽,但是CPU的使用率较低。复杂的查询任务CPU的资源消耗非常大,因此资源规格的需求是不同的,但是MPP架构很难满足这些需求。因此这种架构的数仓集群的规模不能太大,适用于中等规模的企业数据处理场景,通常不超过数百级别,因此支持的数据体量很少超过PB级别。
- 参考链接
- 数据仓库发展史:数据库发展史2--数据仓库_Data_Oracle_Inmon
- 从数仓架构到大数据架构的九种演进:
账号已迁移
3)从Snowflake看数据仓库未来演进方向:
从Snowflake看数据仓库未来演进方向:计算存储分离、弹性计算、统一存储和Serverless化_文化 & 方法_蔡芳芳_InfoQ精选文章
- DB Engine 数据库排行及介绍 : https://db-engines.com/en/
5)墨天轮中国数据库流行度排行:https://www.modb.pro/dbRank
6)CliBench数据仓库评测:https://benchmark.clickhouse.com
7)各产品官网与开源社区:
https://github.com/ClickHouse/ClickHouse
GitHub - apache/doris: Apache Doris is an easy-to-use, high performance and unified analytics database.
https://github.com/greenplum-db/gpdb
https://clickhouse.com/
Apache Doris: Open-Source Real-Time Data Warehouse - Apache Doris
https://github.com/datafuselabs/databend
ByConity · GitHub
- 作者介绍:
冯永设,中国移动云能力中心数据库产品部-OLAP数据库开发工程师。主要参与OLAP数据库产品架构设计/内核优化等工作。
相关文章:

海山数据库(He3DB)数据仓库发展历史与架构演进:(一)传统数仓
从1990年代Bill Inmon提出数据仓库概念后经过四十多的发展,经历了早期的PC时代、互联网时代、移动互联网时代再到当前的云计算时代,但是数据仓库的构建目标基本没有变化,都是为了支持企业或者用户的决策分析,包括运营报表、企业营…...

简单快捷的图片格式转换工具:认识webp2jpg-online
经常写博客或记笔记的朋友们可能会碰到图床不支持的图片格式或图片太大需要压缩的情况。通常,我们会在浏览器中搜索在线图片格式转换器,但这些转换器往往伴有烦人的广告或要求登录,并且支持的转换格式有限。最近,我在浏览 GitHub …...

iptablese防火墙【SNAT和DNAT】
目录 1.SNAT策略及应用 1.1SNAT原理与应用 1.2 SNAT策略的工作原理 1.3 实验操练 2.DNAT策略 2.1 DNAT策略的概述 2.2 DNAT原理与应用 2.3 实验操练 1.SNAT策略及应用 1.1SNAT原理与应用 SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet…...
IT行业现状与未来趋势
随着技术的不断进步,IT行业已成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链,这些技术正在重塑我们的生活和工作方式。你眼中IT行业的现状及未来发展趋势是怎么样的?无论您是行业领袖、技术专家…...

Snowy2.x 版本使用 Yaml
代码:https://gitee.com/xiaonuobase/snowy/tree/Snowy2.5.2/ 直接将 properties 转换成 yaml 那么你大概率会遇到下面报错: 然后你上网搜索,发现是 snakeyaml 版本的问题,1.x 版本的 snakeyaml 有安全隐患,要升级到…...

鸿蒙 DevEcoStudio:通知栏通知实现
【使用notificationManager实现通知栏功能】 【普通通知、长文本通知、多行通知、图片通知】 import notificationManager from ohos.notificationManager import image from ohos.multimedia.image Entry Component struct Index {State message: string Hello World// 将图…...
什么是网关鉴权及其在Spring Cloud Gateway中的实现
在现代微服务架构中,网关扮演着非常重要的角色,它是系统和外部世界之间的入口,负责路由请求、流量控制以及安全保护等任务。其中,网关鉴权是保障系统安全的重要环节之一。本文将深入介绍什么是网关鉴权,以及如何通过过…...

【机器学习与实现】支持向量机SVM
目录 一、SVM (Support Vector Machine) 概述(一)支持向量机SVM的主要特点(二)支持向量与间隔最大化(三)线性可分/不可分(四)软间隔 (soft margin) 与核技巧 (kernel trick)…...

当代人工智能三教父——深度学习三巨头
文章目录 引言 人物介绍 突出贡献 专业名词解释 引言 今天下午闲来无事翻阅了一下csdn首页的头条文章——《27 岁天才创始人 Joel Hellermark 分享了自己和“AI 教父” Geoffery Hinton 的最新采访》 感觉挺有意思,就从头到尾的看了一遍,里面有很多…...
Django项目从创建到开发以及数据库连接的主要步骤,精简实用
1、项目创建 安装命令:pip install django3 -i <https://pypi.tuna.tsinghua.edu.cn/simple>上述命令是使用清华镜像,安装django3在项目的创建目录执行命令:django-admin startproject 项目名称(英文)就可以在指…...
linux 命令 grep 排除 No such file or directory
du -sh * 2>&1 | grep -v "proc" command 2>&1 | grep -v "No such file or directory" 这里的 2>&1 是将错误输出重定向到标准输出,然后 grep -v "No such file or directory" 会过滤掉包含 &qu…...

Unity 滑动条(Slider)拖拽开始和结束、点击等事件的拓展功能
目录 前言 一、关于slider的监听事件 二、方案一 (无脚本版) 三、方案二 (继承slider脚本进行拓展) 四、方案三(外部脚本添加) 前言 前一段时间在使用这个功能,发现搜索出来的文章和脚本&…...
Linux 学习知识 (简单易懂 )持续更新 Linux输出重定向 Linux通配符 Linux正则表达式 持续更新....
一.输出重定向 标准输出:是将信息输出在终端 标准错误输出:在执行命令的过程中所产生错误信息也是输出在终端标准输入:从键盘输入 1.1标准输出重定向 作用:将本来要显示在终端上的信息重定向到一个文件中 实现方法:…...

前端vue用el-table如何实现表头内容过长换行处理,实现换行效果
前端vue用el-table如何实现表头内容过长换行处理,实现换行效果 这是效果图 有两种方法,一种简易版本,一种万能方法,都是el-table,先看文档 表头标题是可以自定义的 方法一 label的解释写在代码里面了,这里会自动形成换…...

15:00面试,15:08出来,面试问的有点变态。。。。
🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天…...

【BUG】流式响应requests得到: ping - 和时间戳
前情提要 运行Langchain-Chatchat项目,使用自定义请求访问API Server流式输出 报错展示 b: ping - 2024-05-22 00:46:04.83252000:00\r\n\r\n报错原因 这通常是由于 Server-Sent Events (SSE) 实现中使用的“心跳”机制,以确保连接保持活跃。一些 SSE…...

人工智能应用-实验5-BP 神经网络分类手写数据集
文章目录 🧡🧡实验内容🧡🧡🧡🧡代码🧡🧡🧡🧡分析结果🧡🧡🧡🧡实验总结🧡🧡 ǹ…...
K8s Pod 资源进阶
文章目录 K8s Pod 资源进阶pod 资源限制限制资源单位 资源限制实战Pod 服务质量QosDownward API可注入的元数据信息环境变量方式注入元数据存储卷方式注入元数据为注册服务注入Pod 名称为 JVM 注入堆内存限制 K8s Pod 资源进阶 pod 资源限制 资源限制的方法: Req…...
掌握Edge浏览器的使用技巧
导言: Edge浏览器是微软推出的一款现代化、高效的网络浏览器。它不仅提供了基本的浏览功能,还具备了许多强大的特性和技巧,可以帮助用户更好地利用浏览器进行工作和娱乐。本文将介绍一些Edge浏览器的使用技巧,帮助读者更好地掌握这…...

Qt封装ping命令并将ping结果显示到界面
实现界面及在Windows 10下的运行结果如下: 代码如下: pingNetWork.h // 检测网络是否ping通的工具#ifndef PINGNETWORK_H #define PINGNETWORK_H#include <QWidget> #include"control_global.h" namespace Ui { class CPingNetWork; }c…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...
土建施工员考试:建筑施工技术重点知识有哪些?
《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目,核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容,附学习方向和应试技巧: 一、施工组织与进度管理 核心目标: 规…...
计算机系统结构复习-名词解释2
1.定向:在某条指令产生计算结果之前,其他指令并不真正立即需要该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令中需要它的地方,那么就可以避免停顿。 2.多级存储层次:由若干个采用不同实现技术的存储…...
当下AI智能硬件方案浅谈
背景: 现在大模型出来以后,打破了常规的机械式的对话,人机对话变得更聪明一点。 对话用到的技术主要是实时音视频,简称为RTC。下游硬件厂商一般都不会去自己开发音视频技术,开发自己的大模型。商用方案多见为字节、百…...