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年终奖调查报告出炉,你的年终奖怎么样?