前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Replacing、Summing、Aggregating、Collapsing和VersionedCollapsingMergeTree的区别和使用场景

Replacing、Summing、Aggregating、Collapsing和VersionedCollapsingMergeTree的区别和使用场景

原创
作者头像
一凡sir
发布2023-10-17 09:49:46
3810
发布2023-10-17 09:49:46
举报
文章被收录于专栏:技术成长

建议先关注、点赞、收藏后再阅读。

ReplacingMergeTree和SummingMergeTree是ClickHouse中两种常用的MergeTree引擎。

它们之间的主要区别如下:

1. ReplacingMergeTree:

  • 使用该引擎的表支持重复数据的替换和删除。
  • 数据写入时,新的数据将会替换掉已有的相同数据。
  • 可以通过设置设置ttl删除数据,已被替换的数据将被保留在表中并不会真正删除。

2. SummingMergeTree:

  • 使用该引擎的表支持按照某个列进行聚合计算。
  • 需要指定一个进行聚合的列,并指定该列的数据类型。
  • 当新数据写入时,相同键的值会被相加。
  • 聚合列的值只能是数字(Int32、Int64、Float32、Float64)类型。

选择使用其中之一取决于具体的业务需求:

  • 如果需要对某一列进行聚合计算,并且希望保留历史数据,则可以选择SummingMergeTree。
  • 如果需要对数据进行替换或删除,并且不需要进行聚合计算,则可以选择ReplacingMergeTree。

请注意:以上仅为一般情况下的选择建议,实际选择需要根据具体的业务需求和数据处理方式进行衡量。

在ClickHouse的AggregatingMergeTree中,数据是通过在多个分布式节点上进行预聚合操作来进行聚合的。

它使用了分层的存储策略,其中每个层级都存储了不同程度的聚合结果。

具体来说,数据在AggregatingMergeTree中按照指定的维度进行分割,并在每个分片中维护了一个聚合树。聚合树是一种树状结构,其中每个节点都包含了聚合操作的结果。当有新的数据插入时,会在聚合树中找到相应的节点并进行更新。当查询时,可以通过在聚合树中的节点上进行算术操作来获取聚合结果。

举个例子来说明它的用途。假设我们有一个电商网站,需要对用户的购买记录进行聚合分析。我们可以使用AggregatingMergeTree将数据按照用户ID进行分割,并对每个用户的购买金额进行预聚合。

首先,在创建表时,我们定义了需要聚合的列(比如购买金额)以及维度列(比如用户ID)。然后,我们可以使用INSERT语句将用户的购买记录插入到表中。

当有新的购买记录插入时,AggregatingMergeTree会将新数据插入到对应的分片中,并在聚合树中更新相应的节点。这样,我们可以通过查询表来获取某个用户的购买总金额,或者按照时间范围进行聚合分析。

对于上述的电商网站的例子,我们可以使用如下的SQL查询来获取每个用户的购买总金额:

代码语言:sql
复制
SELECT userId, sum(purchaseAmount) as totalAmount
FROM purchase_records
GROUP BY userId

AggregatingMergeTree的优势在于,它可以高效地处理大量的数据,并且支持实时查询,使得分析和报表生成更加方便快捷。同时,它还支持数据的压缩和分布式部署,可以满足大规模数据存储和处理的需求。

CollapsingMergeTree

CollapsingMergeTree 是 ClickHouse 数据库中的一种表引擎。它基于 MergeTree,并在此基础上添加了合并时去除重复数据的功能。当插入新数据时,如果某条数据的 Primary Key(主键)与已有数据重复,那么它将取代已有数据(该条记录以前的所有副本都会被删除),从而保持表中任意时刻只有一份最新的数据。

VersionedCollapsingMergeTree

VersionedCollapsingMergeTree 同样是基于 MergeTree,它在 CollapsingMergeTree 的基础上增加了版本控制的功能。每当一个数据被更新,它会创建一个新版本。这使得在查询时可以跟踪数据的历史状态,而不仅仅是最新版本。

使用场景

选择使用 VersionedCollapsingMergeTree 可以在需要跟踪数据历史变化的情况下提供更大的灵活性。例如,在数据集合中,如果需要保留数据集合的所有历史版本,并能根据需要查询和分析过去的数据,那么 VersionedCollapsingMergeTree 是一个更合适的选择。此外,如果需要对数据集合进行更复杂的时间段查询、追溯数据订购号或速率更改等场景,也可以选择使用 VersionedCollapsingMergeTree。

总而言之,VersionedCollapsingMergeTree 适用于需要在查询中跟踪数据历史变化的场景,而 CollapsingMergeTree 则更适用于只需保留最新数据的场景。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 它们之间的主要区别如下:
    • 1. ReplacingMergeTree:
      • 2. SummingMergeTree:
      • 选择使用其中之一取决于具体的业务需求:
      • 在ClickHouse的AggregatingMergeTree中,数据是通过在多个分布式节点上进行预聚合操作来进行聚合的。
      • 对于上述的电商网站的例子,我们可以使用如下的SQL查询来获取每个用户的购买总金额:
      • CollapsingMergeTree
      • VersionedCollapsingMergeTree
      • 使用场景
      相关产品与服务
      数据保险箱
      数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档