产品概述
ClickHouse是一个开源的列式数据库管理系统,专门用于在线分析处理(OLAP)场景。它具有高性能、高可靠性、高可扩展性和低成本等优点,被广泛应用于大数据领域。
以下是ClickHouse的主要特点:
-
高性能:ClickHouse采用列式存储结构,能够快速处理大量数据。它支持高并发查询和复杂的分析操作,能够在秒级别内返回查询结果。
-
高可靠性:ClickHouse具有强大的数据保护机制,支持数据备份、数据恢复和数据复制等功能,能够保证数据的安全性和可靠性。
-
高可扩展性:ClickHouse支持水平扩展和垂直扩展,能够轻松应对数据量的增长和查询负载的增加。
-
低成本:ClickHouse是一个开源的数据库管理系统,没有商业版权费用,能够降低企业的运营成本。
ClickHouse适用于以下场景:
-
大数据分析:ClickHouse能够快速处理大量数据,支持高并发查询和复杂的分析操作,适用于大数据分析场景。
-
实时数据处理:ClickHouse支持实时数据处理,能够在秒级别内返回查询结果,适用于实时数据处理场景。
-
时序数据处理:ClickHouse支持时序数据处理,能够快速处理时间序列数据,适用于时序数据处理场景。
Clickhouse集群架构
ClickHouse 采用典型的分组式的分布式架构,具体集群架构如上图所示:
-
Shard:集群内划分为多个分片或分组(Shard 0 … Shard N),通过 Shard 的线性扩展能力,支持海量数据的分布式存储计算。
-
Node:每个 Shard 内包含一定数量的节点(Node,即进程),同一 Shard 内的节点互为副本,保障数据可靠。ClickHouse 中副本数可按需建设,且逻辑上不同 Shard 内的副本数可不同。
-
ZooKeeper Service:集群所有节点对等,节点间通过 ZooKeeper 服务进行分布式协调。
Clickhouse存储架构
ClickHouse的数据存储层级关系包括以下几个层级:
- 数据库:ClickHouse的最高层级是数据库,一个ClickHouse实例可以包含多个数据库。
- 表:每个数据库可以包含多个表,每个表都有自己的列和行。
- 分区:每个表可以根据时间或其他条件进行分区,每个分区都是一个独立的数据块。
- 分段(目录):每个分区下会有一个或者多个目录。
- 列:每个数据块包含多个列,每个列都是一个独立的文件,包含该列的所有数据。
- 数据块:每个分区包含多个数据块,每个数据块都是一个独立的文件,包含一定数量的行数据。
相关概念
cluster(集群)
在物理构成上,ClickHouse集群是由多个ClickHouse Server实例组成的分布式数据库。这些ClickHouse Server根据配置规格的不同而可能包含1个或多个副本(Replica)、1个或多个分片(Shard)。在逻辑构成上,一个ClickHouse集群可以包含多个数据库(Database)对象。
副本(replica)
ClickHouse集群包含如下副本。
双副本版:每个节点包含两个副本,某个副本服务不可用的时候,同一分片的另一个副本还可以继续服务。
单副本版:每个节点只有1个副本,该副本服务不可用时,会导致整个集群服务有损,需要等待此副本完全恢复服务状态,集群才能继续提供完全稳定服务。
分片(Shard)
在超大规模海量数据处理场景下,单台服务器的存储、计算资源会成为瓶颈。为了进一步提高效率,云数据库ClickHouse将海量数据分散存储到多台服务器上,每台服务器只存储和处理海量数据的一部分,在这种架构下,每台服务器被称为一个分片(Shard)。
表引擎(TableEngine)
表引擎(即表的类型)决定了:
- 数据的存储方式和位置,写到哪里以及从哪里读取数据
- 支持哪些查询以及如何支持。
- 并发数据访问。
- 索引的使用(如果存在)。
- 是否可以执行多线程请求。
- 数据复制参数。
最常用的表引擎MergeTree家族,适用于高负载任务的最通用和功能最强大的表引擎。这些引擎的共同特点是可以快速插入数据并进行后续的后台数据处理。 MergeTree系列引擎支持数据复制(使用Replicated* 的引擎版本),分区和一些其他引擎不支持的其他功能。该类型的引擎包括(https://clickhouse.com/docs/zh/engines/table-engines/mergetree-family):
- MergeTree
- ReplacingMergeTree
- SummingMergeTree
- AggregatingMergeTree
- CollapsingMergeTree
- VersionedCollapsingMergeTree
- GraphiteMergeTree
总之,ClickHouse是一个高性能、高可靠性、高可扩展性和低成本的列式数据库管理系统,适用于大数据分析、实时数据处理和时序数据处理等场景。
更多详细介绍和了解访问官网:什么是ClickHouse? | ClickHouse Docs