湖存储
AnalyticDB for MySQL提供湖存储功能,简化数据湖的构建和存储管理。湖存储支持存储Iceberg、Paimon等类型的结构化表数据和非结构化文件对象,主要适用于需同时满足离线批处理和实时分析的场景。本文介绍湖存储的存储模式、存储类型及资源管理操作。
前提条件
集群的产品系列为企业版、基础版或湖仓版。
开通湖存储
湖存储功能当前处于邀测阶段,如需开通,请提交工单联系技术支持。
存储模式
在创建数据湖表前,您需要决定数据的存储位置。AnalyticDB for MySQL提供两种存储模式,在建表时一次性确定,建表后不可变更。
维度 | 托管湖存储(内湖) | 用户自有OSS(外湖) |
存储管理 | AnalyticDB for MySQL全托管,自动管理底层存储桶 | 用户自行管理OSS Bucket |
建表关键参数 |
|
|
开通方式 | 需先开通湖存储 | 同账号下无需额外操作 |
适用场景 | 新项目,希望简化运维 | 已有OSS数据,或需要自主管理存储 |
托管湖存储:数据由AnalyticDB for MySQL自动管理底层存储桶,用户通过标准SQL读写湖表,无需关心文件系统、权限配置或生命周期管理。详情请参见新建湖存储。
用户自有OSS:数据完全存放在用户指定的同地域OSS Bucket中,建表时通过
LOCATION指定OSS路径即可。
具体建表语法因引擎而异,请参见后续步骤中对应引擎的读写文档。
存储类型
AnalyticDB for MySQL托管湖存储提供两种湖存储类型,您可以根据业务场景选择合适的存储方案。
维度 | 基础型 | 标准型 |
底层存储 | OSS对象存储 | AFS(AnalyticDB Filesystem)高性能对象存储 |
访问协议 | OSS API | S3兼容协议,额外支持POSIX接口(邀测中) |
适用场景 | 通用数据分析、离线批处理 | AI/ML训练推理、高性能计算、多模数据处理 |
性能特点 | 标准吞吐与延迟 | 高吞吐、低延迟,内置多级缓存 |
冷热分层 | 不支持 | 支持,热数据存储在AFS,冷数据自动下沉至OSS |
开通方式 | 提交工单 | 提交工单 |
基础型(OSS标准湖存储)
OSS标准湖存储基于阿里云OSS对象存储,适用于大多数通用数据分析和离线批处理场景。创建后,系统会自动在服务账号下的OSS中创建一个与集群同地域、且与湖存储同名的Bucket。
标准型(AFS高性能湖存储)
AFS(AnalyticDB Filesystem)是兼容S3协议的高性能对象存储,为AnalyticDB for MySQL湖存储提供高性能数据入湖与持久化能力。AFS适用于对存储性能有更高要求的场景,例如AI/ML训练推理、大规模多模数据处理等。
核心能力:
S3协议兼容:可直接使用AWS SDK、Spark/Flink S3A等标准工具链访问,无需改造现有工具。
POSIX接口(邀测中):同一份数据既可通过S3接口访问,也可通过POSIX挂载访问,覆盖训练、推理等依赖文件路径的场景。
冷热分层:热数据存储在AFS中保障高性能访问,冷数据自动下沉至OSS,统一命名空间对上层应用透明,实现成本与性能的平衡。
安全与权限:支持基于S3 Policy的细粒度权限模型,可按Bucket、路径、操作类型进行最小授权;支持用户与AccessKey体系,便于多团队隔离。
POSIX接口
AI/ML训练和推理链路通常依赖POSIX文件路径(而非S3 Key)。AFS在S3接口之上额外提供了POSIX接口,主要价值如下:
训练/推理零改造:Ray算子、模型checkpoint可直接读写挂载点,无需修改为S3 SDK。
同一份数据双形态访问:上游生产管线通过S3写入,下游训练或检索通过POSIX接口直读,零拷贝、零搬运。
当前POSIX接口能力处于邀测阶段,如需使用请提交工单。
费用说明
创建湖存储后,AnalyticDB for MySQL会根据湖存储中的数据量和使用时长按量计费。计费详情,请参见企业版和基础版产品定价和湖仓版产品定价。
读写湖存储中的数据时,会产生请求费用,包括PUT类型请求次数费用和GET类型请求次数费用。计费详情,请参见企业版和基础版产品定价和湖仓版产品定价。
注意事项
一个阿里云账号在同一地域内最多可创建5个湖存储。
湖存储的存储用量显示存在延迟,因此无法在数据写入后立即查看到数据量。
删除湖存储时,需要确保已删除该湖存储中的所有数据,否则删除湖存储操作会报错。
创建湖存储后,AnalyticDB for MySQL会自动在其服务账号下的OSS中,创建一个和AnalyticDB for MySQL集群同地域、且与湖存储同名的Bucket。您可以通过添加收藏路径的方式,在自己阿里云账号下的OSS中查看该Bucket。
AnalyticDB for MySQL备份恢复功能不支持湖存储中的数据。
新建湖存储
标准型
标准型湖存储基于AFS高性能对象存储。创建标准型湖存储前,您需要先创建存储集群,再创建湖存储。
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,然后单击目标集群ID。
单击存储集群管理页签。
单击新建集群。
在弹出的创建集群对话框中,存储类型固定为标准型,设置预留资源大小,(可选)填写集群描述,然后单击确定。
说明存储集群创建需要一定时间,请等待集群创建完成后,再进行后续操作。
单击Bucket管理页签。
单击新建Bucket。
在弹出的新建Bucket对话框中,设置以下参数,然后单击确定。
类型:选择标准型。
所属集群:选择上一步创建的存储集群。
Bucket名称:输入Bucket名称。Bucket名称必须全局唯一,创建后无法修改。
数据冗余类型:选择同城冗余或本地冗余。
Bucket描述:(可选)输入Bucket描述,用于区分不同业务场景下的湖存储。
基础型
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,然后单击目标集群ID。
在左侧导航栏单击。
在Bucket管理页签下,单击新建Bucket。
在弹出的新建Bucket对话框中,设置以下参数,然后单击确定。
类型:选择基础型。
Bucket名称:系统自动生成,无需填写。
Bucket描述:(可选)输入Bucket描述,用于区分不同业务场景下的湖存储。
数据冗余类型:选择同城冗余或本地冗余。
重要Bucket名称为系统自动生成,格式为
adb-lake-地域ID-任意字符串。Bucket名称全局唯一,创建后无法修改。(可选)修改Bucket描述。
Bucket名称由系统自动生成,且不能修改。建议修改Bucket描述,以区分不同业务场景下的湖存储。
单击目标Bucket描述列的
按钮。在弹出的修改Bucket描述对话框中输入描述信息,然后单击确定。
(可选)新增授权。
单击操作列的新增授权,可选择授权对象类型:RAM用户或RAM角色。
说明只读权限:允许用户查看湖存储数据,但不可修改或删除。
读写权限:允许用户进行数据读取、写入和修改操作。
仅主账号或具有相应权限的RAM用户可执行授权操作。
权限变更实时生效,建议操作前确认授权范围。
查看连接地址
标准型湖存储创建完成后,您可在控制台查看兼容 S3 协议的连接地址(Endpoint)。
该 Endpoint 为私网连接地址,仅支持阿里云同 VPC 内访问,请确保您的 AWS SDK、Spark/Flink S3A 等工具部署在同 VPC 环境下,即可直接使用该地址访问 AFS 湖存储。
基础型湖存储不支持S3协议,Endpoint列显示为"-"。
在Bucket管理页签下,查看标准型Bucket的Endpoint列,即为S3连接地址。
查询湖存储数据量
在左侧导航栏单击。
在目标湖存储的存储用量中查看数据量。
重要湖存储的存储用量显示存在延迟,因此无法在数据写入后立即查看到数据量。
删除湖存储
在左侧导航栏单击。
单击目标湖存储操作列的删除。
在弹出的删除对话框中单击确定。
重要删除湖存储时,需要确保已删除该湖存储中的所有数据,否则删除湖存储操作会报错。
后续步骤
设置默认表格式(仅Spark SQL)
该功能仅适用于Spark SQL引擎。
您可以通过数据库属性设置默认的表格式,使该数据库下新建的表自动采用指定格式,无需每次建表时单独声明。
在Spark Job资源组、Interactive资源组或提交的作业中,设置如下参数:
spark.sql.adb.sources.extractProviderFromDBProperties.enabled true创建数据库时,通过
DBPROPERTIES指定'storage.format'为以下格式之一:delta、iceberg、parquet、orc。示例如下:CREATE DATABASE IF NOT EXISTS db_storage_format LOCATION 'oss://path/to/db/' WITH DBPROPERTIES ('storage.format'='delta');执行以上语句后,在
db_storage_format库下创建的表默认为delta类型。如您建表时通过using ${tableFormat}显式指定表类型,则优先以显式指定的表类型为准。
数据湖表操作
按您选择的引擎和湖格式,参见对应文档完成建表与读写操作:
数据湖表:按湖格式查看对应引擎的读写文档,请参见数据湖表。
生命周期管理:管理湖表的版本、快照和过期数据,请参见数据湖生命周期管理。
性能优化:提升湖表查询性能,请参见湖存储优化与湖存储加速(LakeCache)。
数据接入: