
1. 引言Apache Doris 作为一款高性能、实时的分析型数据库其数据存储能力是其核心优势之一。随着数据量的爆炸式增长和云原生架构的普及将数据存储在对象存储如 AWS S3、阿里云 OSS、腾讯云 COS 等已成为一种高性价比、高可扩展性的主流方案。本文将深入探讨 Doris 如何与对象存储协同工作实现数据的存储、访问与管理。2. 对象存储在 Doris 中的角色在 Doris 的架构中对象存储主要扮演两个关键角色冷数据存储Cold Storage将访问频率较低的历史数据从本地 SSD/HDD 迁移到成本更低的对象存储中释放本地存储空间同时保证数据可查询。外部表数据源External Table直接查询存储在对象存储上的 Parquet、ORC、CSV 等格式的数据文件无需将数据导入 Doris实现“存算分离”的湖仓一体查询。3. 核心存储机制冷热数据分层Doris 通过其“冷热数据分层”功能将表数据自动或手动地在不同存储介质间迁移。3.1 数据生命周期管理用户可以为表或分区定义存储策略Storage Policy指定数据在创建后多久从本地热存储Hot迁移到对象存储冷存储Cold。-- 示例创建表时指定冷热分层策略 CREATE TABLE user_behavior ( user_id BIGINT, item_id BIGINT, behavior_type VARCHAR(10), ts DATETIME ) DUPLICATE KEY(user_id, item_id) PARTITION BY RANGE(ts) () DISTRIBUTED BY HASH(user_id) BUCKETS 10 PROPERTIES ( storage_policy s3_cold_policy, -- 关联到已创建的存储策略 storage_cooldown_ttl 30 DAY -- 30天后数据冷却到对象存储 );3.2 存储策略配置存储策略定义了数据冷却的目标位置对象存储的 Bucket 和路径以及认证信息。-- 创建指向 AWS S3 的存储策略 CREATE RESOURCE s3_cold_resource PROPERTIES ( type s3, s3.endpoint https://s3.amazonaws.com, s3.region us-east-1, s3.bucket my-doris-cold-data, s3.root.path /backup, s3.access_key your_access_key, s3.secret_key your_secret_key ); CREATE STORAGE POLICY s3_cold_policy PROPERTIES ( storage_resource s3_cold_resource, cooldown_datetime 2025-12-31 23:59:59 -- 可选的绝对冷却时间 );4. 直接查询对象存储外部表除了冷存储Doris 可以通过外部表External Table功能直接查询对象存储上的数据实现数据“零导入”分析。-- 创建基于 S3 上 Parquet 文件的外部表 CREATE EXTERNAL TABLE ex_user_behavior_s3 ( user_id BIGINT, item_id BIGINT, behavior_type VARCHAR(10), ts DATETIME ) ENGINEFILE PROPERTIES ( file.meta {\format\:\parquet\, \column_separator\:\,\, \line_delimiter\:\\\n\}, broker.name s3_broker, path s3://my-doris-external-data/logs/*.parquet );创建后即可像查询普通 Doris 表一样使用 SQL 分析对象存储中的数据。5. 配置与连接详解5.1 支持的对象存储服务AWS S3及兼容协议如 MinIO阿里云 OSS腾讯云 COS华为云 OBS其他兼容 S3 协议的服务5.2 关键配置参数参数说明示例s3.endpoint对象存储服务端点https://s3.amazonaws.coms3.region存储区域us-east-1s3.bucket存储桶名称my-doris-datas3.access_key/secret_key访问密钥或使用 IAM 角色-use_path_style是否使用路径风格访问针对某些兼容 S3 的服务true6. 性能优化与最佳实践6.1 冷数据查询性能查询冷数据时数据需从对象存储拉取到本地缓存首次查询会有延迟。建议合理设置冷却时间确保真正“冷”的数据才被迁移。利用 Doris 的查询缓存和本地磁盘缓存如果配置加速重复查询。6.2 外部表查询优化文件格式优先使用列式存储格式Parquet、ORC它们具有更好的压缩比和查询性能。分区与分桶如果对象存储上的数据已按日期、地区等分区创建外部表时可通过指定路径模式利用分区剪枝。并发度调整broker的并发参数以平衡查询速度和对象存储的请求压力。6.3 成本与安全管理生命周期规则在对象存储侧配置生命周期规则自动将更旧的数据转为归档存储如 S3 Glacier进一步降低成本。权限控制遵循最小权限原则为 Doris 使用的 IAM 角色或 Access Key 配置仅必要的读写权限。监控与告警监控对象存储的 API 调用次数、数据取回量及费用。7. 总结Doris 与对象存储的深度集成为用户提供了灵活、经济高效的数据存储解决方案。通过冷热数据分层可以显著降低海量历史数据的存储成本通过外部表可以实现对数据湖中数据的直接、高性能查询。在实际应用中应根据业务的数据访问模式、成本预算和性能要求精心设计存储策略与数据分布从而最大化 Doris 分析引擎与对象存储弹性扩展能力的价值。