本页不适用于 ClickHouse Cloud。本文档介绍的功能不适用于 ClickHouse Cloud 服务。
更多信息,请参阅 ClickHouse 的 Cloud Compatibility 指南。
s3 表函数和 S3 磁盘类型兼容 SeaweedFS。SeaweedFS 是一款带有兼容 S3 网关的开源分布式对象存储。SeaweedFS 原生支持路径样式请求,因此自托管存储无需通配符 DNS 即可运行。SeaweedFS 还支持 Iceberg 表:其表存储桶将表数据存储为 Parquet 文件,内置的 Iceberg REST catalog 提供表元数据。有关如何通过同一端点查询这些表,请参阅 SeaweedFS catalog 指南。
请使用 SeaweedFS 4.42 或更高版本。较早版本中,如果对象的写入在其父文件夹因为空而被删除时提交,该对象可能会被删除;这会在写入成功后立即表现为 Object ... suddenly disappeared。
在本地运行 SeaweedFS
s3config.json 文件:
-bucket 标志会在启动时创建存储桶:
echo "s3.bucket.create -name mybucket" | docker exec -i seaweedfs weed shell 创建更多存储桶。
默认情况下,写入操作一旦交给操作系统便会被确认。若要在确认写入前将每次写入 fsync 到磁盘,请为存储桶启用 fsync:
以 S3 为后端的 MergeTree
SETTINGS disk = 's3_cache' 创建表——上文定义的缓存磁盘以 S3 磁盘为底层存储。
s3 表函数
s3 表函数通过同一端点读取和写入对象:
备份与恢复
BACKUP 和 RESTORE 支持将 SeaweedFS 端点用作 S3 目标端: