ClickHouse 表引擎之 Null

Null 表引擎简介

  • 类似 /dev/null,忽略写入的任何数据,查询时返回空表
  • 如果物化视图不需要保留源表数据,则可设置源表为 Null 引擎

创建 Null 表引擎

  • 声明
    1
    
    ENGINE = Null
    

ClickHouse 视图之 Live View

Live View 视图简介

  • 类似时间监听器
  • 需设置 allow_experimental_live_view 为 1,检查
    1
    
    SELECT name, value FROM system.settings WHERE name LIKE '%live_view%';
    

创建 Live View 视图

  • 创建

    1
    
    CREATE LIVE VIEW lv_name AS SELECT count(*) FROM table_name;
    
  • 监听

    1
    
    WATCH lv_name
    

ClickHouse 表引擎之 Merge

Merge 表引擎简介

  • 本身不存储数据,只整合其他数据表
  • 不支持数据写入
  • 合并异步查询的结果集
  • 各异步查询的数据表需要在同一个数据库下,且表结构相同,表引擎和分区定义可不同

创建 Merge 表引擎

  • 声明

ClickHouse 表引擎之日志

日志表引擎简介

  • 数据量 100 万行一下,一次写入多次查询
  • 不支持索引、分区、并发读写

TinyLog 表引擎

  • 数据文件按列存储
  • 无标记文件,不支持并行读取
  • 声明
    1
    
    ENGINE = TinyLog()
    

StripeLog 表引擎

  • 只用数据写入一个文件
  • 有数据标记文件,可并行读取
  • 声明
    1
    
    ENGINE = StripeLog()
    

Log 表引擎

  • 数据文件按列存储
  • 有数据标记文件,可并行读取
  • 声明
    1
    
    ENGINE = Log()
    

ClickHouse 表引擎之 Buffer

Buffer 表引擎简介

  • 只写内存,无持久化存储
  • 缓冲高并发写入,满足条件时,Buffer 表会把数据刷新到目标表

创建 Join 引擎表

  • 声明

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    ENGINE = Buffer(
        database,
        table,
        num_layers,
        min_time,
        max_time,
        min_rows,
        max_rows,
        min_bytes,
        max_bytes
    )
    
  • database: 目标表所在数据库

ClickHouse 表引擎之 Join

Join 表引擎简介

  • 数据先写内存,再同步到磁盘,服务重启后全量加载到内存
  • 与 Set 表引擎共用大部分处理逻辑
  • 简单封装了一层 JOIN 查询,主要用做 JOIN 查询

创建 Join 引擎表

  • 声明

ClickHouse 表引擎之 Set

Set 表引擎简介

  • 数据先写内存,再同步到磁盘,服务重启后全量加载到内存
  • 支持 INSERT,写入时,重复数据被忽略
  • 不能直接 SELECT,只能作为 IN 查询的右侧条件

创建 Set 引擎表

  • 声明
    1
    
    ENGINE = Set()
    

使用

  • 创建 Set 引擎表
  • INSERT 写入数据
  • 查询
    1
    
    SELECT arrayJoin([1,2,3]) AS a WHERE a IN set_table;
    

ClickHouse 表引擎之 Memory

Memory 表引擎简介

  • 数据只存于内存中,无压缩,无格式转换
  • 支持并行查询
  • 一般用于 clickhouse 内部,作为集群间分发数据的载体

创建 Memory 引擎表

  • 声明
    1
    
    ENGINE = Memory()
    

ClickHouse 表引擎之 File

File 表引擎简介

  • 直接读取本地文件
  • 修改文件 = 数据更新
  • 导出数据到本地文件
  • 数据格式转换

创建 FILE 引擎表

  • 声明

    1
    
    ENGINE = File('format')
    
  • format 是文件中的数据格式,如 TSV、CSV 和 JSONEachRow 等

ClickHouse 表引擎之 Kafka

Kafka 表引擎简介

  • 对接 Kafka 系统,订阅 Kafka 主题,接收消息

创建 Kafka 引擎表

  • 声明

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    ENGINE = Kafka()
    SETTINGS
        kafka_broker_list = 'host:port, ...',
        kafka_topic_list = 'topic1, topic2, ...',
        kafka_group_name = 'consumer_group_name',
        kafka_format = 'data_format',
        [kafka_row_delimiter = 'delimiter_symbol',]
        [kafka_schema = '',]
        [kafka_num_consumers = N,]
        [kafka_skip_broken_messages = N,]
        [kafka_commit_every_batch =N];
    
  • kafka_broker_list: kafka 节点地址列表,用逗号分隔