数据字典是Clickhouse提供的一种非常简单、实用的存储媒介,以键值和属性映射的形式定义数据。字典中的数据会主动或被动加载到内存,并支持动态更新。由于字典数据常驻内存的特性,所以非常适合保存常量或经常使用的维度表数据,避免不必要的JOIN查询。分为内置和扩展两种。
内置字典
Yandex.Metrica 只提供了字典的定义机制和取数函数
外部扩展字典
外部扩展字典是以插件的形式注册到Clickhouse中的,由用户自行定义数据模式及数据来源。目前扩展字典支持7种类型的内存布局和4类数据来源。
通过配置来注册字典,配置中有5项:
name字典名称,structure字典数据结构(key-attribute),layout字典类型,source字典数据源、lifetime字典更新时间
structure 字典数据结构
key用于定义字典的键值,key分为数值类型和复合类型两类,数值类型包括:flat、hashed、range_hashed、cached类型,由Uint64定义
复合类型使用tuple定义,可以由1到多个字段组成、类似数据库中复合主键。仅支持complex_key_hashed、complex_key_cache和ip_trie类型字段/
attribute 定义字典的属性字段,可以有1到多个属性字段,其中name、type\null_balue必填项目。
- flat 所有类型中性能最高的字典类型,只能使用Uint64数值型key。最多保存500000行数据/
- hashed 只能使用UINT64数值型key,但与flat字典不同,ha