Clickhouse物化视图进阶:Projection

前言

Projection是clickhouse 21.6版本才有的新特性,要使用projection需更新至最新版本


概念

  1. Projection概念由C-Store提出,并在Vertica数据库中落地发展(不同于SQL中的Projection运算) Projections是一组列的集合,使用建表语句定义 Projections按照不同的顺序存储数据,用以优化多样的查询 Vertica扩展Projection支持使用部分聚合函数进行数据上卷优化
  2. ClickHouse Projection沿袭该设计并进行优化 支持使用任意函数存储并自由组合参与数据上卷运算 支持Projection与原始明细表的联合查询

特点

  1. SELECT,INSERT,UPDATE,DELETE等操作的一致性保障
  2. 查询无需任何改动,自动匹配最优Projection进行计算
  3. 可直接通过待优化的查询进行定义,并自动泛化匹配其他查询

缺陷

  1. 无法跨Part聚合
  2. 无法脱离原始表存储,无法使用不同的生命周期与存储介质配置
  3. 不支持JOINS

分类

Projection主要分为两种:normal 与aggregate

  1. 使用查询定义Projection,新建的Projection仅影响后续的写入数据
  2. 对历史数据构建Projection需要进行Materialize操作
  3. 查询无需任何改动即可使用Projection优化
  4. 可对单表增加多个Projection,查询将择优使用

如何选择正确地Projection

  1. 对每一个候选进行索引分析,得出其预期数据扫描量,并缓存结果
  2. 选择预期扫描数据最少的候选: a. 不用区分projection类型是normal或aggregate,数据量少则优 b. 预期扫描量同时包含了projection的物化程度 c. 尽可能复用缓存结果,避免重复进行索引分析
  3. 当最终选择某个projection 后,将利用前述的回溯分析过程重建查询计划, 并同时满足projection parts 和ordinary parts的读取与计算

Clickhouse物化视图痛点

Clickhouse按照LSM树的结构存储数据

  1. 仅支持一种列排序方式 Order By(uid,pid)无法优化pid的查询; Z-Curve索引支持近邻查询,但索引效率整体下滑; Skip-index在召回率高的数据分布中表现很差;
  2. OLAP预聚合模型需要手动参与设计 预聚合存储AggregatingMergeTree仅支持一种预聚合方式; 查询需要改写方可使用预聚合数据,用户体验差; 明细数据不复存在,无法解决实时明细混合分析需求;
  3. clickhouse物化视图无一致性保障

Projection使用通用的机制完备地解决了前述三大问题

  1. Projection可按照不同的列进行数据重排
  2. Projection可使用聚合查询直接定义预聚合模型
  3. Projection查询分析能自动选择最优Projection进行查询优化,无需改写查询
  4. Projection在任时刻针对任一数据变换操作均提供一 致性保证

Projection的一致性保障

  1. Insert操作: 当数据块写入时,其作为数据源向所有定义的Projections提供输入,形成Projection Parts,最终和原始数据合并构建出带有projection 的part数据目录
  2. Select操作: 当查询命中某一Projection时,形成的查询计划将确保所有数据产生符合预期的结果。针对缺失Projection Parts的数据,将在运行时动态构建并在不引入额外计算开销的前提下与其余数据合并
  3. Mutation操作: Projection在定义时记录了其关联依赖的原始列信息。当对应的列发生变化时,所有相关的Projection将被重新物化,形成的新Part将包含一致的ProjectionPart进行原子提交
相关推荐
龙亘川3 分钟前
数智赋能物业不动产治理:亘川智城智慧物业系统实践解析
大数据·人工智能·智慧城市·开源软件·数据可视化
大大大大晴天️11 分钟前
元数据目录到数据资产运营:让好数据被看见、被复用、被持续经营
大数据·数据治理
Elastic 中国社区官方博客1 小时前
错误最多的服务运行正常:使用 ES|QL 从日志进行根因分析
大数据·运维·数据库·sql·elasticsearch·搜索引擎·全文检索
计算机毕业设计杰瑞1 小时前
【2027最新精品大数据】基于大数据的全国各地景点指数数据可视化分析,附源码_高质量项目_可视化_数据分析_毕设选题推荐_SPark_Hadoop_毕设指导
大数据·信息可视化·数据分析
计算机毕业设计杰瑞1 小时前
【2027精品大数据项目】基于大数据的全球太空探索数据分析与可视化,附源码_数据可视化_数据分析_毕设选题_SPark_Hadoop_文档指导ppt
大数据·信息可视化·数据挖掘·课程设计
计算机毕业编程指导师2 小时前
【计算机毕设推荐】基于Hadoop+Django的LLM多维度性能评估分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·django·毕业设计·课程设计·llm性能
AC赳赳老秦2 小时前
OpenClaw 与 FineBI 联动方案:公开数据自动采集与实时业务分析看板实践
大数据·开发语言·python·php·finebi·deepseek·openclaw
计算机毕业设计杰瑞2 小时前
【2027最新原创大数据】基于大数据的无人机自主导航数据分析与可视化,附源码_数据可视化_数据分析_数据挖掘_Hadoop_spark_文档指导_毕设指导
大数据·信息可视化·数据挖掘·课程设计
卷毛迷你猪2 小时前
快速实验篇(B12)异常流量与刷单识别(方法论演示)
大数据·hive·hadoop·数据挖掘·聚类
龙亘川2 小时前
探索智慧文化服务:建设初衷、整体架构、技术支撑、发展现状与实践影响
大数据·数据库·架构