海山数据库(He3DB)数据仓库发展历史与架构演进:(二)大数据数仓

从1990年代Bill Inmon提出数据仓库概念后经过四十多的发展,经历了早期的PC时代、互联网时代、移动互联网时代再到当前的云计算时代,但是数据仓库的构建目标基本没有变化,都是为了支持企业或者用户的决策分析,包括运营报表、企业营销、用户画像、BI分析等。

广义上看数据库仓库并不是一项技术或者产品而是数据处理过程,从不同的数据源进行数据汇合,然后经过数据的统一建模成适合于分析的数据模型,最终辅助企业的决策分析。这个过程涉及到ETL、数据建模及数据可视化等一系列实现,这也是与数据库的本质区别。

随着计算机科学技术发展与产业变革,数据仓库在应对从数据特征呈现多样化、海量化到业务特征复杂化、智能化及实时化等,再到基础设施(存储、网络及计算资源)能力的提升、云计算技术的发展等变化,数仓的整个体系也在持续演进中,这里从数据仓库的系统架构及内核引擎的实现角度去分析数据仓库的发展过程,基本上如下图所示:

从数仓的核心能力去分析各个阶段实现的变化,我将重点分析以下几个方面:

  1. 存储引擎:主要是数据的组织方式,定义了数据如何存储及压缩、索引的创建和更新、锁机制、事务及缓存管理等。在数仓中数据是面向主题的将数据进行整理归纳和重组,这是提高数据分析性能的核心,在分析过程只需要处理部分维度的数据,并且大量的统计任务需要进行数据的扫描或者精确检索,因此存储引擎的合理设计是数仓架构发展的重要部分。
  2. 计算引擎:分析型任务涉及到大量的计算,计算效率往往会成为数据库系统的瓶颈,计算模型(框架)、优化技术、和运行中间数据的处理等都是数仓演进的突破点。MPP计算、分布式流计算、分布式批计算等都有相应的使用场景,在具体的算子执行过程中向量计算、编译执行及硬件加速技术等都是近年有效的提升性能的方法。
  3. 技术实现架构,数据库可以基于功能分为存储、计算及管理等层次,这些功能的运行机制影响着系统的灵活性、可运维性、成本及分析的性能等。云计算的出现为数仓架构的演进提供了新的方向,赋予数仓获得自服务、弹性等能力,同时目前企业将基础系统、平台部署到云端降低信息化建设成本及优化运行管理流程等成为趋势。

数据仓库的演进变革的因素有很多,例如快速的业务模式与群体规模的数据量带来的大数据处理技术、互联网的发展带来的数据源及数据类型的增多、人工智能的发展带来数智的融合、云计算交付模式的出现需要的细粒度的资源管理与隔离等,业务实时性的要求等都会带来数据仓库架构的变化。这里只分析不同阶段数据仓库的核心特性的变化,其他的内容可以逐步分析。本文将分三章分析不同阶段数据仓库的核心特性的变化,包括传统数仓、大数据数仓、云数仓,并逐一进行讲解,本章紧接传统数仓,介绍大数据数仓以及其演变。

  1. 大数据OLAP引擎

随着移动互联网、物联网的蓬勃发展带动了大数据的发展,数据处理种类的多样化、数据量不断变大、快速的数据流转等对系统有了新的要求,大数据框架从底层数据存储机制、计算模型(分布式批处理、内存及流计算等)到数据的集成等都发生了革命性的变化。其中Hadoop生态技术被广泛使用,数据仓库在大数据背景下建设的理论和目标是相同的。

根据大数据架构模式可以分为三个方向如下图所示:

  1. 大数据数仓

传统的MPP数据仓库的出现是为了解决大数据量和性能的问题,但是随着大数据的发展,需要产生新的大数据处理技术和架构模式。在存储引擎上以HDFS为代表的分布式存储、在计算框架上出现了MR、Spark(DAG)和Flink等。

MapReduce计算框架

DAG计算框架

基于大数据构建等数仓产品很多,例如Hive、Kylin等,这些产品使用大数据的计算框架、底层直接读取文件系统中的数据,如下图所示:

这些数仓可以看到做事传统数仓各个引擎部分替换成大数据体系中的组件,在Hive中执行引擎替换成MapReduce及存储引擎替换成HDFS,为了增加实时性减少数据的落地执行引擎集成了Spark。

