ClickHouse Cloud — 兼容性指南
本指南概述了 ClickHouse Cloud 在功能和操作方面的预期。虽然 ClickHouse Cloud 基于开源 ClickHouse 发行版,但在架构和实现上可能存在一些差异。您可能会发现这篇关于我们如何构建 ClickHouse Cloud 的博客很有趣,并可以作为背景阅读。
ClickHouse Cloud 架构
ClickHouse Cloud 显著简化了操作开销,并降低了大规模运行 ClickHouse 的成本。无需预先调整部署大小、设置复制以实现高可用性、手动分片数据、在工作负载增加时扩展服务器或在不使用时缩减服务器规模 — 这些都由我们处理。
这些优势源于 ClickHouse Cloud 的底层架构选择
- 计算和存储是分离的,因此可以沿不同的维度自动扩展,因此您不必在静态实例配置中过度配置存储或计算。
- 基于对象存储的分层存储和多级缓存提供了几乎无限的扩展能力和良好的性价比,因此您不必预先调整存储分区的大小,也不必担心高昂的存储成本。
- 高可用性是默认开启的,并且复制是透明管理的,因此您可以专注于构建应用程序或分析数据。
- 针对可变连续工作负载的自动扩展是默认开启的,因此您不必预先调整服务大小、在工作负载增加时扩展服务器或在活动减少时手动缩减服务器规模
- 针对间歇性工作负载的无缝休眠是默认开启的。我们在一段时间不活动后会自动暂停您的计算资源,并在新查询到达时透明地重新启动它,因此您不必为闲置资源付费。
- 高级扩展控制提供了设置自动扩展最大值以进行额外成本控制或自动扩展最小值以预留计算资源用于具有特殊性能要求的应用程序的能力。
功能
ClickHouse Cloud 提供了对开源 ClickHouse 发行版中精选功能集的访问。下表描述了目前在 ClickHouse Cloud 中禁用的一些功能。
DDL 语法
在大多数情况下,ClickHouse Cloud 的 DDL 语法应与自管理安装中可用的语法相匹配。以下是一些值得注意的例外情况
- 目前不支持
CREATE AS SELECT
。作为一种变通方法,我们建议使用CREATE ... EMPTY ... AS SELECT
,然后插入到该表(有关示例,请参见此博客)。 - 某些实验性语法可能被禁用,例如
ALTER TABLE … MODIFY QUERY
语句。 - 出于安全目的,某些内省功能可能会被禁用,例如
addressToLine
SQL 函数。 - 请勿在 ClickHouse Cloud 中使用
ON CLUSTER
参数 - 这些参数是不需要的。虽然这些大多是空操作函数,但如果您尝试使用宏,它们仍然可能导致错误。宏通常在 ClickHouse Cloud 中不起作用,也不需要。
数据库和表引擎
ClickHouse Cloud 默认提供高可用性、复制的服务。因此,所有数据库和表引擎都是“Replicated”。您无需指定“Replicated” - 例如,在 ClickHouse Cloud 中使用时,ReplicatedMergeTree
和 MergeTree
是相同的。
支持的表引擎
- ReplicatedMergeTree(默认,未指定时)
- ReplicatedSummingMergeTree
- ReplicatedAggregatingMergeTree
- ReplicatedReplacingMergeTree
- ReplicatedCollapsingMergeTree
- ReplicatedVersionedCollapsingMergeTree
- MergeTree(转换为 ReplicatedMergeTree)
- SummingMergeTree(转换为 ReplicatedSummingMergeTree)
- AggregatingMergeTree(转换为 ReplicatedAggregatingMergeTree)
- ReplacingMergeTree(转换为 ReplicatedReplacingMergeTree)
- CollapsingMergeTree(转换为 ReplicatedCollapsingMergeTree)
- VersionedCollapsingMergeTree(转换为 ReplicatedVersionedCollapsingMergeTree)
- URL
- View
- MaterializedView
- GenerateRandom
- Null
- Buffer
- Memory
- Deltalake
- Hudi
- MySQL
- MongoDB
- NATS
- RabbitMQ
- PostgreSQL
- S3
接口
ClickHouse Cloud 支持 HTTPS、原生接口和 MySQL wire 协议。对更多接口(如 Postgres)的支持即将推出。
字典
字典是加速 ClickHouse 中查找的一种常用方法。ClickHouse Cloud 目前支持来自 PostgreSQL、MySQL、远程和本地 ClickHouse 服务器、Redis、MongoDB 和 HTTP 源的字典。
联邦查询
我们支持用于云中跨集群通信以及与外部自管理 ClickHouse 集群通信的联邦 ClickHouse 查询。ClickHouse Cloud 目前支持使用以下集成引擎的联邦查询
- Deltalake
- Hudi
- MySQL
- MongoDB
- NATS
- RabbitMQ
- PostgreSQL
- S3
尚不支持与某些外部数据库和表引擎(如 SQLite、ODBC、JDBC、Redis、HDFS 和 Hive)的联邦查询。
用户自定义函数
用户自定义函数是 ClickHouse 中的一项最新功能。ClickHouse Cloud 目前仅支持 SQL UDF。
实验性功能
为了确保服务部署的稳定性,ClickHouse Cloud 服务中禁用了实验性功能。
Kafka
Kafka 表引擎在 ClickHouse Cloud 中通常不可用。相反,我们建议依赖于将 Kafka 连接组件与 ClickHouse 服务分离的架构,以实现关注点分离。我们建议使用 ClickPipes 从 Kafka 流中提取数据。或者,考虑 Kafka 用户指南 中列出的基于推送的替代方案。
命名集合
命名集合在 ClickHouse Cloud 中目前不支持。
操作默认值和注意事项
以下是 ClickHouse Cloud 服务的默认设置。在某些情况下,这些设置是固定的,以确保服务的正确运行,而在其他情况下,可以调整这些设置。
操作限制
max_parts_in_total: 10,000
MergeTree 表的 max_parts_in_total
设置的默认值已从 100,000 降低到 10,000。此更改的原因是我们观察到,大量数据 part 可能会导致云中服务启动时间缓慢。大量 part 通常表示选择了过于精细的分区键,这通常是意外完成的,应避免。默认值的更改将允许更早地检测到这些情况。
max_concurrent_queries: 1,000
将此每服务器设置从默认值 100 增加到 1000,以允许更高的并发性。这将为开发服务带来 2,000 个并发查询,为生产带来 3,000 个并发查询。
max_table_size_to_drop: 1,000,000,000,000
将此设置从 50GB 增加到允许删除最大 1TB 的表/分区。
系统设置
ClickHouse Cloud 针对可变工作负载进行了调整,因此目前大多数系统设置都是不可配置的。我们不认为大多数用户需要调整系统设置,但如果您对高级系统调整有疑问,请联系 ClickHouse Cloud 支持。
高级安全管理
作为创建 ClickHouse 服务的一部分,我们创建一个默认数据库和一个对该数据库具有广泛权限的默认用户。此初始用户可以创建其他用户并将其权限分配给此数据库。除此之外,目前不支持使用 Kerberos、LDAP 或 SSL X.509 证书身份验证在数据库中启用以下安全功能。
路线图
我们正在云中引入对可执行 UDF 的支持,并评估对许多其他功能的需求。如果您有反馈,请在此处提交。