目录
一、冷热分层介绍
二、存储策略(Storage policy)
2.1 创建存储资源
2.2 创建存储策略
2.3 使用存储策略
三、使用限制
一、冷热分层介绍
冷热分层支持所有 Doris 功能,只是把部分数据放到对象存储上,以节省成本,不牺牲功能。因此有如下特点:
- 冷数据放到对象存储上,用户无需担心数据一致性和数据安全性问题
- 灵活的 Freeze 策略,冷却远程存储 Property 可以应用到表和 Partition 级别
- 用户查询数据,无需关注数据分布位置,若数据不在本地,会拉取对象上的数据,并 cache 到 BE 本地
- 副本 clone 优化,若存储数据在对象上,则副本 clone 的时候不用去拉取存储数据到本地
- 远程对象空间回收 recycler,若表、分区被删除,或者冷热分层过程中异常情况产生的空间浪费,则会有 recycler 线程周期性的回收,节约存储资源
- cache 优化,将访问过的冷数据 cache 到 BE 本地,达到非冷热分层的查询性能
- BE 线程池优化,区分数据来源是本地还是对象存储,防止读取对象延时影响查询性能
二、存储策略(Storage policy)
存储策略是使用冷热分层功能的入口,用户只需要在建表或使用 Doris 过程中,给表或分区关联上 Storage policy,即可以使用冷热分层的功能。
2.1 创建存储资源
仅 root 或 admin 用户可以创建资源。目前支持 Spark, ODBC, S3, JDBC, HDFS, HMS, ES 外部资源。
#创建资源
CREATE RESOURCE "s3_minio"
PROPERTIES
(
"type" = "s3",
"s3.endpoint" = "http://192.168.179.134:9000",
"s3.region" = "bj",
"s3.access_key" = "minio",
"s3.secret_key" = "minio123456",
"s3.root.path" = "/data/opt/minio/data",
"s3.bucket" = "doris"
);# 查看资源
SHOW RESOURCES WHERE NAME = "s3_minio";
#删除资源
DROP RESOURCE s3_minio
2.2 创建存储策略
#创建存储测试
CREATE STORAGE POLICY s3_minio_policy PROPERTIES (
"storage_resource" = "s3_minio",
"cooldown_ttl" = "1d"
)
#查看存储策略
SHOW STORAGE POLICY;#删除存储策略
DROP STORAGE POLICY s3_minio_policy
2.3 使用存储策略
新建表时指定存储策略:
CREATE TABLE IF NOT EXISTS create_table_use_created_policy (
k1 BIGINT,
k2 LARGEINT,
v1 VARCHAR(2048)
)
UNIQUE KEY(k1)
DISTRIBUTED BY HASH (k1) BUCKETS 3
PROPERTIES(
"storage_policy" = "s3_minio_policy"
);
对一个已存在的表,关联 Storage policy:
ALTER TABLE create_table_not_have_policy set ("storage_policy" = "s3_minio_policy");
对一个已存在的 partition,关联 Storage policy:
ALTER TABLE create_table_partition MODIFY PARTITION (*) SET("storage_policy"="s3_minio_policy");
三、使用限制
- 单表或单 Partition 只能关联一个 Storage policy,关联后不能 Drop 掉 Storage policy,需要先解除二者的关联。
- Storage policy 关联的对象信息不支持修改数据存储 path 的信息,比如 bucket、endpoint、root_path 等信息
- Storage policy 支持创建 和修改和支持删除,删除前需要先保证没有表引用此 Storage policy。
- Unique 模型在开启 Merge-on-Write 特性时,不支持设置 Storage policy。