本文最后更新于 2023-10-12,文章内容可能已经过时。

ClickHouse:

一款查询引擎.

1.数据库基本概念:

QQ截图20230301095032

QQ截图20230301095221

1.1分类:

QQ截图20230301095333

QQ截图20230301095426

QQ截图20230301095500

1.2 OLAP数据库:

QQ截图20230301095547

QQ截图20230301095724

1.3 sql:

QQ截图20230301095816

QQ截图20230301095833

QQ截图20230301100008

QQ截图20230301100111

1.4 数据库架构:

QQ截图20230301100203

1.4.1解释器:

QQ截图20230301100321

1.4.2分析器:

QQ截图20230301100359

1.4.3优化器:

QQ截图20230301100511

把ast变成一个一个的算子(执行计划).

1.4.4执行引擎:

QQ截图20230301100611

1.4.5存储引擎:

QQ截图20230301100659

2.列式存储:

QQ截图20230301100818

2.1 行式存储与列式存储:

行式存储:每一行的顺序,连续的写到存储介质当中去.

QQ截图20230301100929

列式存储:一列一列的写入.

QQ截图20230301101022

2.2 列式存储的优点:

2.2.1 数据压缩:

QQ截图20230301101148

比如主键在列上存储有某种规律(递增).

压缩算法:

QQ截图20230301101241

QQ截图20230301101330

QQ截图20230301101418

2.2.2 聚合计算:

QQ截图20230301101459

2.2.3 延迟物化:

把一种数据格式变成另一种数据格式。

QQ截图20230301101619

QQ截图20230301101718

QQ截图20230301101806

QQ截图20230301101847

2.2.4 向量化:

解释:

QQ截图20230301102311

QQ截图20230301102428

QQ截图20230301102512

QQ截图20230301145624

2.3 优缺点分析:

QQ截图20230301193053

3.存储设计:

3.1 表定义和结构:

QQ截图20230301193925

QQ截图20230301194207

distable不存储数据,相当于view的功能.

localtable存储数据.

3.2 引擎架构:

QQ截图20230301194359

QQ截图20230301194533

bin存储数据,mrk存储索引.

QQ截图20230301194648

QQ截图20230301194736

QQ截图20230301194801

3.3 索引设计:

3.3.1 hash index:

QQ截图20230301194820

3.3.2 b-tree:

QQ截图20230301194859

QQ截图20230301195006

QQ截图20230301195155

3.3.3 LSM tree:

QQ截图20230301195321

QQ截图20230301195347

QQ截图20230301195533

QQ截图20230301195632

稀疏索引:一些特定的数据,用于缩小查找范围.

QQ截图20230301195740

3.4 索引实现:

QQ截图20230301200018

QQ截图20230301200038

QQ截图20230301200107

QQ截图20230301200229

普通的mark都存储的是这个mark中的最小值,但是由于最后一个mark并没有装满,为了获得确定的区间,primaryindex存储的是所有数据的最大值.

QQ截图20230301200436

QQ截图20230301201204

优化:二级索引:

QQ截图20230301201427

QQ截图20230301201535

QQ截图20230301201615

QQ截图20230301201638

QQ截图20230301201729

3.5 数据合并:

QQ截图20230301201804

QQ截图20230301201915

3.6 数据查询:

QQ截图20230301202034

QQ截图20230301202042

QQ截图20230301202132

QQ截图20230301202203

4.应用场景:

QQ截图20230301202248

QQ截图20230301202359

QQ截图20230301202449

QQ截图20230301202542

QQ截图20230301202720

QQ截图20230301202809

QQ截图20230301202916

map:kv.

QQ截图20230301203027

QQ截图20230301203145

5.总结:

QQ截图20230301203304