当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/271021.html

相关文章:

  • 飞算 JavaAI 智能编程助手 - 重塑编程新模态
  • ClickHouse 时间范围查询:精准筛选「本月数据」
  • tinyxml2 开源库与 VS2010 结合使用
  • LaCo: Large Language Model Pruning via Layer Collapse
  • Spring Boot 扩展点深度解析:设计思想、实现细节与最佳实践
  • tws行业分析
  • Qt:QLineEdit、QTextEdit、QComboBox、QSpinBox、QDateTimeEdit、QDial、QSlider
  • gcc编译器
  • 【macOS】【Swift】不让App采用macOS的外观风格,直接保持白色背景,怎么处理?
  • 静态路由扩展实验
  • 【C++】unordered_set和unordered_map的实现
  • 三、Docker常用命令
  • HUAWEI HiCar6.0的新变化
  • 什么是 AMR 格式?简鹿音频转换器轻松批量转换 AMR 为 MP3
  • windows部署多实例filebeat监控相同路径下文件
  • 前端交互自定义封装类:“双回调自定义信息弹窗”
  • ai之 ubuntu本地安装mineru2.1.0
  • 整合Spring、Spring MVC与MyBatis:构建高效Java Web应用
  • Ubuntu22.04 设置显示存在双屏却无法双屏显示
  • DAS3D: Dual-modality Anomaly Synthesis for 3D Anomaly Detection 论文精读
  • 高通SG882G平台(移远),Ubuntu22编译:1、下载代码
  • 新零售“云化”进化:基于定制开发开源AI智能名片S2B2C商城小程序的探索
  • 中兴通讯首席项目管理专家、PMCoE负责人张宝忠受邀为PMO大会演讲嘉宾
  • redis的命令集合
  • WPF使用WebBrowser 解决href标签target=_blank在浏览器窗口打开新链接而非窗体内部打开的问题
  • Docker高级管理
  • 不深入,则无法共情
  • mysql 可用性的保障机制:主讲主从复制机制
  • Git 详解:从概念,常用命令,版本回退到工作流
  • 【03】MFC入门到精通——MFC 添加控件 设置属性 按钮 文本框