clickhouse 各个引擎适用的场景

1. MergeTree - 最常用的引擎

场景:网站访问日志分析

sqlCREATE TABLE website_logs (

date Date,

user_id UInt32,

page_url String,

visit_time DateTime

) ENGINE = MergeTree()

PARTITION BY toYYYYMM(date)

ORDER BY (user_id, date);

现实例子:就像一个图书馆的借书记录,按时间分区(每月一个文件夹),按用户ID排序,方便快速查找某个用户的借书历史。

2. ReplacingMergeTree - 去重引擎

场景:用户资料表(会更新)

sqlCREATE TABLE user_profiles (

user_id UInt32,

name String,

phone String,

updated_at DateTime

) ENGINE = ReplacingMergeTree(updated_at)

ORDER BY user_id;

现实例子:像员工档案柜,每个员工只能有一份最新的档案。如果员工信息更新了,旧的档案会被新的替换掉。

3. SummingMergeTree - 自动求和引擎

场景:销售数据统计

sqlCREATE TABLE daily_sales (

date Date,

product_id UInt32,

sales_amount Float64

) ENGINE = SummingMergeTree()

ORDER BY (date, product_id);

现实例子:像收银台的小票汇总,同一天同一商品的多次销售会自动加起来,最终得到每日每商品的总销售额。

4. AggregatingMergeTree - 聚合引擎

场景:用户行为指标统计

sqlCREATE TABLE user_metrics (

date Date,

user_id UInt32,

page_views AggregateFunction(sum, UInt64),

unique_pages AggregateFunction(uniq, String)

) ENGINE = AggregatingMergeTree()

ORDER BY (date, user_id);

现实例子:像健身房的会员运动记录统计表,自动计算每个会员每天的总运动时间、使用过的不同器械数量等指标。

5. CollapsingMergeTree - 折叠引擎

场景:订单状态变化记录

sqlCREATE TABLE order_changes (

order_id UInt32,

status String,

amount Float64,

sign Int8 -- 1表示新增,-1表示撤销

) ENGINE = CollapsingMergeTree(sign)

ORDER BY order_id;

现实例子:像银行账户的交易记录,如果一笔交易被撤销,会插入一条相反的记录来抵消原交易,最终余额是正确的。

6. VersionedCollapsingMergeTree - 版本化折叠引擎

场景:商品价格变化历史

sqlCREATE TABLE product_prices (

product_id UInt32,

price Float64,

version UInt64,

sign Int8

) ENGINE = VersionedCollapsingMergeTree(sign, version)

ORDER BY (product_id, version);

现实例子:像商品价格标签的更新历史,每次改价都有版本号,可以追踪价格变化轨迹,错误的价格记录可以被正确版本覆盖。

7. GraphiteMergeTree - 时序数据引擎

场景:服务器监控指标

sqlCREATE TABLE server_metrics (

metric_name String,

timestamp UInt32,

value Float64

) ENGINE = GraphiteMergeTree('graphite_rollup')

ORDER BY (metric_name, timestamp);

现实例子:像医院的心电监护仪,记录病人的心率、血压等生命体征,旧数据会按规则自动聚合(比如每分钟的数据合并成每小时的平均值)。

8. Memory - 内存引擎

场景:临时计算表

sqlCREATE TABLE temp_calculations (

id UInt32,

result Float64

) ENGINE = Memory;

现实例子:像计算器的临时结果,数据存在内存中,计算完就清空,重启后就没了。

9. Distributed - 分布式引擎

场景:大规模数据分析

sqlCREATE TABLE global_sales (

date Date,

region String,

sales Float64

) ENGINE = Distributed(cluster_name, database_name, local_table_name, rand());

现实例子:像连锁超市的总部系统,可以查询全国各个分店的销售数据,数据实际存储在各地的服务器上,但查询时像一张大表。

选择建议

日志分析、报表 → MergeTree

用户资料、配置信息 → ReplacingMergeTree

销售统计、计数器 → SummingMergeTree

复杂指标统计 → AggregatingMergeTree

状态变化追踪 → CollapsingMergeTree

监控指标 → GraphiteMergeTree

临时计算 → Memory

多机房部署 → Distributed

相关推荐
cc5725026536 小时前
高考志愿填报:大数据相关专业到底怎么选?
大数据·高考
本旺6 小时前
Elasticsearch 前缀匹配性能优化实战,附4种方式即执行计划判别
大数据·elasticsearch·性能优化
hhzz6 小时前
Python大数据实战(十六):音乐推荐系统——基于协同过滤算法构建个性化歌单引擎
大数据·人工智能·python·数据挖掘·数据分析
泛普软件8 小时前
工程合约管理软件具备哪些核心功能,解决合同结算各类纠纷难题
大数据·人工智能·区块链
Elastic 中国社区官方博客11 小时前
Elastic 在 Everest Group 企业搜索产品 PEAK Matrix® 评估 2026 中被评为领导者
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索
z小猫不吃鱼11 小时前
模型剪枝经典论文精读:Pruning Filters for Efficient ConvNets
算法·机器学习·剪枝
重庆传粉科技12 小时前
传粉科技助力美国房产经纪企业Homequest开拓中国市场
大数据·人工智能
Java小白笔记12 小时前
Codex Skills 分类整理
大数据·人工智能·elasticsearch·搜索引擎·ai·ai编程·ai写作
杨逢昌工厂6S管理12 小时前
26-杨逢昌:制造企业6S改善提案落地低效解决方案——四级分级激励标准化体系,成效验证:车间现场熵增隐患下降65%。
大数据
一只专注api接口开发的技术猿13 小时前
电商评论自动化监控与情感数据分析完整落地教程(附可直接运行 Python 代码)
大数据·数据库·python·数据分析·自动化