云原生数据仓库 AnalyticDB MySQL 版采用计算存储分离的架构,通过云原生技术实现了池化,提供了Serverless存储的能力。
Serverless架构下的存储资源支持独立弹性伸缩,同时提供了按需横向弹性(扩展存储节点数)和按需纵向弹性(升配存储节点的CPU和内存)的能力。计费方式采用按使用量付费,且无需管理硬件资源。
存储层的整体架构如下图所示:
在如上架构中,AnalyticDB for MySQL存储支持一份数据同时满足高性能在线分析和低成本离线处理两种场景,面向不同的性能和拓展性需求,支持不同程度的存算分离。
在线分析
在线分析主要面向以在线EIU中的热数据为典型分析数据源,满足在线交互式查询性能需求。对于典型高频多维检索和复杂查询分析场景,可选存算一体的企业版,能获得更好的性能。在这基础上,可以轻量地纵向扩展存储资源,或者按需增加计算资源满足额外的隔离需求。
离线处理
离线处理主要面向高吞吐量的离线分析场景,尽管相对在线分析有更高的延迟,但提供了更好的隔离性和扩展性。数据存储在对象存储有更低的成本,存算分离更为彻底,按需弹性扩展计算资源,在计算资源组中通过大吞吐量读对象存储数据来满足大数据量的分析需求。此外,还可额外通过加速器来提升性能。
在离线混合分析
在离线混合分析将在线和离线分析的业务组合,在一套系统中实现。在线分析通过存算一体的EIU资源来满足,数据归档到对象存储。离线分析需求通过按需的弹性计算资源组来满足,直读对象存储数据进行离线分析。
存储层与其他组件的交互如下图所示:
AnalyticDB for MySQL的存储层构建在云原生基础设施之上,该架构有如下几个特点:
分层存储
存储介质提供冷热分层存储能力。
实时数据存储在热存储(SSD)上,保证超低延时的写入和查询性能,可提供行级数据实时性。
全量数据以微分区(Micro Partitions)的形式存储,大幅度优化传统数仓中出现的IO放大和写放大的问题,提供高吞吐的读写能力。同时,利用OSS和PANGU的弹性能力,在提供廉价存储的同时,容量可无限扩展。
高性能
支持列投影、谓词下推、分区裁剪,并且内置面向高吞吐的Skipping Index扫描过滤和面向低延迟的Secondary Index过滤两种访问模式。AnalyticDB for MySQL会根据您提交的查询自动选择最优模式,无需手动选择访问模式。
统一多级缓存层。充分利用本地内存+本地SSD+远程全局分布式缓存,提供湖仓数据的加速能力,同时满足从百毫秒级高性能在线分析场景到百TB级的高吞吐ETL场景。
弹性能力
提供分钟级别的弹性扩缩容。全量数据在扩缩容时无需搬迁,通过元数据(Metadata)的操作来达到扩缩容的目的。
存储与计算可独立弹性,并且提供横向弹性和纵向弹性的能力。
资源隔离
独立部署的Build Service,负责所有的离线操作,可保证如Compaction等高CPU消耗的离线操作与线上负载进行资源隔离,不影响线上负载的运行。
具备一份数据与一套自研存储格式同时支持实时更新、交互式查询、离线ETL及明细点查多场景一体化能力。离线查询与在线查询资源隔离。
湖仓一体
对外开放存储,不锁定用户数据,提供统一存储接口层及数据访问格式,支持使用开源计算引擎(如Spark和Presto)访问AnalyticDB for MySQL内部的数据。
支持在AnalyticDB for MySQL内部访问和管理开源数据格式(如Parquet和Hudi)。
支持半结构化、非结构化数据的存储。提供全文检索能力。
提供湖加速能力。通过智能采集湖上数据统计信息,改善湖上查询计划,加速湖查询。