ClickHouse中分区(Partition)和分片(Shard)概念入门

2022-03-04 13:10:17 浏览数 (1)

ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。适合巨量数据环境下用户数据查询、数据分析等工作。ClickHouse 简称为 CH,是近几年日益火起来的一款类数据库分析工具。

2020年至今,ClickHouse就是一批黑马,成功脱颖而出,在各大互联网公司都受到青睐。

◆ 一、表分区(Partition)概念

表中的数据可以按照指定的字段分区存储,每个分区在文件系统中都是都以目录的形式存在。常用时间字段作为分区字段,数据量大的表可以按照小时分区,数据量小的表可以在按照天分区或者月分区,查询时,使用分区字段作为Where条件,可以有效的过滤掉大量非结果集数据。 

ClickHouse 分区的目的是为了尽可能地减少读取的数据量,那么它有哪些特点呢?

  • 创建分区的方法比较简单,只需要在建表时通过partition by语法指定即可;
  • 不止可以按某个字段做partition by,还可以支持按任意合法的表达式进行分区操作,比如toYYYYMM()按月做分区;
  • 支持对partition进行TTL管理,淘汰过期的分区数据;
  • 插入数据到分区表中时,先会将数据写入到分区目录下的segment文件中,后台程序会自动进行合并,当然也可以通过optimize命令手动触发合并。

在ClickHouse中有专门一张表对partition进行管理,那就是system.parts。

select database,table,partition,name,path,engine from system.parts WHERE table = 'ontime';

常见的一些字段说明:

  • database:数据库名称
  • table:表名
  • partition:分区键
  • name:分区名称
  • path:分区对应的目录
  • disk_name:分区所在的磁盘
  • engine:该数据表的引擎

◆ 二、分片(Shard)概念

一个分片本身就是ClickHouse一个实例节点,分片的本质就是为了提高查询效率,将一份全量的数据分成多份(片),从而降低单节点的数据扫描数量,提高查询性能。

上图中,除了分片(Shard)之外,还同时引入了副本(Replica)概念。

副本(Replica)简单理解就是相同的数据备份,在ClickHouse中通过复制集,我们实现了保障数据可靠性外,也通过多副本的方式,增加了ClickHouse查询的并发能力。这里一般有2种方式:1.基于ZooKeeper的表复制方式;2.基于Cluster的复制方式。由于我们推荐的数据写入方式本地表写入,禁止分布式表写入,所以我们的复制表只考虑ZooKeeper的表复制方案。

在集群配置中,Shard标签里面配置的replica互为副本,将internal_replication设置成true,此时写入同一个Shard内的任意一个节点的本地表,ZooKeeper会自动异步的将数据同步到互为副本的另一个节点。

来源:

https://www.toutiao.com/a7057403184083436063/?log_from=7c0724ff356c8_1644390274682

“IT大咖说”欢迎广大技术人员投稿,投稿邮箱:aliang@itdks.com

来都来了,走啥走,留个言呗~

 IT大咖说  |  关于版权

由“IT大咖说(ID:itdakashuo)”原创的文章,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请加微信:ITDKS10(备注:投稿),茉莉小姐姐会及时与您联系!

感谢您对IT大咖说的热心支持!

  • 相关推荐
  • 推荐文章
  • 用Python写了一个上课点名系统(附源码)(自制考勤系统)
  • 微服务篇:什么是同步式微服务
  • RabbitMQ,RocketMQ,Kafka 事务性,消息丢失和消息重复发送的处理策略
  • 2022年最该收藏的8个数据分析模型
  • 系统集成服务集成交互技术:REST服务集成—Swagger接口文档规范
  • Bootstrap实战 - 响应式布局
  • 为什么 Redis 的查询很快,Redis 如何保证查询的高效
  • vue3-vite-elementplus-admin管理后台V1.0.2
  • 知网都搜不到的知识:湖仓一体
  • 基于Springboot redis实现延时队列
  • 2021年终奖调查报告出炉,你的年终奖怎么样?

0 人点赞