跳到主要内容
跳到主要内容

词汇表

原子性

原子性确保一个事务(一系列数据库操作)被视为一个单一、不可分割的整体。这意味着,要么事务中的所有操作都成功执行,要么全部都不执行。一个具有原子性的事务示例是将资金从一个银行账户转账到另一个账户。如果转账过程中的任意一步骤失败,整个事务就会失败,资金将保留在第一个账户中。原子性确保既不会丢失资金,也不会凭空增加资金。

Block

Block 是用于组织数据处理和存储的逻辑单元。每个 block 包含一起处理的列式数据,从而在查询执行时提升性能。通过以 block 为粒度处理数据,ClickHouse 能够在减少缓存未命中并促进向量化执行的同时,高效利用 CPU 核心。ClickHouse 使用多种压缩算法(例如 LZ4、ZSTD 和 Delta)对 block 中的数据进行压缩。

集群

一组协同工作的节点(服务器),共同用于存储和处理数据。

客户管理的加密密钥(CMEK)

客户管理的加密密钥(CMEK)允许客户使用其密钥管理服务(KMS)中的密钥对 ClickHouse 的磁盘数据密钥进行加密,从而保护静态存储中的数据。

Dictionary

字典是一种键值对映射结构,可用于构建多种类型的参考列表。它是一个功能强大的特性,可以在查询中高效使用字典,通常比对参考表使用 JOIN 更高效。

Distributed table

在 ClickHouse 中,分布式表(Distributed table)是一种特殊类型的表,本身不存储数据,而是为集群中多个服务器上的分布式查询处理提供统一视图。

Granule

Granule 是未压缩数据块中的一批行。在读取数据时,ClickHouse 按 granule 而不是按单行访问数据,这使分析型工作负载中的数据处理更快。默认情况下,每个 granule 包含 8192 行。主索引中每个 granule 对应一个条目。

增量物化视图

在 ClickHouse 中,增量物化视图是一种在插入时对数据进行处理和聚合的物化视图类型。当新数据插入到源表时,物化视图只针对新插入的数据块执行预定义的 SQL 聚合查询,并将聚合结果写入目标表。

轻量级更新

ClickHouse 中的轻量级更新是一项实验性特性,它允许你使用标准 SQL UPDATE 语法来更新表中的行,不同于传统 mutation 需要重写整个列或数据部分(data parts),它会创建仅包含已更新列和行的“补丁部分”(patch parts)。这些更新通过应用补丁在 SELECT 查询中会立即可见,但底层物理数据只会在后续合并(merge)过程中才被真正更新。

物化视图

在 ClickHouse 中,物化视图是一种机制:当数据插入源表时,会自动对其运行查询,并将转换或聚合后的结果存储到单独的目标表中,从而加速查询。

MergeTree

ClickHouse 中的 MergeTree 是一种为高数据摄取速率和海量数据规模而设计的表引擎。它是 ClickHouse 的核心存储引擎,提供列式存储、自定义分区、稀疏主索引以及后台数据合并等功能。

变更(Mutation)

在 ClickHouse 中,Mutation 指对表中已有数据进行修改或删除的操作,通常使用诸如 ALTER TABLE ... UPDATE 或 ALTER TABLE ... DELETE 之类的命令来完成。Mutation 被实现为异步后台进程,通过重写受变更影响的整段数据分片来生效,而不是就地修改单独的行。

即时变更

ClickHouse 中的即时变更是一种机制,允许在提交变更后,无需等待后台变更进程完成,更新或删除操作就能在后续的 SELECT 查询中立即生效并可见。

Parts

磁盘上的物理文件,用于存储表数据的一部分。这与“分区”不同,分区是使用分区键创建的对表数据的逻辑划分。

分区键

在 ClickHouse 中,分区键是在创建表时通过 PARTITION BY 子句定义的 SQL 表达式。它决定了数据在磁盘上如何被逻辑地分组到各个分区中。分区键的每个唯一取值都会形成一个独立的物理分区,从而支持对整个分区执行高效的数据管理操作,例如删除、移动或归档等。

主键

在 ClickHouse 中,主键决定数据在磁盘上的存储顺序,并用于构建稀疏索引,从而加速查询过滤操作。与传统数据库不同,ClickHouse 中的主键不强制唯一性——多行记录可以具有相同的主键值。

投影

ClickHouse 中的投影是一种隐藏的、自动维护的表,它以不同的顺序存储数据,或存储预先计算好的聚合结果,以加速查询,尤其是那些在主键中未包含的列上进行过滤的查询。

可刷新物化视图

可刷新物化视图是一种物化视图,它会定期在完整数据集上重新执行查询,并将结果存储到目标表中。与增量物化视图不同,可刷新物化视图按照预定计划进行更新,并且在不受限制的情况下支持包含 JOIN 和 UNION 在内的复杂查询。

副本

存储在 ClickHouse 数据库中的一份数据副本。可以为相同的数据创建任意数量的副本,以实现冗余和提高可靠性。副本与 ReplicatedMergeTree 表引擎配合使用,该引擎使 ClickHouse 能够在不同服务器之间保持多份数据副本的同步。

分片

数据的一个子集。ClickHouse 始终至少为您的数据使用一个分片。如果您没有将数据拆分到多台服务器上,您的数据将存储在单个分片中。当单台服务器的容量不足时,可以通过在多台服务器之间对数据进行分片来分担负载。

跳过索引

跳过索引用于在多个连续粒度上存储少量元数据,从而让 ClickHouse 能够避免扫描无关的行。跳过索引是比投影更轻量级的一种替代方案。

排序键

在 ClickHouse 中,排序键定义了数据在磁盘上的物理存储顺序。如果未指定主键,ClickHouse 会使用排序键作为主键。如果同时指定了主键和排序键,则主键必须是排序键的前缀。

稀疏索引

一种索引类型,其中主索引对每组行仅包含一个条目,而不是对每一行都包含一个条目。与一组行相对应的这个条目称为一个标记(mark)。使用稀疏索引时,ClickHouse 会先定位那些可能与查询匹配的行组,然后分别处理这些行组以找到匹配结果。由于这一特性,主索引足够小,可以被加载到内存中。

表引擎

ClickHouse 中的表引擎决定了数据的写入、存储和访问方式。MergeTree 是最常用的表引擎,它支持快速插入大量数据,并在后台对这些数据进行处理。

TTL

生存时间(Time To Live,TTL)是 ClickHouse 的一项功能,可以在经过一定时间后自动移动、删除或汇总列或行。这样可以更高效地管理存储,因为可以删除、移动或归档那些不再需要频繁访问的数据。