ClickHouse--06--其他扩展MergeTree系列表引擎

news2024/11/23 12:45:38

其他扩展MergeTree系列

MergeTree 系列表引擎 --种类

MergeTree 系 列 表 引 擎 包 含 :

  • MergeTree
  • ReplacingMergeTree
  • SummingMergeTree(汇总求和功能)
  • AggregatingMergeTree(聚合功能)
  • CollapsingMergeTree(折叠删除功能)
  • VersionedCollapsingMergeTree(版本折叠功能)引擎

在这些的基础上还可以叠加 Replicated 和 Distributed。

1. ReplacingMergeTree

在这里插入图片描述

1.1 概念

  • 以 上 MergeTree 不 能 对 相 同 主 键 的 数 据 进 行 去 重 , ClickHouse 提 供 了
    ReplacingMergeTree 引擎,可以针对同分区内相同主键的数据进行去重,它能够在合并分区时删除重复的数据
  • 值得注意的是,ReplacingMergeTree只是在一定程度上解决了数据重复问题,由于自动分区合并机制在后台定时执行所以并不能完全保障数据不重复
  • ReplacingMergeTree 适用于在后台清除重复的数据以节省空间。

1.2 建表语句

ReplaceingMergeTree 建表语句:
在这里插入图片描述
在这里插入图片描述

使用 ReplacingMergeTree 是需要注意以下几点:

  • 如何判断数据重复
    ReplacingMergeTree 在去除重复数据时,是以 ORDERBY 排序键为基准的,而不是PRIMARY KEY。
  • 何时删除重复数据
    在执行分区合并时,会触发删除重复数据。optimize 的合并操作是在后台执行的,无法预测具体执行时间点,除非是手动执行。
  • 不同分区的重复数据不会被去重
    ReplacingMergeTree 是以分区为单位删除重复数据的。只有在相同的数据分区内重复的数据才可以被删除,而不同数据分区之间的重复数据依然不能被剔除。
  • 数据去重的策略是什么
    如果没有设置[ver]版本号,则保留同一组重复数据中的最新插入的数据
    如果设置了[ver]版本号,则保留同一组重复数据中 ver 字段取值最大的那一行
  • optimize 命令使用
    一般在数据量比较大的情况,尽量不要使用该命令。因为在海量数据场景下,执行optimize 要消耗大量时间。

2.SummingMergeTree

在这里插入图片描述

2.1 概念

该引擎继承了 MergeTree 引擎,当合并 SummingMergeTree 表的数据片段时ClickHouse 会把所有具有相同主键的行合并为一行,该行包含了被合并的行中具有数值数据类型的列的汇总值,即如果存在重复的数据,会对对这些重复的数据进行合并成一条数据,类似于 group by 的效果,可以显著减少存储空间并加快数据查询速度。

  • 如果用户只需要查询数据的汇总结果,不关心明细数据,并且数据的汇总条件是预先明确的,即 GROUP BY的分组字段是确定的,可以使用该表引擎。

2.2 SummingMergeTree 建表语句:

在这里插入图片描述
使用 SummingMergeTree 注意以下几点:

  • SummingMergeTree 是根据什么对两条数据进行合并的
    用 ORBER BY 排序键作为聚合数据的条件 Key。即如果排序key 是相同的,则会合并成一条数据,并对指定的合并字段进行聚合。
  • 仅对分区内的相同排序 key 的数据行进行合并
    以数据分区为单位来聚合数据。当分区合并时,同一数据分区内聚合 Key 相同的数据会被合并汇总,而不同分区之间的数据则不会被汇总。
  • 如果没有指定聚合字段,会怎么聚合
    如果没有指定聚合字段,则会按照非主键的数值类型字段进行聚合。
  • 对于非汇总字段的数据,该保留哪一条
    如果两行数据除了排序字段相同,其他的非聚合字段不相同,那么在聚合发生时,会保留最初的那条数据,新插入的数据对应的那个字段值会被舍弃。

3 AggregatingMergeTree

在这里插入图片描述

3.1 概念

  • 该表引擎继承自 MergeTree,可以使用 AggregatingMergeTree表来做增量数据统计聚合。如果要按一组规则来合并减少行数,则使AggregatingMergeTree 是合适的。AggregatingMergeTree 是通过预先定义的聚合函数计算数据并通过二进制的格式存入表内。
  • 与 SummingMergeTree 的区别在于:SummingMergeTree 对非主键列进行 sum 聚 合,而 AggregatingMergeTree 则可以指定各种聚合函数。对某些字段需要进行聚合时, 需要在创建表字段时指定成 AggregateFunction 类型

