本指南概述了 ClickHouse Cloud 在功能和运维方面的预期表现。虽然 ClickHouse Cloud 基于开源发行版 ClickHouse,但在架构和实现上可能存在一些差异。作为背景资料,你可能会对这篇介绍我们如何构建 ClickHouse Cloud的博文感兴趣。
ClickHouse Cloud 架构
ClickHouse Cloud 显著简化了运维负担,并降低了大规模运行 ClickHouse 的成本。您无需预先确定部署规模、为高可用配置复制、手动对数据进行分片、在工作负载增加时扩容服务器,或在不使用时将其缩容——这些都由我们代为处理。
这些优势得益于 ClickHouse Cloud 底层的架构设计:
- 计算与存储相互分离,因此可以分别沿不同维度自动扩缩容。这样一来,您无需在静态实例配置中对存储或计算资源进行过度预配。
- 基于对象存储的分层存储与多级缓存相结合,提供了近乎无限的扩展能力和良好的性价比,因此您无需预先规划存储容量,也不必担心高昂的存储成本。
- 默认启用高可用,且复制由系统透明管理,因此您可以专注于构建应用程序或分析数据。
- 默认启用针对持续变化工作负载的自动扩缩容,因此您无需预先确定服务规模,也无需在工作负载增加时扩容服务器,或在活动减少时手动将服务器缩容
- 默认启用针对间歇性工作负载的无缝休眠。我们会在一段时间无活动后自动暂停您的计算资源,并在有新查询到达时透明地重新启动,因此您无需为空闲资源付费。
- 高级扩缩容控制允许您设置自动扩缩容上限,以进一步控制成本;也可以设置自动扩缩容下限,为有特定性能要求的应用程序预留计算资源。
功能
ClickHouse Cloud 提供对 ClickHouse 开源发行版中一系列精选功能的访问。下表列出了当前在 ClickHouse Cloud 中已禁用的部分功能。
数据库和表引擎
ClickHouse Cloud 默认是一项高可用且具备副本能力的服务,构建在 SharedMergeTree 表引擎家族之上。当你使用标准的 MergeTree 家族引擎创建表时,Cloud 会自动替换为对应的 Shared* 引擎。你无需自行添加 Shared 或 Replicated 前缀。
| 你指定 | Cloud 使用 |
|---|---|
MergeTree (或不指定引擎) |
SharedMergeTree |
ReplacingMergeTree |
SharedReplacingMergeTree |
SummingMergeTree |
SharedSummingMergeTree |
AggregatingMergeTree |
SharedAggregatingMergeTree |
CollapsingMergeTree |
SharedCollapsingMergeTree |
VersionedCollapsingMergeTree |
SharedVersionedCollapsingMergeTree |
GraphiteMergeTree |
SharedGraphiteMergeTree |
Replicated* 引擎也会转换为对应的 Shared* 引擎。你可以在 SHOW CREATE TABLE 中看到这种替换:即使你的语句中指定的是普通变体,显示结果中仍会报告 Shared* 引擎。
以下表引擎也受支持,并会按原样使用。受支持的 MySQL 表引擎不同于不受支持的 MySQL 数据库引擎:
- URL
- View
- MaterializedView
- GenerateRandom
- Null
- Buffer
- Memory
IcebergS3和IcebergAzure- Deltalake
- Hudi
- MySQL
- MongoDB
- NATS
- RabbitMQ
- PostgreSQL
- S3
- Kafka
可在部分 ClickHouse Cloud 服务上启用 Experimental PaimonS3 和 PaimonAzure 表引擎。请联系 Support 确认可用性。
接口
ClickHouse Cloud 支持 HTTPS、原生接口以及 MySQL wire 协议。对 Postgres 等更多接口的支持即将上线。
字典
字典是在 ClickHouse 中加速查找操作的常用方式。ClickHouse Cloud 目前支持基于 PostgreSQL、MySQL、远程和本地 ClickHouse 服务器、Redis、MongoDB 以及 HTTP 源的字典。
联邦查询
我们支持在云环境中通过联邦 ClickHouse 查询实现跨集群通信,也支持与外部自管理 ClickHouse 集群进行通信。ClickHouse Cloud 目前支持使用以下集成引擎的联邦查询:
IcebergS3和IcebergAzurePaimonS3和PaimonAzure(实验性;请联系 Support 了解可用性)- Deltalake
- Hudi
- MySQL
- MongoDB
- NATS
- RabbitMQ
- PostgreSQL
- S3
目前尚不支持通过某些外部数据库和表引擎进行联邦查询,例如 SQLite、ODBC、JDBC、Redis、HDFS 和 Hive。
用户自定义函数
ClickHouse Cloud 中的用户自定义函数目前处于Public Beta阶段。
设置行为
这意味着:
- 会话级设置 (通过
SET语句设置) 不会传递到 UDF 的执行上下文中 - 用户 profile 设置不会被 UDFs 继承
- 查询级设置在 UDF 执行期间不生效
Experimental 功能
为确保服务部署的稳定性,ClickHouse Cloud 服务默认禁用 Experimental 功能。
命名集合
部分 ClickHouse Cloud 服务支持启用通过 DDL 创建的命名集合。请联系 Support 确认可用性。由于用户无法修改 ClickHouse Cloud 中的服务器配置文件,因此无法使用在配置文件中定义的命名集合。
运行默认值与注意事项
以下是 ClickHouse Cloud 服务的默认设置。其中部分设置为固定值,以确保服务正常运行;其余设置则可以调整。
运行限制
max_parts_in_total: 10,000
MergeTree 表的 max_parts_in_total 设置默认值已从 100,000 下调至 10,000。之所以做出这一调整,是因为我们观察到,大量数据分区片段很可能会导致云环境中服务启动缓慢。大量 parts 通常表明分区键划分得过细,而这往往是无意中造成的,应当避免。此次默认值调整将有助于更早发现这类情况。
max_concurrent_queries: 1,000
将此服务器级设置从默认的 100 提高到 1000,以支持更高的并发能力。
这样一来,服务可支持的并发查询数将为 副本数量 * 1,000。无论属于哪个层级,单副本服务最多支持 1000 个并发查询。Scale 和 Enterprise 层级上的多副本服务每个副本最多支持 1000 个并发查询。
max_table_size_to_drop: 1,000,000,000,000
将此设置从 50GB 提高,以允许删除最大可达 1TB 的表/分区。
系统设置
ClickHouse Cloud 已针对变化较大的工作负载进行了优化,因此目前大多数系统设置都不可配置。我们预计大多数用户都无需调整系统设置;但如果您对高级系统调优有任何疑问,请联系 ClickHouse Cloud Support。
高级安全管理
在创建 ClickHouse 服务时,我们会创建一个默认数据库,以及具有该数据库广泛权限的 default 用户。该初始用户可以创建其他用户,并为其分配对此数据库的权限。除此之外,目前暂不支持通过 Kerberos、LDAP 或 SSL X.509 证书身份验证在数据库内启用以下安全功能。
不支持的功能列表
下表列出了 ClickHouse Cloud 中标记为不支持的功能和自管理操作。每个条目均注明具体不受支持的能力,即使其来源页面也涵盖受支持的功能。
托管基础设施与运维
| 不支持的能力 | 文档 |
|---|---|
自管理 ClickHouse Keeper 的部署与配置 |
Keeper 指南, 保护 ZooKeeper 连接 |
| 手动配置 TLS 证书和服务器 | ACME 配置, TLS 配置 |
使用 TTL 手动配置热/温/冷存储层级 |
指南 |
| 在自管理硬件上运行性能测试 | 指南 |
| 应用自管理运维建议 | 指南 |
身份验证与安全
接口和集成
| 不支持的能力 | 文档 |
|---|---|
| PostgreSQL wire protocol 接口 | 参考 |
| 支持 PTY 的 SSH 接口 | 参考 |
MaterializedPostgreSQL 复制引擎 |
ClickPipes 指南, 连接器指南, 数据库引擎, 表引擎 |
ODBC 表引擎 |
参考 |
| MinIO 兼容 S3 的对象存储集成 | 指南 |
| Tigris 兼容 S3 的对象存储集成 | 指南 |
数据库和表引擎
| 不支持的能力 | 文档 |
|---|---|
MySQL 数据库引擎 |
参考 |
EmbeddedRocksDB 表引擎 |
参考 |
HDFS 表引擎 |
参考 |
Hive 表引擎 |
参考 |
JDBC 表引擎 |
参考 |
用于联邦查询的 Redis 表引擎 |
参考 |
SQLite 表引擎 |
参考 |
TimeSeries 表引擎 |
参考 |
YTsaurus 表引擎 |
参考 |
Log 系列表引擎 (Log、StripeLog 和 TinyLog) |
系列概览, Log, StripeLog, TinyLog |
字典和服务器配置
| 不支持的能力 | 文档 |
|---|---|
命名集合,以及 CREATE NAMED COLLECTION 和 ALTER NAMED COLLECTION 语句 |
概述、创建、修改 |
| 基于文件的字典配置 | 参考 |
| 内嵌 geobase 字典 | 参考 |
本地 YAMLRegExpTree 字典源 |
布局指南、源参考 |
YTsaurus 字典源 |
参考 |
| 在服务器上配置的日语分词器字典 | 参考 |
数据格式和编解码器
| 不支持的能力 | 文档 |
|---|---|
使用服务端 schema 文件的 CapnProto 格式 |
格式参考、指南 |
使用服务端 schema 文件的 Protobuf、ProtobufList 和 ProtobufSingle 格式 |
指南、ProtobufList、ProtobufSingle |
已废弃的 ZSTD_QAT 和 DEFLATE_QPL 编解码器 |
ZSTD_QAT、DEFLATE_QPL |
函数和 Experimental 功能
| 不支持的能力 | 文档 |
|---|---|
| Experimental 自然语言处理函数 | 参考 |
| 支持提交和回滚的 Experimental 多语句事务 | 指南 |
| Experimental 事务内部信息函数 | transactionID, transactionLatestSnapshot, transactionOldestSnapshot |
WindowView 的时间窗口函数 |
参考 |
Experimental WindowView |
参考 |
| WebAssembly 用户自定义函数 | 概述, 指南 |
| 基于驱动的可执行用户自定义函数 | 参考 |
面向服务器本地文件的 filesystem 表函数 |
参考 |
管理和访问控制
| 不支持的能力 | 文档 |
|---|---|
使用 ALTER TABLE 执行列统计信息操作 |
参考 |
使用 EXECUTE AS 模拟用户身份 |
参考 |
| 表引擎专属授权 | 授权, 服务器设置 |
GRANT ALL 权限简写 |
参考 |
使用 SYSTEM SHUTDOWN 关闭服务器 |
参考 |
使用 SYSTEM 语句启动和停止后台拉取 |
SYSTEM STOP FETCHES, SYSTEM START FETCHES |
使用 SYSTEM 语句启动和停止后台合并 |
SYSTEM STOP MERGES, SYSTEM START MERGES |
使用 SYSTEM 语句启动和停止后台 TTL 合并 |
SYSTEM STOP TTL MERGES, SYSTEM START TTL MERGES |
路线图
我们正在评估 ClickHouse Cloud 中许多其他功能的用户需求。如果你有反馈,或希望申请某项特定功能,请在此提交。