家族树_clickhouse array join

家族树_clickhouse array joinMergeTree拥有主键,但是它的主键却没有唯一键的约束。这意味着即便多行数据的主键相同,它们还是能够被正常写入。在某些使用场合,用户并不希望数据表中含有重复的数据。ReplacingMergeTr

ClickHouse(10)ClickHouse合并树MergeTree家族表引擎之ReplacingMergeTree详细解析

目录
  • 建表语法
  • 数据处理策略
  • 资料分享
  • 参考文章

MergeTree拥有主键,但是它的主键却没有唯一键的约束。这意味着即便多行数据的主键相同,它们还是能够被正常写入。在某些使用场合,用户并不希望数据表中含有重复的数据。ReplacingMergeTree就是在这种背景下为了数据去重而设计的,它能够在合并分区时删除重复的数据。但是ReplacingMergeTree并不一定保证不会出现重复的数据。

ReplacingMergeTree是另外一个常用的表引擎,ReplacingMergeTree和MergeTree的不同之处在于它会删除排序键值相同的重复项。

数据的去重只会在数据合并期间进行。合并会在后台一个不确定的时间进行,因此你无法预先作出计划。有一些数据可能仍未被处理。可以调用OPTIMIZE语句发起计划外的合并,但尽量不要依靠它,因为OPTIMIZE语句会引发对数据的大量读写。

因此,ReplacingMergeTree适用于在后台清除重复的数据以节省空间,但是它不保证没有重复的数据出现。

建表语法

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
    ...
) ENGINE = ReplacingMergeTree([ver])
[PARTITION BY expr]
[ORDER BY expr]
[SAMPLE BY expr]
[SETTINGS name=value, ...]

创建ReplacingMergeTree表的参数中,与MergeTree不同的是[ver]。ver(版本列)。类可以型为UInt*,Date或DateTime。这个属于可选参数,所以你也可以不用指定。

在数据合并的时候,ReplacingMergeTree 从所有具有相同排序键的行中选择一行留下:如果ver列未指定,保留最后一条。如果ver列已指定,保留ver值最大的版本。

其他的与MergeTree表是一致,它属于MergeTree表的的一个变种。

MergeTree表引擎的解析可以参考ClickHouse(09)ClickHouse合并树MergeTree家族表引擎之MergeTree详细解析

数据处理策略

最后总结一下ReplacingMergeTree引擎的数据处理策略,主要是下面五个点。

  1. 使用ORBER BY排序键作为判断重复数据的唯一键。
  2. 只有在合并分区的时候才会触发删除重复数据的逻辑。
  3. 以数据分区为单位删除重复数据。当分区合并时,同一分区内的重复数据会被删除;不同分区之间的重复数据不会被删除。
  4. 在进行数据去重时,因为分区内的数据已经基于ORBER BY进行了排序,所以能够找到那些相邻的重复数据。
  5. 在数据合并的时候,ReplacingMergeTree 从所有具有相同排序键的行中选择一行留下:如果ver列未指定,保留最后一条。如果ver列已指定,保留ver值最大的版本。

资料分享

ClickHouse经典中文文档分享

参考文章

  • ClickHouse(01)什么是ClickHouse,ClickHouse适用于什么场景
  • ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计
  • ClickHouse(03)ClickHouse怎么安装和部署
  • ClickHouse(04)如何搭建ClickHouse集群
  • ClickHouse(05)ClickHouse数据类型详解
  • ClickHouse(06)ClickHouse建表语句DDL详细解析
  • ClickHouse(07)ClickHouse数据库引擎解析
  • ClickHouse(08)ClickHouse表引擎概况
  • ClickHouse(09)ClickHouse合并树MergeTree家族表引擎之MergeTree详细解析
  • ClickHouse(10)ClickHouse合并树MergeTree家族表引擎之ReplacingMergeTree详细解析
  • ClickHouse(11)ClickHouse合并树MergeTree家族表引擎之SummingMergeTree详细解析

原文地址:https://www.cnblogs.com/the-pig-of-zf/archive/2022/11/09/16874891.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4559.html

(0)
上一篇 2023-06-14
下一篇 2023-06-14

相关推荐

  • mysql通过复制文件实现备份

    mysql通过复制文件实现备份mysqldump的方法耗时:备份+网络传输+恢复 缺点:时间 直接复制文件的方法耗时:网络传输 缺点:可能造成意外的情况 第一种已经实践过了,今天试下第二种。 1.tar zxvf bak.tar…

    2023-03-22
    142
  • 用Python实现二进制转换

    用Python实现二进制转换在计算机科学中,二进制是一种基于二的数字系统,只使用0和1两个数字进行运算,是计算机中数据存储和通信的基础。在计算机中,所有的数字、字母、符号等元素都是使用二进制进行表示的,因此对二进制进行转换是计算机编程中必不可少的操作。

    2024-02-16
    131
  • SQL 语句-partition by「建议收藏」

    SQL 语句-partition by「建议收藏」/****** ******/ 初始化数据 create table employee (empid int, deptid int, salary decimal(10, 2)) insert i…

    2023-01-25
    181
  • Python中使用NumPy中的matmul函数

    Python中使用NumPy中的matmul函数在数据科学的世界里,线性代数是一项必需的技能。然而,矩阵运算是非常耗费计算资源的。Python中的NumPy是一个广泛使用的科学计算库,其中的matmul函数提供了一种高效的方法来执行矩阵乘法操作。在本篇文章中,我们将深入探讨NumPy中的matmul函数及其应用,帮助读者更深入地了解这个强大的函数。

    2024-07-18
    45
  • Python log10 2:计算以10为底,2的对数

    Python log10 2:计算以10为底,2的对数log函数是数学中非常常见的一种函数,在实际的计算中也有着广泛的应用。基本上所有科学工程计算都要用到对数运算,比如测量声音和地震的强度等等。在自然语言处理领域中,log函数也常被用来计算概率。

    2023-12-28
    138
  • Mysql5.7 Linux安装教程

    Mysql5.7 Linux安装教程1系统约定 安装文件下载目录:/data/software Mysql目录安装位置:/usr/local/mysql 数据库保存位置:/data/mysql 日志保存位置:/data/log/mys…

    2023-04-13
    135
  • 京东张政:内容理解在广告场景下的实践和探索[通俗易懂]

    京东张政:内容理解在广告场景下的实践和探索[通俗易懂]分享嘉宾:张政 京东 算法工程师 编辑整理:AMS 周金星 出品平台:DataFunTalk 导读: 内容生态建设是近几年互联网快速发展的关键动因,也是AI化的重点方向之一。本文主要分享在京东广告业务

    2023-05-23
    140
  • 修改计算机名并更新sqlserver中存储的服务器名称[通俗易懂]

    修改计算机名并更新sqlserver中存储的服务器名称[通俗易懂]1、 查看计算机名use master go select @@servername select serverproperty('servername') 2、同步更新SQLserv

    2023-01-23
    161

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注