大数据数仓产品并不是某个单独运行的产品,而是一系列大数据组件遵循数据的处理流程的“范式”,例如离线数仓、流式数仓、实时数仓Lambda架构或者实时数仓Kappa架构在大数据组件的使用及数据的流转上是不同的,这里以Lambda为例,架构为例:

Kappa架构与Lamda架构相比更多关注于流处理部分,但是在真实中用户并不会完全遵循规范的架构而是进行混合使用,在近年还提出的IOTA的架构模式,基于AI生态下的全新的数据架构模式。

大数据数仓是一个松散的遵循某种规范的系统套件组合,涉及到数据的传输、计算(批处理、流处理)、存储及服务等组件,其优点在于可以支持PB以上级别的数据处理且具有较强的扩展性,但是缺点是性能及架构复杂。

  1. 湖仓

数据湖概念在2010年被提出,其特征是以原始格式存储数据的存储库或者文件系统,无需对数据进行结构化处理,并且通常是将数据存储在开放的格式中,例如Parquet、ORC等。湖仓是将数据湖具有低成本的开放格式的存储能力和数据仓库的管理和优化能力结合在一起,典型的湖仓架构如下图所示:

从数据流转和计算来看与大数据数仓基本相同,核心的变化在于使用数据湖存储格式,例如Hudi、Iceberg、Delta Lake等进行数据的组织,解决了数据湖松散的文件结构问题,并在此基础上提供统一的元数据管理能力,实现各种数据库和数据仓库的元数据无缝打通和管理。

数据湖存储格式是湖仓运行的核心,其通过良好的抽象对接数据存储和元数据管理,格式如下图所示:

通过定义存储格式为数据湖添加了管理特性,如数据一致性、版本控制、增量处理及事务等,除外还通过表文件列式存储及压缩、表索引信息、谓词下推来加速SQL引擎的查询能力,简单来说数据湖存储格式提供了传统数据仓库存储引擎中的日志模块相同的功能。

  1. 湖仓分体模式

从上面介绍的大数据架构的数仓能力来看为了支持大数据量处理、扩展性和容错性等能力,将不同的组件按照一定的架构“范式”进行叠加,存在架构极其复杂且维护成本很高,采用分布式处理框架查询性能比较低,而且事务支持较弱等问题,因此无法替代传统数仓。但是传统数仓存在集群规模小、并发能力不高、动态扩展性差等问题,因此业界出现了大数据数仓和传统数仓进行互补的新式架构的数仓。在大数据的存储能力基础上使用MPP的架构优势提高计算的实时型,典型数仓产品Impala、Presto/Trino、Hawq等产品,这里以Impala为例,其架构如下图所示:

Impala Daemon进程安装在所有节点上,通常与DN部署在一起,方便于数据的本地计算。管理节点对外提供服务,并且维护表的元数据、资源信息及各节点的健康状况。Coordinator会查询HDFS文件获取此次查询的数据所在的位置以及存储方式的信息。

查询请求提交到集群后由FE进行解析并生成查询计划,在这个过程中会将执行计划转换成分布式并行物理执行计划,如下图所示:

单机执行计划

分布式并行执行计划

分布式并行执行计划是在单机执行计划的基础上,结合数据分布式存储的特点,将其拆分为多个子任务,每个子任务都是可以并行执行,待执行后将结果进行全局的聚合。

具体来说在这种框架下数据存储在分布式架构的存储系统中,分散存储到多个节点上实现数据的分区容错性和扩展性,然后在上层利用MPP的并行计算能力来优化数据查询和计算等任务,减少运算延迟,提高处理效率。

  1. 新架构实时数仓

上面介绍的大数据背景下的数仓并不能称之为数仓产品,不管是Hive、Kylin、Impala、Presto还是湖仓,这些姑且可以称之为OLAP引擎,要提供数仓的能力还要与其他组件,例如分布式存储、元数据管理及数据传输等进行组合来作为整体来提供数仓服务。

