1. Dictionary 支持 local/file/executable/HTTP/MySQL/ClickHouse/MongoDB/Redis 等源
请说明 ClickHouse 字典支持的多种数据源类型,以及各类源的适用场景?
- 字典可对接的多种数据源(local、file、executable、HTTP、MySQL、ClickHouse、MongoDB、Redis 等)
- 数据源类型与部署方式的匹配
- 字典在查询中的加速作用
ClickHouse 字典支持非常广泛的数据源,包括本地文件(local/file)、可执行程序(executable)、HTTP 服务、MySQL、PostgreSQL、ClickHouse 自身、MongoDB、Redis 等。字典把这些外部数据加载到内存中,供查询时通过 dictGet 快速按 key 取值,实现维表加速。选择哪种源取决于数据存储位置与更新频率:MySQL/ClickHouse 适合已有关系库或集群维表,HTTP/executable 适合自定义生成逻辑,Redis 适合低延迟缓存。
字典本质是「内存维表」,把外部数据源的数据定期加载到内存,避免查询时逐条访问外部系统。数据源多样性使字典能灵活接入各类系统。加载模式(lazy/eager/periodic)决定数据新鲜度,需与数据源特性匹配。字典值是只读的,适合引用型维度数据。
CREATE DICTIONARY dict_user (
id UInt64,
name String
) PRIMARY KEY id
SOURCE(CLICKHOUSE(TABLE 'users' HOST 'ch-host' PORT 9000 USER 'default' PASSWORD ''))
LIFETIME(MIN 60 MAX 120)
LAYOUT(HASHED());