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

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

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

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

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

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

  1. 云数仓

传统数仓将计算与存储部署在同一个节点,集群的扩容复杂,需要进行数据的迁移,同时架构存在木桶效应,单节点故障会影响整体的性能,且资源管理不灵活,无法满足不同场景下资源隔离及动态调整的需求。云计算的出现为数仓架构的演进提供了新的方向,赋予数仓获得自服务、弹性等能力,同时目前企业将基础系统、平台部署到云端降低信息化建设成本及优化运行管理流程等成为趋势。

数仓在云端提供服务可以利用公有云强大的基础设施能力(弹性计算、存储、网络及安全能力),同时让用户更加轻松将数据进行集成,并降低使用、维护与架构成本。这就产生了云数仓(基于云原生的数据仓库),业界没有明确的定义,但是Snowflake是云数仓的里程碑产品,目前出现的云数仓产品很多都会借鉴该产品的设计思想,架构如下图所示:

云数仓、现代MPP架构都可以称为现代化数仓,但是这两种产品体系都是对传统数仓进行了不同角度的革新,现代MPP架构是从底层存储引擎角度(数据的组织与计算优化)而云数仓是从基础架构的角度进行了升级。云数仓的基本特征如下:

  1. 计算与存储分离(Disaggregation),在云环境下网络传输能力已经基本上能追上磁盘的IO的能力,存算分离后可以实现存储的横向扩展,并且在计算低峰时进行缩容,进一步降低数据分析的成本,最后是可以根据数据的热度进行存储分级,保证性能的同时进一步降低存储成本;存储不再是服务本身的一部分,演变为独立的服务,扩容无需数据的重分布;
  2. 资源扩展秒级弹性,计算层实现无状态可以随时扩缩容,并且随时热升级,为了实现无状态需要对元数据进行“分解”,计算层无状态后才能够随机增减节点、故障后快速切换且不需要复制/迁移数据,从而实现可靠性的提升及降低成本;弹性的扩缩可以基于定时或者负载(Workload Manager)等规则来控制,在资源不需要时可以进行关闭;
  3. 数据共享(Multi Cluster, Shared Data),计算资源可以根据不同的业务进行划分后构成虚拟数仓,虚拟数仓共享底层的数据,可以通过MVCC机制来实现数据访问的一致性。

在公有云中云数仓以服务的模式来进行交互,降低数据仓库的管理复杂度,用户将运维、升级等工作交由云厂商来实现,并且以Web的方式来使用数据仓库服务。目前各种云数仓产品层出不穷,从公有云厂商推出的Google BigQuery、Redshift、Synapse、Snowflake、国内云厂商的阿里云ADB、华为云GaussDB、移动云海山数仓,到近期开源的DataBend、ByConity,这些产品之间的功能基本相同,只是在技术细节的实现各有不同。

移动云云原生数据库海山数仓产品是中国移动自主研发的云原生分析型(OLAP)数据库。采用基于 Shared-Data与存储计算分离架构,具备zero-ETL能力,具备水平在线扩缩容,金融级高可用,提供全面向量化引擎与多种数据源联邦查询等重要特性。兼容 MySQL 协议和 MySQL 生态。支持海量数据在线查询,复杂查询快速响应,多维数据查询分析等。不仅有力辅助企业客户驾驭复杂的计算场景与海量数据需求,简化数据流转流程,使用户得以快速洞悉业务运营的真实面貌,而且还能有效帮助企业抓住数据时代的战略机遇,驱动业务模式的创新与升级。

  1. 总结

数据仓库从概念提出后随着用户使用需求的变化、新技术的出现等多种因素促使架构不断演进,在这个过程中不同的厂商针对各自的观点和需求,例如原始数据(数据湖)、实时性、多模数据及机器学习等,不断的在进行架构优化和新技术的引入,针对数仓的概念也在不断的重新定义,下图对这些概念进行了总结:

   

在图中数据库、数据仓库与数据湖保持明确的功能定位,产品体系的界限相对比较清晰,但是随着技术的发展,产品也在相互借鉴融合。数据仓库由于对数据实时性的需求演进到了实时数仓,在这个过程中数据的实时接入框架、查询性能的提升、交互式查询等能力让数仓的实现复杂化;为了面向满足不同数据类型的需求,数据仓库逐步进行数据的融合处理,形成了湖仓、多模数据库的概念。随时云原生技术的发展,目前各种类型的数据仓库在加速向云架构转型,力求打造新一代云数据仓库。目前在业界虽然数仓的产品数量及类型较多,但从技术实现的角度观察,它们正在朝着相似的核心技术和设计理念靠拢例如向量化执行、编译执行、计算Pipeline模型、计算存储分离、灵活弹缩等。

  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

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

  1. 作者介绍:

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

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