StarRocks 巧用 Storage Volume,强大又便捷

前言

StarRocks 存算分离支持使用各种外部独立存储系统来存储业务数据。在早期 3.0 版本中,用户需要在 fe.conf 中配置存储相关信息(如 endpoint 等),这种静态配置模式也给用户使用带来了很多的不便性。

为此,StarRocks 存算分离从 3.1.0 版本后推出了 Storage Volume 能力,支持用户动态地为集群创建存储资源。需要说明的是,Storage Volume 仅限于在存算分离集群中使用。

解释

Storage Volume 代表的是存储资源,例如在 S3 兼容类存储系统上可以是一个 Bucket,在 HDFS 上可以是一个存储目录。

基本用法

创建 Storage Volume

具体可以参考文档

CREATE STORAGE VOLUME | StarRocksdocs.starrocks.io/zh/docs/sql-reference/sql-statements/Administration/CREATE_STORAGE_VOLUME/

删除 Storage Volume

具体可以参考文档

DROP STORAGE VOLUME | StarRocksdocs.starrocks.io/zh/docs/sql-reference/sql-statements/Administration/DROP_STORAGE_VOLUME/

显示所有 Storage Volume

可参考下面链接的命令来展示系统中所有的 Storage Volumes

SHOW STORAGE VOLUMES | StarRocksdocs.starrocks.io/zh/docs/sql-reference/sql-statements/Administration/SHOW_STORAGE_VOLUMES/

展示 Storage Volume 属性

具体可以参考文档

DESC STORAGE VOLUME | StarRocksdocs.starrocks.io/zh/docs/sql-reference/sql-statements/Administration/DESC_STORAGE_VOLUME/

修改 Storage Volume 属性

具体可以参考文档

ALTER STORAGE VOLUME | StarRocksdocs.starrocks.io/zh/docs/sql-reference/sql-statements/Administration/ALTER_STORAGE_VOLUME/

创建表

我们可以为存算分离表每个表指定特定的 Storage Volume,可以在建表时通过属性设置,具体可参考文档 https://docs.starrocks.io/zh/docs/sql-reference/sql-statements/data-definition/CREATE_TABLE/。

具体的写法如下:

CREATE TABLE table_name (column_1, column_2, ...) PROPERTIES ("storage_volume" = "<volume_name>" )

设置默认 Storage Volume

我们可以为系统创建一个 Storage Volume 并将其设置为系统默认值,避免需要每次建表时指定,如果我们建表时不指定,就使用该默认 Volume 存储数据。具体可参考文档

SET DEFAULT STORAGE VOLUME | StarRocksdocs.starrocks.io/zh/docs/sql-reference/sql-statements/Administration/SET_DEFAULT_STORAGE_VOLUME/

关于 builtin_storage_volume

Storage Volume 概念从 3.1 版本开始引入,在 3.0 版本中并没有,为了处理升级兼容性问题,如果用户从 3.0 升级至 3.1 版本,且在 fe.conf 中配置了 enable_load_volume_from_conf 为 true,系统会兼容 3.0 行为,根据 fe.conf 里配置的存储信息自动创建一个 builtin_storage_volume,且该 volume 会自动被设置为 default。

基于 AWS S3 部署 | StarRocksdocs.starrocks.io/zh/docs/deployment/shared_data/s3/#enable_load_volume_from_conf

举个例子,如果 fe.conf 里配置了如下内容:

cloud_native_storage_type = S3

例如 testbucket/subpath

aws_s3_path = <s3_path>

例如 us-west-2

aws_s3_region = <region>

例如 https://s3.us-west-2.amazonaws.com

aws_s3_endpoint = <endpoint_url>

enable_load_volume_from_conf = true

系统会使用上面的配置信息自动创建一个 S3 类型的 builtin_storage_volume。需要注意的是,该配置只会第一次加载。

优势

灵活使用 Storage Volume,可以给我们带来以下好处:

  1. 无需提前配置,随配随用,使用起来更方便

  2. 如果发现 Storage Volume 配置错误,可以随时使用命令修改,无需停服,可用性更高

  3. 可以在单个集群内创建多个 Storage Volume(数量无限制),且为不同的表指定不同的 Storage Volume,这样不同的表数据可以存储在不同的地方,可带来更好的数据隔离性

  4. 不同的 Storage Volume 还可以使用不同的存储系统(如 Volume A 使用 S3,Volume B 使用 HDFS),带来更多的灵活性

注意事项

  1. 强烈建议不要在 fe.conf 中配置存储信息,均通过 Storage Volume 来配置系统的存储资源,后续我们也会将静态配置的方式禁用

  2. 删除 Storage Volume 前需要将引用它的 Table 或者 Database 先删除(注意使用 drop table xxx force)

  3. 为某个表切换 Storage Volume 的功能不支持,这涉及数据迁移

相关推荐
2301_765703143 分钟前
Python迭代器(Iterator)揭秘:for循环背后的故事
jvm·数据库·python
倔强的石头10611 分钟前
关键信息基础设施的数据库选型:高可用、全链路安全与平滑替代的技术实践
数据库·安全·金仓数据库
人道领域33 分钟前
javaWeb从入门到进阶(SpringBoot事务管理及AOP)
java·数据库·mysql
煎蛋学姐38 分钟前
SSM音乐播放软件的开发与实现7g5j0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·javaweb 开发·前后端开发
2301_8213696141 分钟前
使用Python进行图像识别:CNN卷积神经网络实战
jvm·数据库·python
星空露珠44 分钟前
速算24点所有题库公式
开发语言·数据库·算法·游戏·lua
m0_561359671 小时前
使用Kivy开发跨平台的移动应用
jvm·数据库·python
sheji52611 小时前
JSP基于信息安全的读书网站79f9s--程序+源码+数据库+调试部署+开发环境
java·开发语言·数据库·算法
海域云-罗鹏1 小时前
国内公司与英国总部数据中心/ERP系统互连,SD-WAN专线实操指南
大数据·数据库·人工智能
qq_423233902 小时前
如何用FastAPI构建高性能的现代API
jvm·数据库·python