本文介绍使用 TCHouse-C 前需要了解的核心概念。分为基础设施层和数据引擎层两个部分,帮助您快速建立对产品的整体认知。
基础设施概念
地域(Region)
指 TCHouse-C 集群所在的物理地理区域(如北京、上海、广州、新加坡等)。不同地域之间网络完全隔离,跨地域数据访问需通过公网或专线。集群创建后不可更换地域,请根据业务用户分布就近选择。
可用区(Availability Zone)
同一地域内电力和网络相互独立的物理数据中心,在同一地域内选择不同可用区可提升容灾能力。
集群(Cluster)
TCHouse-C 的基本服务单元。一个集群由以下组件构成:
组件 | 说明 |
ClickHouse 计算节点 | 负责数据存储和查询计算,可包含 1 个或多个分片 |
ZooKeeper/ClickHouse Keeper 管理节点 | 负责分布式协调,管理副本同步、DDL 操作等元数据 |
CLB 负载均衡 | 提供统一的集群访问入口,自动分发查询请求 |
分片(Shard)
TCHouse-C 将海量数据水平切分后分散到不同节点,每个节点承载数据的一部分。分片是数据水平扩展的基本单位。
模式 | 分片与节点的关系 |
单副本(非高可用) | 1 个分片 = 1 个节点 |
双副本(高可用) | 1 个分片 = 2 个节点(互为副本) |
副本(Replica)
为保障数据安全和服务高可用,TCHouse-C 支持将同一分片的数据冗余存储在两个节点上。两个节点互为副本,数据实时同步。
高可用(High Availability)
高可用模式下,每个分片配置两个副本。当某个节点发生故障时,查询自动路由到副本节点,实现用户无感知的故障切换,保障服务连续性。
说明:
生产环境请务必选择高可用模式。非高可用模式(单副本)适用于开发测试或对可用性要求不高的场景。
数据引擎概念
以下概念源自 ClickHouse 数据引擎,是理解 TCHouse-C 数据模型的关键。
表引擎(Table Engine)
表引擎决定了数据如何存储、索引、是否支持副本等核心行为。TCHouse-C 支持 ClickHouse 的完整引擎家族,最常用的包括:
引擎 | 说明 | 适用场景 |
MergeTree | 基础列式存储引擎,支持主键排序、分区、数据生命周期管理 | 单副本场景下的通用分析表 |
ReplicatedMergeTree | MergeTree 的副本版本,通过 ZooKeeper 实现跨节点数据同步 | 高可用场景下的标准选择 |
Distributed | 分布式路由表,将查询分发到所有分片并汇总结果 | 跨分片的全局查询入口 |
MaterializedView | 物化视图,数据写入时自动触发聚合计算并存储结果 | 预聚合加速、实时指标计算 |
本地表 vs 分布式表
类型 | 说明 |
本地表(Local Table) | 实际存储数据的表,每个分片上各有一份,使用 MergeTree 或 ReplicatedMergeTree 引擎 |
分布式表(Distributed Table) | 逻辑路由表,不存储数据,将查询自动分发到各分片的本地表并合并结果 |
说明:
数据写入推荐直接写入本地表(或通过分布式表路由写入),查询通过分布式表进行,以获得全局视图。
分区(Partition)
在表引擎层面,数据可按某个字段(通常是日期)进行分区。分区的好处:
查询时自动裁剪无关分区,减少扫描数据量;
支持按分区快速删除历史数据(
ALTER TABLE ... DROP PARTITION);分区粒度建议按月或按天,避免分区数过多导致元数据膨胀。
数据压缩
ClickHouse 默认对列式数据进行高效压缩,TCHouse-C 支持 LZ4(默认,速度优先)和 ZSTD(压缩比优先)两种算法。实测典型业务数据压缩比可达 10:1,大幅降低存储成本。
概念关系总览
集群 (Cluster)├── ZooKeeper 节点 × 3(协调服务)├── 分片 1 (Shard 1)│ ├── 副本 A(计算节点)── 本地表 + 数据│ └── 副本 B(计算节点)── 本地表 + 数据(与 A 同步)├── 分片 2 (Shard 2)│ ├── 副本 A│ └── 副本 B└── 分布式表(Distributed Table)── 查询路由到所有分片