ClickHouse 核心引擎 MergeTree 解读

ClickHouse 是俄罗斯最大的搜索引擎 Yandex 在 2016 年开源的数据库管理系统(DBMS),主要用于联机分析处理(OLAP)。其采用了面向列的存储方式,性能远超传统面向行的 DBMS,近几年受到广泛关注。

本文将介绍 ClickHouse MergeTree 系列表引擎 的相关知识,并通过示例分析 MergeTree 存储引擎的数据存储结构。

1 MergeTree 表引擎简介

MergeTree(合并树)系列表引擎是 ClickHouse 提供的最具特色的存储引擎。MergeTree 引擎支持数据按主键、数据分区、数据副本以及数据采样等特性。官方提供了包括 MergeTree、ReplacingMergeTree、SummingMergeTree、AggregatingMergeTree、CollapsingMergeTree、VersionedCollapsingMergeTree、GraphiteMergeTree 等 7 种不同类型的 MergeTree 引擎的实现,以及与其相对应的支持数据副本的 MergeTree 引擎(Replicated*)。

ClickHouse 核心引擎 MergeTree 解读_第1张图片

首先来介绍一下 MergeTree 核心引擎

ReplacingMergeTree: 在后台数据合并期间,对具有相同排序键的数据进行去重操作。

SummingMergeTree: 当合并数据时,会把具有相同主键的记录合并为一条记录。根据聚合字段设置,该字段的值为聚合后的汇总值,非聚合字段使用第一条记录的值,聚合字段类型必须为数值类型。

AggregatingMergeTree: 在同一数据分区下,可以将具有相同主键的数据进行聚合。

CollapsingMergeTree: 在同一数据分区下,对具有相同主键的数据进行折叠合并。

VersionedCollapsingMergeTree

基于 CollapsingMergeTree 引擎,增添了数据版本信息字段配置选项。在数据依据 ORDER BY 设置对数据进行排序的基础上,如果数据的版本信息列不在排序字段中,那么版本信息会被隐式的作为 ORDER BY 的最后一列从而影响数据排序。

GraphiteMergeTree: 用来存储时序数据库 Graphites 的数据。

MergeTree 是该系列引擎中最核心的引擎,其他引擎均以 MergeTree 为基础,并在数据合并过程中实现了不同的特性,从而构成了 MergeTree 表引擎家族。下面我们通过 MergeTree 来具体了解 MergeTree 表系列引擎。

2 MergeTree 引擎

2.1 表创建

创建 MergeTree 的 DDL 如下所示:

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster] (      name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],       name2 

你可能感兴趣的:(clickHouse,clickhouse)