3.2 AggregatingMergeTree 建表语句

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 搭配使用

  • 以上方式使用 AggregatingMergeTree 表引擎比较不方便,更多情况下,我们将AggregatingMergeTree 作为物化视图的表引擎与 MergeeTree 搭配使用

示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.CollapsingMergeTree

在这里插入图片描述

4.1 概念

  • CollapsingMergeTree 就是一种通过以增代删的思路,支持行级数据修改和删除的 表引擎。它通过定义一个 sign 标记位字段,记录数据行的状态。如果 sign 标记为 1,则 表示这是一行有效的数据;如果 sign 标记为-1,则表示这行数据需要被删除。当 CollapsingMergeTree 分区合并时,同一数据分区内,sign 标记为 1 和-1的一组数据 会被抵消删除。
  • 每次需要新增数据时,写入一行 sign 标记为 1 的数据;需要删除数据时,则写入一行sign 标记为-1 的数据。此外,只有相同分区内的数据才有可能被折叠。

4.2 建表语句

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.VersionedCollapsingMergeTree

在这里插入图片描述

5.1 概念

  • 上面提到 CollapsingMergeTree 表引擎对于数据写入乱序的情况下,不能够实现数据 折 叠 的 效 果 。 VersionedCollapsingMergeTree 表 引 擎 的 作 用 与CollapsingMergeTree 完 全 相 同 , 它 们 的 不 同 之 处 在 于 ,VersionedCollapsingMergeTree 对数据的写入顺序没有要求,在同一个分区内,任意顺序的数据都能够完成折叠操作。
  • VersionedCollapsingMergeTree 使用 version 列来实现乱序情况下的数据折叠,该引擎除了需要指定一个 sign 标识之外,还需要指定一个 UInt*类型的 version 版本号。

5.2 建表语句

在这里插入图片描述
示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1453006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stable Diffusion webui安装详细教程

上一篇文章介绍了sd主流的ui,相信大家已经有所了解,下面为大家介绍sd-webui的安装详细教程 文章目录 一、 安装包说明二、对电脑的要求三、安装文件介绍四、安装步骤五、电脑问题与云主机六、界面简要说明及通用反向提示词 一、 安装包说明 通常我们使…

使用Python编写脚本-根据端口号杀掉进程

我的GitHub:Powerveil - GitHub 我的Gitee:Powercs12 - Gitee 皮卡丘每天学Java 从前段开始遇到一个问题,服务在启动的时候总是端口被占用,发现还是Java程序,但是当时并没有启动Java程序,电脑出问题了。 一…

基于结点电压法的配电网状态估计算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 结点电压法的基本原理 4.2 结点电压法在配电网状态估计中的应用 5.完整程序 1.程序功能描述 基于结点电压法的配电网状态估计算法.对配电网实施有效控制和操作的前提是实时数据库中数据…

【51单片机】AD模数转换DA数模转换(江科大)

1.AD/DA介绍 AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号 DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换为模拟信号 AD/DA转换打开了计算机与模拟信号的大门,极大的提高了计算机系统的应用范围,也为模拟信号数字化处理…

JVM-垃圾回收(标记算法,收集器)

申明:文章内容是本人学习极客时间课程所写,文字和图片基本来源于课程资料,在某些地方会插入一点自己的理解,未用于商业用途,侵删。 原资料地址:课程资料 垃圾回收的基本原理 1 什么是垃圾? 在…

Python爬虫之自动化测试Selenium#7

爬虫专栏:http://t.csdnimg.cn/WfCSx 前言 在前一章中,我们了解了 Ajax 的分析和抓取方式,这其实也是 JavaScript 动态渲染的页面的一种情形,通过直接分析 Ajax,我们仍然可以借助 requests 或 urllib 来实现数据爬取…

算法练习-赎金信(思路+流程图+代码)

难度参考 难度:中等 分类:哈希表 难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。且所在课程未提供测试平台,故实现代码主要为自行测试的那种,以下内容均为个人笔记,旨…

Excel TEXT函数格式化日期

