暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ClickHouse与开源的Amazon S3对象存储2

ClickHouse开发者 2021-04-12
1316

ClickHouse 主要支持DiskLocal
DiskS3
两种常用的磁盘类型, Default 使用的就是 DiskLocal, DiskS3 就是接下来讨论的 S3 了。

S3 服务这块仍然使用 MinIO,具体可以参考ClickHouse 与开源的 Amazon S3 对象存储

配置环境

存储配置可以放到 config.xml 里,也可以以独立的 xml 放到 config.d 目录下,推荐后者,重启服务时会自动加载 config.d 目录下的配置。

创建一个文件/etc/clickhouse-server/config.d/storage.xml
, 并存如以下内容,

<?xml version="1.0"?><yandex><storage_configuration>      <disks>        <default>          <keep_free_space_bytes>1024</keep_free_space_bytes>        </default>        <s3>          <type>s3</type>   <endpoint>http://192.168.25.144:9000/clickhouse/data/</endpoint>          <access_key_id>minio</access_key_id>          <secret_access_key>miniostorage</secret_access_key>        </s3>      </disks>      <policies>        <s3>          <volumes>            <s3>              <disk>s3</disk>            </s3>          </volumes>        </s3>      </policies>    </storage_configuration>    </yandex>
  • 磁盘(Disk):已经格式化成文件系统的块设备。
  • 默认磁盘(Default Disk):在服务器设置中通过 path 参数指定的数据存储,默认路径为/var/lib/clickhouse/。
  • 卷(Volume):有序的磁盘的集合。
  • 存储策略(Storage Policy):卷的集合以及卷之间数据移动的规则。

上面的配置就是创建一个叫 s3 的 Disk,类型为 s3,对应的存储策略是 s3。

重启 ClickHouse

$ sudo clickhouse restart

建表与增删改查询

  • Create Table
CREATE TABLE default.s3mergetree(    `VendorID` UInt8,    `VendorName` String,    `Comment` String)ENGINE = MergeTreePARTITION BY VendorNameORDER BY VendorIDSETTINGS storage_policy = 's3'

存储策略选择s3
, 引擎选择MergeTree

  • Insert
INSERT INTO default.s3mergetree(VendorID,VendorName) VALUES (1'VendorX') (2'VendorY')
  • Select
select * from s3mergetree┌─VendorID─┬─VendorName─┬─Comment─┐│        2 │ VendorY    │         │└──────────┴────────────┴─────────┘┌─VendorID─┬─VendorName─┬─Comment─┐│        1 │ VendorX    │         │└──────────┴────────────┴─────────┘
ALTER TABLE s3mergetree    UPDATE Comment = '测试' WHERE VendorName = 'VendorX';select * from s3mergetree where VendorID=1;┌─VendorID─┬─VendorName─┬─Comment─┐│        1 │ VendorX    │ 测试     │└──────────┴────────────┴─────────┘

不支持对分区键(VendorName)修改。

alter table s3mergetree delete where VendorID=1;SELECT * FROM s3mergetree┌─VendorID─┬─VendorName─┬─Comment─┐│        2 │ VendorY    │         │└──────────┴────────────┴─────────┘
  • 清空表
TRUNCATE TABLE s3mergetree
  • 删除表
drop table s3mergetree

计算、存储分离

Schema 在本地,

而数据存存到 S3 中,

欢迎关注公众号


关注 「 ClickHouse开发者 」 , 获取更多技术干货

开发者小编补充:文章中提到的如何使用在 S3 上使用 ClickHouse,社区现在也有一个PR[1]大家也可以参考使用。

参考资料

[1]

PR: https://github.com/ClickHouse/ClickHouse/pull/11058


文章转载自ClickHouse开发者,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论