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

其他扩展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.mzph.cn/news/688575.shtml

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

相关文章

- 项目落地 - 《选择项目工具的方法论》

本文属于专栏《构建工业级QPS百万级服务》 提纲: 选择大概率能完成业务目标的工具选择最适合的工具制作最适合的工具 本文所说的项目工具,泛指业务软件开发,所依赖的第三方提供的成熟的资源。包括但不限于开发语言、编辑工具、编译工具、三方…

IgG1 (mouse), ELISA kit——ENZO热销产品

90分钟内可得结果的高特异性定量ELISA试剂盒 免疫球蛋白G(IgG)是一种免疫球蛋白单体,由两条(γ)重链和两条轻链组成。每个IgG分子包含两个抗原结合域和一个效应(Fc)域。Enzo Life Sciences可提供…

WebService接口测试

WebService的理解 WebService就是Web服务的意思,对应的应用层协议为SOAP(相当于HTTP协议),可理解为远程调用技术。 特点: 客户端发送的请求主体内容(请求报文)的格式为XML格式 接口返回的响…

学习数据结构和算法的第9天

题目讲解 移除元素 ​ 给你一个数组nums和一个值 val,你需要 原地 移除所有数值等于 val的元素,并返回移除后数组的新长度。 ​ 不要使用额外的数组空间,你必须仅使用0(1)额外空间并 原地 修改输入数组。 ​ 元素的顺序可以改变。你不需要…

电脑屏幕录制工具 Top10 榜单,免费无水印方法集

随着媒体行业的突飞猛进,不同服务之间对有效屏幕录制的竞争日益激烈。这导致市场上出现了质量参差不齐的屏幕录像机。特别是有些录屏器会自动给你录制的视频加上水印,给需要在公共场合使用的人留下不专业的印象。除此之外,它们甚至不能保护您…

OS文件管理

文件管理 文件的属性 文件所包含的属性: 文件名:由创建文件的用户决定文件名,主要为了方便用户找到文件,同一目录下不允许有重名文件。标识符:一个系统内的各文件标识符唯一,对用户来说毫无可读性&#…

vm centos7 docker 安装 mysql 5.7.28(2024-02-18)

centos系统版本 [rootlocalhost mysql5.7]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) docker版本 拉取指定版本镜像 docker pull mysql:5.7.28 docker images 创建挂载目录(数据存储在centos的磁盘上) mkdir -p /app/softwa…

全面的ASP.NET Core Blazor简介和快速入门

前言 因为咱们的MongoDB入门到实战教程Web端准备使用Blazor来作为前端展示UI,本篇文章主要是介绍Blazor是一个怎样的Web UI框架,其优势和特点在哪?并带你快速入门上手ASP.NET Core Blazor(当然这个前提是你要有一定的C#编程基础的情况&#x…

大数据01-导论

零、文章目录 大数据01-导论 1、数据与数据分析 **数据:是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。**数据可以是连续的值,比如声音、图像,称为模拟数据;也可…

探索【注解】、【反射】、【动态代理】,深入掌握高级 Java 开发技术

文章目录 Java注解1.注解基础2.注解原理 反射1.Class对象的获取1.基础公共类1.1.Object > getClass()1.2.类名.class 的方式1.3.Class.forName() 2.获取类的成员变量3.获取成员方法并调用4.反射优缺点 代理1.结构2.静态代理2.1.案例1-计算前后校验2.1.1.创建接口2.1.2.创建实…

Ubuntu20.04 安装jekyll

首先使根据官方文档安装:Jekyll on Ubuntu | Jekyll • Simple, blog-aware, static sites 如果没有报错,就不用再继续看下去了。 我这边在执行gem install jekyll bundler时报错,所以安装了rvm,安装rvm可以参考这篇文章Ubuntu …

javaweb——socket

定义 Socket(套接字)是计算机网络编程中的一种抽象,用于在网络上进行通信。它允许计算机之间通过网络进行数据传输。在Java中,Socket类提供了对TCP/IP协议的支持,通过它可以创建客户端和服务端程序,实现网…

FLUENT Meshing Watertight Geometry工作流入门 - 9 生成体网格

本视频中学到的内容: 讨论体网格的重要性,并了解生成体网格的不同方法 了解体网格质量,以及如何改进 视频链接: FLUENT Meshing入门教程-9生成体网格_哔哩哔哩_bilibili 体网格生成是使用大量离散体积或单元来离散化/表示计算模…

跨境云手机如何简化tiktok运营流程

如今,tiktok已经成为世界范围内都非常流行的社交媒体平台。然而在大多数情况下,由于网络原因,tiktok无法在国内使用,但依然有越来越多的人注册tiktok号码、建立tiktok矩阵。原因是tiktok仍然有大量的流量可供商业使用,…

java面试题基础篇

1.java面向对象三大特性 ​ 封装(Encapsulation):是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。 ​ 继承:就是…

php 函数(方法)、日期函数、static关键字

php 函数、日期函数 1. php函数2. 日期函数3. static 1. php函数 函数是一段可重复使用的代码块&#xff0c;可以将一系列操作封装起来&#xff0c;使代码更加模块化、可维护和可重用&#xff0c;来大大节省我们的开发时间和代码量&#xff0c;提高编程效率。 <?php// …

Sora OpenAI 101教程(一):从文本生成令人兴奋的视频的 AI 模型

想象一下&#xff0c;您可以通过简单的文本提示创建令人惊叹的视频&#xff0c;例如“一个人带着狗在月球上行走”。听起来不可能&#xff0c;对吧&#xff1f;好吧&#xff0c;现在不再这样了&#xff0c;感谢 OpenAI 的最新人工智能模型 Sora&#xff0c;它可以从文本生成令人…

情人节官宣频发,白敬亭宋轶等多对情侣陷情风。

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 情人节甜蜜满溢&#xff0c;娱乐圈情侣们争相晒幸福。2024年&…

《苍穹外卖》知识梳理P11-Apache POI导出报表

一.Apache POI 可以通过Apache POI处理excel文件&#xff0c;核心操作是读和写 应用场景 银行网银交易明细各种业务系统导出Excel报表批量导入业务数据 使用步骤 1.导入maven坐标 <dependency><groupId>org.apache.poi</groupId><artifactId>poi&…

安装ts-node有感

起因&#xff1a;想要在vsCode上运行ts脚本 解决方案&#xff1a; 1.安装vsCode插件 code runner 2.全局安装ts-node 这一步遇到三个问题&#xff1a; ①.node版本问题&#xff1a;需安装版本18以上node&#xff0c;可使用nvm去控制不同的node版本 ②.certificate has exp…