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