一. 基本语法 ⏹Excel 的 TEXT 函数用于将数值或日期格式化为指定的文本格式 TEXT(value, format_text)二. 拼接路径案例 # 将当前单元格日期格式化 "ls -ld /data/jmw/01/"&TEXT(A2,"YYYYMMDD")&""# 此处的日期, 是名称管理器里面定…

自然语言编程系列(四):GPT-4对编程开发的支持

在编程开发领域,GPT-4凭借其强大的自然语言理解和代码生成能力,能够深刻理解开发者的意图,并基于这些需求提供精准的编程指导和解决方案。对于开发者来说,GPT-4能够在代码片段生成、算法思路设计、模块构建和原型实现等方面给予开…

JAVA面试题基础篇

1. 二分查找 要求 能够用自己语言描述二分查找算法 能够手写二分查找代码 能够解答一些变化后的考法 算法描述 前提:有已排序数组 A(假设已经做好) 定义左边界 L、右边界 R,确定搜索范围,循环执行二分查找&#…

基于Arduino UNO设计一个温控制系统

目录 概述 1 硬件结构 1.1 整体硬件介绍 1.2 硬件连接结构 2 软件设计 2.1 软件功能介绍 2.2 关于Arduino的一些知识点 2.2.1 定时器 2.2.2 PWM 2.3 代码实现 2.3.1 编译工具 2.3.2 详细代码 3 测试 3.1 温度数据监控 3.2 温控测试 概述 本文介绍如何使用Ardui…

精通C语言:打造高效便捷的通讯录管理系统

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C语言项目 贝蒂的主页:Betty‘s blog 引言 在我们大致学习完C语言之后,我们就可以利用目前所学的知识去…

MATLAB环境下使用二维高分辨时频分析方法提取波状分量

MATLAB环境下使用二维高分辨时频分析方法提取波状分量(分离混合地震数据)。 为了得到更高的时频分辨率,近年来涌现出了大量的新的时频分析方法。有些以线性和非线性时频分析为基础,有些则另辟蹊径,比如Hilbert-Huang变…

2.12日学习打卡----初学RocketMQ(三)

2.12日学习打卡 目录: 2.12日学习打卡一. RocketMQ高级特性(续)消息重试延迟消息消息查询 二.RocketMQ应用实战生产端发送同步消息发送异步消息单向发送消息顺序发送消息消费顺序消息全局顺序消息延迟消息事务消息消息查询 一. RocketMQ高级特…

Packet Tracer - Configuring ASA Basic Settings and Firewall Using CLI

Packet Tracer - 使用CLI配置ASA基本设置和防火墙 IP地址表 目标 验证连接并探索ASA设备使用CLI配置ASA的基本设置和接口安全级别使用CLI配置路由、地址转换和检查策略配置DHCP、AAA和SSH服务配置DMZ区域、静态NAT和访问控制列表(ACL) 场景 您的公司…

grafana配置钉钉告警模版(一)

1、配置钉钉告警模版 创建钉钉告警模版,然后在创建钉钉告警时调用模版。 定义发送内容具体代码 my_text_alert_list 是模版名称后面再配置钉钉告警时需要调用。 {{/* 定义消息体片段 */}} {{ define "my_text_alert_list" }}{{ range . }}告警名称&…

redis为什么使用跳跃表而不是树

Redis中支持五种数据类型中有序集合Sorted Set的底层数据结构使用的跳跃表,为何不使用其他的如平衡二叉树、b树等数据结构呢? 1,redis的设计目标、性能需求: redis是高性能的非关系型(NoSQL)内存键值数据…

在Postgresql 下安装QGIS

安装QGIS的前提是需要 在windows下安装Postgres,具体可以参考文章: Windows 安装和连接使用 PgSql数据库 安装GIS的具体步骤如下: 一.打开 Application Stack Builder 二.选择默认端口和安装目标 三.选择【Spatial Extensions】 四.选择安装…

链式结构实现队列

链式结构实现队列 1.队列1.1队列的概念及结构1.2队列的实现 2. 队列的各种函数实现3. 队列的全部代码实现 1.队列 1.1队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(Fi…

【大厂AI课学习笔记】【2.1 人工智能项目开发规划与目标】(5)数据管理

今天学习了数据管理,以及数据管理和数据治理的区别和联系。 数据管理:利用计算机硬件和软件技术对数据进行有效的收集、存储、处理和应用的过程其目的在于充分有效地发挥数据的作用。 实现数据有效管理的关键是数据组织。 数据管理和数据治理的区别&am…