但是大数据和数据仓库从概念和目标上是不同的,大数据体系是实现一个以原始格式进行数据存储和治理的基础设施,来满足不同的异构数据存储和计算需求。本质上需要灵活的标准来实现数据的集成、数据管理与对外提供数据服务等,因此从产品形态上看大数据体系下的数据仓库能力更像是一种架构指导,还可以在相同的基础能力上提供机器学习、数据挖掘、数据集市等各种能力。但是数据仓库从概念上看是一个面向主题、集成、相对稳定和反映历史变化的数据集合,在数据仓库中信息是在不同的业务系统中进行集成,并经过一系列加工、整理和汇总等过程,形成规范性的关于确定主题的一致的全局信息,可以对这些数据进行频繁的可重复的分析。

因此大数据背景下的数仓能力不能实现对数据仓库的替代,但是大数据的先进技术可以实现用来促进数仓的架构的演进,在这种趋势下出现的新型数据仓库产品有ClickHouse、Doris、StarRocks等产品,这些产品具有以下特征:

  1. 现代化的MPP架构,实现了向量化执行引擎、编译执行、提高查询的实时性(支持高并发小查询)等;
  2. 重新定义了数据存储引擎,可以支持大规模数据集,例如使用LMS的列式存储引擎、针对列创建ZoneMap索引来进行针对性过滤、MVCC事务隔离机制等;
  3. 重新定义了数据分布与副本管理机制,可以支持大数据集的灵活管理。在小查询时只需要使用部分机器资源能够提高并发查询量;机器扩缩容时迁移部分数据分片可,不影响线上服务,负载均衡可以自动实现;
  4. 新型的预聚合机制,能够做到数据的自动更新、查询的智能路由、实时数据的增量聚合计算等,例如Rollup机制,在数据导入时自动完成汇聚。

这里以Doris为例,其在整体上整合Google Mesa存储模型、Impala MPP查询引擎和ORC file存储格式(在格式的基础上进行优化)等先进技术。

与传统的MPP数仓每个实例都基于传统关系型数据库技术不同,现代化数仓根据AP的大量表扫描的特征重新定义了数据的存储引擎。与传统MPP数仓的不同,Doris使用了LSM(Log Structured Merge)树架构,这个也是目前大数据存储系统(HBase、LevelDB、RocksDB等)常用的技术,如下图所示:

核心思路是将最新的数据驻留在缓存中,等积累到一定量后再使用归并合并的方式将缓存中的数据合并到磁盘队尾中。数据写入时先在内存中组成Mem Table,其内的数据是经过排序的数据,当达成一定程度后将其添加到LSM Tree中,这些相邻的SSTable不保证有序,在后台会启动定时任务进行合并。为了加快数据的读取,大部分的LSM结构中会基于Key的索引和Bloom Filter来快速过滤查询Key,减少IO数据的访问。读取流程如下:

在数据建模方法Doris支持Aggregate、Unique和Duplicate等模型可以满足OLAP领域的各种应用模型,为了提高高并发的点查能力实现Unique存储模型和行缓存等技术;新型预聚合技术Rollup、Cube、智能物化视图技术实现预聚合加速,从而实现用户近实时查询。但是传统的数据仓库依赖与数据的Cube来进行数据的预处理,无法支持数据持续导入或者聚合的同时提供近实时的用户查询能力。

在数据导入方面在内部集成了多种数据导入方式实现不同数据源导入的过程中提供原子性保证。在集群扩缩上Doris与传统MPP数仓不同的地方在于借鉴了大数据技术中常用的分布式管理框架,可以自动管理数据副本的分布、恢复和均衡,在整个过程中不影响系统服务。

  1. 参考链接
  1. 数据仓库发展史:数据库发展史2--数据仓库_Data_Oracle_Inmon
  2. 从数仓架构到大数据架构的九种演进:

账号已迁移

3)从Snowflake看数据仓库未来演进方向:

从Snowflake看数据仓库未来演进方向:计算存储分离、弹性计算、统一存储和Serverless化_文化 & 方法_蔡芳芳_InfoQ精选文章

  1. 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

https://github.com/apache/doris

https://github.com/greenplum-db/gpdb

https://clickhouse.com/

Apache Doris: Open-Source Real-Time Data Warehouse - Apache Doris

https://github.com/datafuselabs/databend

https://github.com/ByConity

  1. 作者介绍:

冯永设,中国移动云能力中心数据库产品部-OLAP数据库开发工程师。主要参与OLAP数据库产品架构设计/内核优化等工作。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值