李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
大数据
正文
01.ClickHouse介绍
Leefs
2022-04-26 AM
1336℃
0条
[TOC] ### 一、概述 ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库(DBMS),使用 C++ 语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。 ### 二、ClickHouse的特点 #### 2.1 列式存储 以下面的表为例: | ID | Name | Age | | ---- | ---- | ---- | | 1 | 张三 | 18 | | 2 | 李四 | 22 | | 3 | 王五 | 34 | **(1)采用行式存储时,数据在磁盘上的组织结构为:** ![01.ClickHouse介绍01.jpg](https://lilinchao.com/usr/uploads/2022/04/1386641598.jpg) 好处是想查某个人所有的属性时,可以通过一次磁盘查找加顺序读取就可以。但是当想 查所有人的年龄时,需要不停的查找,或者全表扫描才行,遍历的很多数据都是不需要的。 **(2)采用列式存储时,数据在磁盘上的组织结构为:** ![01.ClickHouse介绍02.jpg](https://lilinchao.com/usr/uploads/2022/04/2690217926.jpg) 这时想查所有人的年龄只需把年龄那一列拿出来就可以了。 **(3)列式储存的好处** + 对于列的聚合,计数,求和等统计操作优于行式存储。 + 由于某一列的数据类型都是相同的,针对于数据存储更容易进行数据压缩,每一列选择更优的数据压缩算法,大大提高了数据的压缩比重。 + 由于数据压缩比更好,一方面节省了磁盘空间,另一方面对于 cache 也有了更大的发挥空间。 ### 三、DBMS的功能 几乎覆盖了标准 SQL 的大部分语法,包括 DDL 和 DML,以及配套的各种函数,用户管理及权限管理,数据的备份与恢复。 ### 四、高吞吐写入能力 ClickHouse 采用类 **LSM Tree**的结构,数据写入后定期在后台 Compaction。通过类 LSM tree 的结构,ClickHouse 在数据导入时全部是顺序 append 写,写入后数据段不可更改,在后台 compaction 时也是多个段 merge sort 后顺序写回磁盘。顺序写的特性,充分利用了磁盘的吞吐能力,即便在 HDD 上也有着优异的写入性能。 官方公开 benchmark 测试显示能够达到 50MB-200MB/s 的写入吞吐能力,按照每行 100Byte 估算,大约相当于 50W-200W 条/s 的写入速度。 ### 五、数据分区与线程级并行 ClickHouse 将数据划分为多个 partition,每个 partition 再进一步划分为多个 index granularity(索引粒度),然后通过多个 CPU核心分别处理其中的一部分来实现并行数据处理。 在这种设计下,**单条 Query 就能利用整机所有 CPU**。极致的并行处理能力,极大的降低了查询延时。 所以,ClickHouse 即使对于大量数据的查询也能够化整为零平行处理。但是有一个弊端就是对于单条查询使用多 cpu,就不利于同时并发多条查询。所以对于高 qps 的查询业务, ClickHouse 并不是强项。 ### 六、性能对别 某网站精华帖,中对几款数据库做了性能对比。 **(1)单表查询** ![01.ClickHouse介绍03.jpg](https://lilinchao.com/usr/uploads/2022/04/704781134.jpg) **(2)关联查询** ![01.ClickHouse介绍04.jpg](https://lilinchao.com/usr/uploads/2022/04/3098591792.jpg) 结论: ClickHouse 像很多 OLAP 数据库一样,单表查询速度优于关联查询,而且 ClickHouse 的两者差距更为明显。 *附参考原文:* *《尚硅谷大数据技术之ClickHouse》*
标签:
ClickHouse
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/2024.html
上一篇
什么是OLAP
下一篇
02.ClickHouse单机版安装教程
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
VUE
MyBatisX
MySQL
Spark RDD
nginx
BurpSuite
Beego
DataX
Filter
DataWarehouse
排序
Http
字符串
散列
JavaWeb
pytorch
JavaScript
持有对象
Quartz
Java
Spring
Spark SQL
Elasticsearch
并发线程
Docker
Java工具类
SpringCloud
哈希表
正则表达式
Python
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