1 TinyLog
特点:
- 是最简单的表轻量引擎(最多约100万行), 一写多读的应用场景。同时读写会损害数据;
- TinyLog 表经常作为中间表,用于数据的微批量处理. 语法中无需携带任何参数;
- 它将数据保存到磁盘. 每个字段都以单独压缩文件形式保存. 当写入数据时, 数据追加到文件的末尾;
语法格式:
CREATE TABLE [ IF NOT EXISTS ] [ db 。] table_name [ ON CLUSTER cluster ]
(
name1 [ type1 ] [ DEFAULT | MATERIALIZED | ALIAS expr1 ] [ TTL expr1 ],
name2 [ type2 ] [ DEFAULT | MATERIALIZED | ALIAS expr2 ] [ TTL expr2 ],
...
INDEX index_name1 expr1的 TYPE TYPE1 (...) 粒度 值1 ,
INDEX index_name2 表达式2 TYPE TYPE2 (...) 粒度 值2
) ENGINE = TinyLog();
2 MergeTree
特点:
1、这是目前 ClickHouse处理能力最好的引擎.
2、引擎支持索引,通过主键和日期来构建索引, 同时提供 数据的实时更新能力.
语法:
CREATE TABLE [ IF NOT EXISTS ] [ db 。] table_name [ ON CLUSTER cluster ]
(
name1 [ type1 ] [ DEFAULT | MATERIALIZED | ALIAS expr1 ] [ TTL expr1 ],
name2 [ type2 ] [ DEFAULT | MATERIALIZED | ALIAS expr2 ] [ TTL expr2 ],
...
INDEX index_name1 expr1的 TYPE TYPE1 (...) 粒度 值1 ,
INDEX index_name2 表达式2 TYPE TYPE2 (...) 粒度 值2
) ENGINE = MergeTree ()
[ PARTITION BY EXPR ]
[ ORDER BY EXPR ]
[ PRIMARY KEY EXPR ]
[ 样品 BY EXPR ]
[ SETTINGS name = value, ...]
3 ReplacingMergeTree
特点:
适用于在后台清除重复数据以节省空间,但不保证不存在重复。
语法:
CREATE TABLE [ IF NOT EXISTS ] [ db 。] table_name [ ON CL USTER cluster ]
(
name1 [ type1 ] [ DEFAULT | MATERIALIZED | ALIAS expr1 ] [ TTL expr1 ]
name2 [ type2 ] [ DEFAULT | MATERIALIZED | ALIAS expr2 ] [ TTL expr2 ],
...
INDEX index_name1 expr1的 TYPE TYPE1 (...) 粒度 值1 ,
INDEX index_name2 表达式2 TYPE TYPE2 (...) 粒度 值2
) ENGINE =ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/wt_order_details',
'{replica}')
[ PARTITION BY EXPR ]
[ ORDER BY EXPR ]
[ PRIMARY KEY EXPR ]
[ 样品 BY EXPR ]
[ SETTINGS name = value, ...]
4 Distributed
特点:
1、分布式引擎本身不存储数据, 但可以在多个服务器上进行分布式查询。 读是自动并行的。
2、读取时,远程服务器表的索引(如果有的话)会被使用。
3、远程服务器不仅用于读取数据,还会对尽可能数据做部分处理。
4、分布式引擎参数:服务器配置文件中的集群名,远程数据库名,远程表名,数据分片键(可选)
举例:
(1)先创建本地表:
CREATE TABLE if not exists datahub.analysis_20240205_local on cluster default (
`ID` String not NULL,
`PageNo` String DEFAULT '',
`PdfOssPath` String DEFAULT '',
`MkdOssPath` String DEFAULT '',
`InclTable` String DEFAULT '',
`InclFormula` String DEFAULT '',
`ImageOssPath` String DEFAULT '',
`TableLatex` String DEFAULT '',
`FormulaLatex` String DEFAULT '',
`Subject` String DEFAULT 'sub_default',
`Source` String DEFAULT 'src_default',
`Year` String DEFAULT '0000'
) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/datahub/analysis_20240205_local /{uuid}', '{replica}')
PRIMARY KEY `ID`
partition by (`Subject`, `Source`, `Year`);
(2)创建分布式表
create table if not exists datahub.analysis_20240205 on cluster default
engine = Distributed(default, datahub,analysis_20240205_local,rand());
5 Memory
特点:
1、重新启动服务器时,表中的数据消失,表将变为空。通常,使用此表引擎是不合理的。(值得注意的是,在许多情况下,与 MergeTree 引擎的性能几乎一样高)。
2、锁范围小:读写操作不会相互阻塞。不支持索引。阅读是并行化的。
3、从这张表中读取是很轻松的。并发数据访问是同步的。
4、以未压缩的形式将数据存储在内存中。数据完全以读取时获得的形式存储。
6、Kafka
1、自动跟踪传递的消息,因此组中的每条消息仅计算一次。如果要获取数据两次,则使用另一个组名创建表的副本。组是灵活的并在群集上同步
2、发布或订阅数据流。
3、组织容错存储。
4、处理流可用。