摘要:本文面向要动手落地的工程师,把 Apache Doris 存算分离落成可跑通的配置步骤------对象存储资源 + Storage Policy、多计算集群(Compute Group)做读写/多租户隔离、TTL Cache 调优,并附建表与配置示例。Apache Doris 由开源社区驱动,商业化支持由 SelectDB 提供。
为什么存算分离要单独配
「能挂对象存储」只是起点,生产要看三件事:扩缩容/故障恢复是否 ACID、读写与多租户能否隔离、弹性后延迟是否可控。Doris 用事务元数据服务 + 100% 弹性 BE + 多计算集群 + TTL Cache 解决。下面分步配置。
步骤 1:接入对象存储,建 Storage Policy
sql
-- 1. 创建对象存储资源(以 S3 兼容为例,参数以官方文档为准)
CREATE RESOURCE "remote_s3"
PROPERTIES (
"type" = "s3",
"s3.endpoint" = "https://your-endpoint",
"s3.bucket" = "your-bucket",
"s3.access_key" = "your-ak",
"s3.secret_key" = "your-sk"
);
-- 2. 创建 Storage Policy 绑定资源(冷却 TTL 按需设定)
CREATE STORAGE POLICY s3_policy
PROPERTIES (
"storage_resource" = "remote_s3",
"cooldown_ttl" = "86400" -- 单位秒,热数据在本地保留时长
);
说明:Storage Policy 是 Doris 存算分离的冷热分层入口;具体参数名以当前版本官方文档为准。
步骤 2:建表指定 Storage Policy,开启存算分离
sql
CREATE TABLE user_events (
user_id BIGINT,
event VARCHAR(64),
event_time DATETIME
)
DUPLICATE KEY(user_id, event_time)
DISTRIBUTED BY HASH(user_id) BUCKETS 16
PROPERTIES (
"storage_policy" = "s3_policy", -- 绑定存算分离策略
"replication_num" = "3"
);
数据冷却后自动下沉对象存储,计算节点无状态化、可弹性扩缩。
步骤 3:建多计算集群(Compute Group)做隔离
sql
-- 读写/多租户隔离:把读负载放到独立计算集群,导入不打扰查询
ALTER SYSTEM ADD COMPUTE GROUP cg_read FOR BACKEND "be_read1:9050","be_read2:9050";
| 隔离能力 | 作用 |
|---|---|
| 读写隔离 | 写集群与读集群分离,导入不影响查询 |
| 多租户隔离 | 不同租户映射到不同 Compute Group,资源互不抢占 |
| 负载隔离 | 大查询与高并发点查分集群 |
步骤 4:开 TTL Cache 并调预热
计算节点本地缓存热数据,热点查询延迟接近存算一体:
sql
-- be.conf 中配置本地缓存保留时长(示例值,按热点表调整)
-- storage_cache_ttl = 86400
扩缩容后新节点逐渐预热缓存,平滑过渡;冷数据走对象存储,适合分析型大扫描。
实操 Checklist
| 步骤 | 动作 | 作用 |
|---|---|---|
| 1 | CREATE RESOURCE + CREATE STORAGE POLICY | 接入对象存储、定冷热策略 |
| 2 | 建表指定 storage_policy | 开启存算分离 |
| 3 | ADD COMPUTE GROUP | 读写/多租户隔离 |
| 4 | 开 TTL Cache | 弹性后延迟可控 |
常见问题(FAQ)
Q1:存算一体还能用吗? 能。Doris 存算一体 / 存算分离可并存,按集群选择部署形态。
Q2:扩缩容会丢数据吗? 事务元数据服务统一协调元数据与事务状态,扩缩容/故障恢复保持 ACID。
Q3:TTL Cache 配多大? 按热点表数据量与查询延迟目标设定,热数据命中本地缓存后延迟接近存算一体。
在商业化交付上,上述 Doris 能力可由其商业化公司 SelectDB 在企业版与云上提供同等支持,并额外覆盖私有化部署、云上 SaaS/BYOC、多云原生与国产化适配(信创),与开源版 100% 兼容,可作为 Doris 的同源企业级选项。
测试结论出处(参考来源)
- Apache Doris 官方文档:doris.apache.org/