从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生
摘要:随着云计算的兴起和渗透,云数仓成为了数仓技术演进的新阶段,并且逐渐成为了众多企业的共同选择。
本文分享自华为云社区《从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生》,作者: 华为云头条。
数据驱动着现代商业的发展
今天,无论在制造、零售、物流
还是在互联网、金融等行业
数据都变得比以往任何时候更为重要
海量且多样的数据浪潮对数据处理和分析提出了更高的要求,也使得数据仓库走向了多元化的发展之路,传统数仓、数据集市、实时数仓等相继诞生。此外,随着云计算的兴起和渗透,云数仓成为了数仓技术演进的新阶段,并且逐渐成为了众多企业的共同选择。
与时俱进的“数据仓库”
“数据仓库”的概念并非近些年才出现,关于它的起源,众说纷纭:
- 有一种说法指出“数据仓库”的概念最早可以追溯到上世纪60年代,当时的数据主要是手工处理的纸质文档和统计报表;
- 80年代中后期,随着计算机技术和数据库技术的飞速发展,数据仓库开始逐渐成为企业级分析的重要工具;
- 直到90年代 Bill Inmon 推出《建立数据仓库》,正式定义了数据仓库的概念——数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的、不可修改的数据集合;
- 进入21世纪后,数据仓库开始与大数据、数据挖掘、机器学习、云计算等技术的相结合,走上了集成发展之路。
随着技术的不断发展和产业实践的深入,数据仓库逐渐成为了企业信息管理中不可或缺的部分。在实际应用中,数据仓库已经被广泛应用于各个领域,如客户关系管理、商业智能、金融风险评估等。例如:
- 在客户关系管理方面,数据仓库可以帮助企业更好地了解其客户,从而提高客户满意度和忠诚度;
- 在商业智能方面,数据仓库可以帮助企业快速地分析大量的数据,从而为企业决策提供支持;
- 在金融风险评估方面,数据仓库可以帮助银行和金融机构更好地评估风险和制定策略等等。
一些大型科技公司,基于自身业务诉求,也走上了数据仓库的研发之路。
比如华为云早在 2011 年就开始做数据仓库——GaussDB(DWS)的预研,在经受了海量自有业务数据的考验后,于2015年推向市场,面向金融、政府传统一体机等企业级核心数仓场景提供服务,2017年 GaussDB(DWS)上云,进一步提升了服务能力与服务范畴。
据华为云数仓GaussDB(DWS)资深产品专家黄海燕介绍,GaussDB(DWS)是华为云数据生产线上的一个明星产品,是支持实时入库、实时分析、批量运算、交互式查询的一站式分析平台,具备传统数仓的超大规模、高性能、高并发等优势,同时也具备云原生数仓的存算分离、弹性伸缩、Serverless、湖仓一体和数智融合等能力。
历时12年,从内到外、从本地部署到云端服务,GaussDB(DWS)逐渐探索出了适应云时代多场景需求的云数仓之路。

