前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CK01# ClickHouse术语及知识点梳理

CK01# ClickHouse术语及知识点梳理

作者头像
瓜农老梁
发布2022-06-23 13:42:44
6640
发布2022-06-23 13:42:44
举报
文章被收录于专栏:瓜农老梁瓜农老梁

引言

尽管使用ElasticSearch冷热存储架构来存储日志,成本依旧高昂,而ElasticSearch的存储成本占用70%以上,寻找新的低成本存储方案也就成了主要解决方式。

根据测评ClickHouse存储成本可以降低到ElasticSearch的三分之一以上,本文就ClickHouse的术语与知识点做个梳理,主要内容有:

  • 日志成本构成
  • ClickHouse高性能特性
  • 多主架构、分片与副本
  • MergeTree系列表引

一、日志成本构成

当前的日志平台的成本主要由下面几个方面构成:

  • 采集agent消耗的CPU和内存
  • 日志Kafka集群成本
  • Flink集群消费的计算资源
  • ElasticSearch的存储成本
  • OSS的存储成本

其中ElasticSearch的存储成本是主要部分,如何优化ES的存储成本呢?当前使用的冷热存储架构,第一天的数据存储在高配的热节点中,磁盘ESSD,之后的数据存在在低配的普通云盘中。

ElasticSearch存储成本优化点:

  • 推动业务减少不必要的日志输出
  • 持续聚焦缩短存储时间
  • 持续聚焦提高ElasticSearch的资源使用率
  • 使用低成本ClickHouse的存储替换ElasticSearch

小结:尽管使用ElasticSearch冷热存储架构来存储日志,成本依旧高昂,而ElasticSearch的存储成本占用70%以上,寻找新的低成本存储方案也就成了主要解决方式。

根据测评ClickHouse存储成本可以降低到ElasticSearch的三分之一以上,下面梳理下ClickHouse特性与知识点。

二、ClickHouse高性能特性

众多的设计和优化成就了ClickHouse的高性能,下面找一些比较突出的点梳理下:

特性

描述

列式存储

数据按列组织,同一列的数据保存在一起,不同的列分不同的文件保存

压缩算法

默认使用LZ4压缩算法,压缩比与数据相关,压缩比1:4~1:8不等

向量化执行引擎

1、利用CPU的SIMD(Single Instruction Multiple Data)单条指令操作多条数据2、在寄存器层面实现数据并行执行,寄存器访问数据的速度是内存的300倍,是磁盘的3000万倍

众多表引擎

1、提供近30种的表引擎供选择,选择表表引擎意味着选择了不同的存储查询方式2、MergeTree系列为官方主流系列

备注:在寄存器层面实现数据并行执行,SIMD大量用于文本转换、数据过滤、数据解压以及JSON转换等场景。

三、多主架构、分片与副本

1、多主架构

  • ClickHouse采用多主架构,而不是主从架构
  • 意味着不像ElasticSearch有Master、Data、Coordinating等角色的区分
  • 访问中集群中的任何节点均可获得相同的结果

2、数据副本

  • Clickhouse的副本其他组件并无差异,多一分相同的冗余数据
  • 副本是表级别的,创建表时需要使用ReplicatedMergeTree系列引擎
  • 基于多主架构通过zookeeper将执行语句分发到副本本地执行

3、数据分片

ClickHouse集群中每个节点称为分片

可通过集群借助于ZooKeeper执行分布式DDL语句

代码语言:javascript
复制
CREATE/DROP TABLE ON CLUSTER my_cluster

数据通过本地表(可以使用_local后缀命名)存储,使用Distributed以外的引擎

分布式表不存储数据,为本地表的代理,类似于分库分表组件,需使用Distributed引擎

分片规则需要声明分片键,否则分布式表中只包含一个分片,失去分片的意义

小结:ClickHouse多主架构中,支持DDL的分布式动态创建,支持通过分布式表查询和写入数据。

四、MergeTree系列表引擎

选择什么样的表引擎意味着选择了不同的数据存储组织方式,ClickHouse中有合并树、外部存储、内存、文件、接口与其他六个系列引擎,其中MergeTree合并树系列为其核心引擎。

合并树表引擎

描述

MergeTree

1、MergeTree的基础引擎,该系列的其他引擎继承了其能力2、具备数据分区、一级索引、二级索引、数据TTL一级存储能力

ReplacingMergeTree

1、具备删除本分区重复数据的能力2、通过ORDER BY排序键判断数据是否重复3、在分区合并的时候删除本分区重复数据,跨分区无法删除重复数据4、手动执行分区合并消耗大量时间

SummingMergeTree

1、合并分区时按照定义条件合并汇总数据,降低查询开销2、通过ORDER BY排序键作为聚合条件3、数据的合并和汇总在分区合并时进行,跨分区不会汇总合并

AggregatingMergeTree

1、SummingMergeTree的升级版2、根据ORDER BY排序键聚合数据,并写入表中,本分区相同数据合并3、在分区合并的时候执行聚合计算,跨分区不计算

CollapsingMergeTree

1、折叠合并树通过增加不同sign标志的数据代替删除的方式,实现行数据的修改与删除2、在合并分区的时候触发3、对写入的数据有严格的顺序要求

VersionedCollapsingMergeTree

1、与CollapsingMergeTree作用相同通过对数据折叠,完成数据的删除与修改2、通过标志位sign与版本号ver共同完成数据折叠3、对写入的数据没有顺序要求,内部通过ver倒序判断

小结:基于MergeTree衍生引擎提供删除重复数据、汇总聚合、删除与修改的能力,然而他们只适合特定的场景,都在分区合并的执行,不支持跨分区。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜农老梁 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、多主架构
  • 2、数据副本
  • 3、数据分片
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档