GaussDB(DWS)的Serverless之路
2017 年,华为云开始加速拓展业务,推出了更多云计算服务,GaussDB(DWS)也全面上云。上云之后带来的最直接的价值在于可以减少客户企业的硬件投资和运维成本,提高整体的运营效益。但是由于企业的业务规模不同,负载差异非常大,黄海燕表示,小一点的可能只有几十GB的数据集,大的则有数百TB甚至更多的数据集。业务规模的差异对数仓服务的弹性也提出了更高的要求。
- 存算分离模式
针对这个问题,华为云GaussDB(DWS)在一开始就将数仓服务传统的一体机模式转换成了弹性计算服务ECS+弹性存储服务EVS上的存算分离模式,实现了计算存储独立的扩容和扩展,能够实现计算升降配、存储弹性扩容,同时也支持在数据扩容之间的数据重分布,且不影响业务的中断。
随着业务场景的不断深入, ECS+EVS弹性扩展的方式在面对一些数据量大但计算要求不高的场景,比如车联网、互联网日志、企业核心数仓的长周期历史数据时,依然存在掣肘。
- ECS+EVS+OBS冷热数据管理
对此,GaussDB(DWS)团队在ECS+EVS的基础上又做了一层对象存储OBS的冷数据管理,将车联网、长周期历史数据等放到OBS上,在不扩展计算的情况下,通过这种方式实现冷热数据的管理,进而达到计算和存储的平衡。最终集成为ECS+EVS+OBS冷热数据管理的方式,GaussDB(DWS)基于本地盘进行性能加速,将 OBS 作为冷数据区,数据存储异构扩展至OBS,利用分层存储的方式,实现数据按需选择存储和计算引擎、冷热数据迁移动态切换等,进而在不影响数仓体验的前提下,达到成本最优。
- 同时支持三种模式
“后来我们发现ECS+EVS+OBS冷热数据管理的方式依然有覆盖不到的场景,比如说有一些场景它需要在跑批量的时候同时能够跑并发的查询,还希望一份数据实现多样化的分析和存储。因为有一部分热数据在EVS上,很多时候没有办法高效地扩展分析,所以后面我们把所有的数据都放在OBS上,原来的 EVS作为数据的缓存,OBS数据可以供多个集群、数据湖或者是AI去分析,再通过原先的EVS转换成一个角色,做数据分析加速。可以理解成我们同时支持了三种模式,这三种模式不是相互替代的关系,而是各有其应用的场景和特点。”黄海燕提到。
基于上述三种Serverless模式, GaussDB(DWS)成功为1700+客户提供了不同业务场景下的数据仓库服务。黄海燕表示:“现在云上有很多弹性的场景,比如说互联网,在我们归纳来说我们认为有两大类的弹性场景”。
- 长周期的弹性场景
主要有几种类型:第一种是在固定的时间点上有一个潮汐波动,比如“双十一”、“618”这类促销节点;第二种是随着企业规模的扩大,用户量、数据量、计算量也会递增;第三种是业务具备明显的长周期时间特征,比如银行在月末、季末、年末有结算的需求,计算量会比平时要大,游戏行业在周末时业务量会比平时更大。
- 短周期的弹性场景
即短期内有多样化的诉求。比如银行00:00-8:00是批量的运行高峰,8:00-18:00在批量运行的同时会有一些对报表、经营数据的交互式查询,18:00后是业务的低峰期,整体呈现一个潮汐波动。
Serverless的极致弹性扩缩容,很好地满足了长、短周期弹性场景下的业务需求,但是存算分离的架构也可能会带来网络开销变大、数据处理效率变低、性能下降等问题,对此GaussDB(DWS)团队也做出了较多的探索。
- 首先,在ECS+EVS+OBS的模式下,数据统一存放在OBS上,EVS充当缓存(磁盘缓存+内存缓存)的角色,由于磁盘缓存相对而言成本较低,且大小可控,所以GaussDB(DWS)做了一个大比例的磁盘缓存,用户可以根据对性能或者成本的要求调整比例,理论上如果要追求极致性能,可以不断调大磁盘缓存,直到满足业务需求。
- 其次是计算下推,把查询的逻辑直接下推到OBS,用户如果要从OBS上查数据,直接从源端进行数据过滤,从而减少网络传输对内存的占用,带来性能的提升。
- 最后是I/O管控,GaussDB(DWS)采用多个I/O调度的代理和线程,直接从OBS上Road数,充分把OBS的带宽利用起来,避免负载低时OBS用不上,负载高时互相争抢的问题,进而实现性能的最大化。
除了在Serverless方向的探索外,GaussDB(DWS)在湖仓一体与数智融合上同样取得了一些突破。
“湖仓一体+数智融合”的未来畅想
对于“湖仓一体”的探索,华为云做的比较早,只不过当时主要是通过外表技术实现数据共享,比如对于Spark或Hive的表,在数仓里建一张外表和它对应,从而查询Spark和Hive里的数据。但是这种方式随着数据规模的增加,维护成本也会倍增。
外表技术本质上只能访问数据,并不知道元数据长什么样,如果元数据内容统一的话,对用户来讲就不需要建这个外表。
基于这个思路,GaussDB(DWS)引入了External schema的概念,通过创建一个External schema,然后以schema.table的方式去访问Hive和Spark的元数据,和正常SQL一致,还可以和GaussDB(DWS)的内表做关联分析,从而使得GaussDB(DWS)的优化器能力和执行引擎能力更强。
“未来华为云这边,整个 EI 平台会建立一个Lake Formation的统一存储管理的组件服务,它会统一管起来所有的数仓和数据湖里面的各种组件的元数据,真正实现元数据意义上的共享,元数据的共享是比数据共享难度更高,或者说是真正有更大价值的东西。”华为云数仓GaussDB(DWS)技术专家齐天表示。
此外,为了解决多种数据库插件或引擎的调度问题,GaussDB(DWS)还提供了一个叫做External Connection的能力,可以直接调用外部的计算引擎,用于计算共享数据或者是它们的自有数据,从而用一个或者一套引擎实现计算的统一。数据共享、元数据共享以及计算统一,是GaussDB(DWS)数仓一体的三大技术特征,并由此打破数据孤岛效应,解决企业的IT资源分散、数据不通、应用孤立等问题。
在实现多平台的数据拉通之后,面向未来,华为云数仓又提出了“数智融合”的概念。据了解,数智融合本质上是把数据和AI这两条原本完全割裂的生产线融合到一起,从而实现1+1>2的效能。
当前GaussDB(DWS)对数智融合的探索主要在两大场景:
- 一是对于批量数据,GaussDB(DWS)可以将它们存储在OBS上,通过OBS实现和AI之间的数据共享,从而在不影响数仓体验的前提下,融入AI的自动化批量数据处理的能力;
- 二是即席查询场景,GaussDB(DWS)针对数据访问的插件做了优化,进而让AI生产线能够更好、更快速地从中获取数据等。
纵观数据仓库的演进之路,不难看出,从诞生的那一刻起,它就不断在与新技术、新场景相融合,并获得生机,从而持续释放数据的价值,推动产业发展。
GaussDB(DWS)的全面Serverless化、湖仓一体和数智融合等特征,是华为云对于新时代数据仓库技术演进方向的重要判断,同样也是数据仓库技术顺应时代、发展迭代的结果。随着AI新时代的到来,数智融合之后的数据仓库技术又将会迸发出怎样的力量,值得期待。
从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生的更多相关文章
- 基于SpringBoot实现操作GaussDB(DWS)的项目实战
摘要:本文就使用springboot结合mybatis plus在项目中实现对GaussDB(DWS)的增删改查操作. 本文分享自华为云社区<基于SpringBoot实现操作GaussDB(DW ...
- 从数据仓库双集群系统模式探讨,看GaussDB(DWS)的容灾设计
摘要:本文主要是探讨OLAP关系型数据库框架的数据仓库平台如何设计双集群系统,即增强系统高可用的保障水准,然后讨论一下GaussDB(DWS)的容灾应该如何设计. 当前社会.企业运行当中,大数据分析. ...
- GaussDB(DWS)应用实战:对被视图引用的表进行DDL操作
摘要:GaussDB(DWS)是从Postgres演进过来的,像Postgres一样,如果表被视图引用的话,特定场景下,部分DDL操作是不能直接执行的. 背景说明 GaussDB(DWS)是从Post ...
- 技术分享丨数据仓库的建模与ETL实践技巧
摘要:如何搭建数据仓库,在这个过程中都应该遵循哪些方法和原则,项目实践中有哪些技巧. 一.数据仓库的“心脏” 首先来谈谈数据模型.模型是现实世界特征的模拟和抽象,比如地图.建筑设计沙盘,飞机模型等等. ...
- 十八般武艺玩转GaussDB(DWS)性能调优(三):好味道表定义
摘要:表结构设计是数据库建模的一个关键环节,表定义好坏直接决定了集群的有效容量以及业务查询性能,本文从产品架构.功能实现以及业务特征的角度阐述在GaussDB(DWS)的中表定义时需要关注的一些关键因 ...
- GaussDB(DWS)应用实践丨负载管理与作业排队处理方法
摘要:本文用来总结一些GaussDB(DWS)在实际应用过程中,可能出现的各种作业排队的情况,以及出现排队时,我们应该怎么去判断是否正常,调整一些参数,让资源分配与负载管理更符合当前的业务:或者在作业 ...
- 十八般武艺玩转GaussDB(DWS)性能调优:SQL改写
摘要:本文将系统介绍在GaussDB(DWS)系统中影响性能的坏味道SQL及SQL模式,帮助大家能够从原理层面尽快识别这些坏味道SQL,在调优过程中及时发现问题,进行整改. 数据库的应用中,充斥着坏味 ...
- 十八般武艺玩转GaussDB(DWS)性能调优:路径干预
摘要:路径生成是表关联方式确定的主要阶段,本文介绍了几个影响路径生成的要素:cost_param, scan方式,join方式,stream方式,并从原理上分析如何干预路径的生成. 一.cost模型选 ...
- 探索GaussDB(DWS)的过程化SQL语言能力
摘要:在当前GaussDB(DWS)的能力中主要支持两种过程化SQL语言,即基于PostgreSQL的PL/pgSQL以及基于Oracle的PL/SQL.本篇文章我们通过匿名块,函数,存储过程向大家介 ...
- 从ConcurrentHashMap的演进看Java多线程核心技术 Java进阶(六)
本文分析了HashMap的实现原理,以及resize可能引起死循环和Fast-fail等线程不安全行为.同时结合源码从数据结构,寻址方式,同步方式,计算size等角度分析了JDK 1.7和JDK 1. ...
随机推荐
- abc294G
Upd G 看上好模板的样子, 果然是个模板题 好题 , 首先考虑这张图的 \(Euler \ Tour\), 简单点说, 就是dfs一遍, 把每个点入栈出栈顺序存起来, 举个例子· 2 1 2 2 ...
- P6185 [NOI Online #1 提高组] 序列
给定两个长度为n的序列\(A\),\(B\). 有m个可用的操作\((t_i,u_i,v_i)\). \(t\)代表操作类型. 当\(t=1\)时,表示能够将\(A_{u_i}\)和\(A_{v_i} ...
- Arrays.asList() 示例
1 package Test.others; 2 3 import java.util.Arrays; 4 import java.util.Collections; 5 import java.ut ...
- 在 plist 中轻松转换两种格式
在 plist 中,有两种常见的格式:.plist 和 .plistx.这两种格式有什么区别?它们之间如何相互转换?本文将为您详细解答. 在 iOS 上架时,需要将 plist 文件上传到苹果的 ...
- 20-优化配置介绍、HMR
webpack性能优化 开发环境性能优化 生产环境性能优化 开发环境性能优化 优化打包构建速度 HMR 优化代码调试 source-map 生产环境性能优化 优化打包构建速度 oneOf babel缓 ...
- for of 和 for in 的区别
1 var arr = ["f", "6", 3, "a", 7]; 2 var obj = { name: "shun" ...
- 老夫的正则表达式大成了,桀桀桀桀!!!【Python 正则表达式笔记】
一.正则表达式语法 (一) 字符与字符类 特殊字符 \.^$?+*{}[]()| 为特殊字符,若想要使用字面值,必须使用 \ 进行转义 字符类 [] [] 匹配包含在方括号中的任何字符.它也可以指定范 ...
- 2023-04-19:给定一个非负数组arr 任何两个数差值的绝对值,如果arr中没有,都要加入到arr里 然后新的arr继续,任何两个数差值的绝对值,如果arr中没有,都要加入到arr里 一直到ar
2023-04-19:给定一个非负数组arr 任何两个数差值的绝对值,如果arr中没有,都要加入到arr里 然后新的arr继续,任何两个数差值的绝对值,如果arr中没有,都要加入到arr里 一直到ar ...
- 2021-06-28:最接近目标值的子序列和。给你一个整数数组 nums 和一个目标值 goal 。你需要从 nums 中选出一个子序列,使子序列元素总和最接近 goal 。也就是说,如果子序列元素和
2021-06-28:最接近目标值的子序列和.给你一个整数数组 nums 和一个目标值 goal .你需要从 nums 中选出一个子序列,使子序列元素总和最接近 goal .也就是说,如果子序列元素和 ...
- nodejs 中 stream.pipe()直接将文件输出到页面乱码
最近仿照anywhere写个anyentry目录读取器,发现使用stream.pipe()将文件输入到页面时,出现中文乱码 看哇 看到着实不爽,不解决咋能算 于是开始寻找问题根源 一.配置encodi ...