ClickHouse概述

ClickHouse概述


文章目录

  • ClickHouse概述
    • ClickHouse是什么
    • ClickHouse快的理由
    • 什么是OLAP
    • ClickHouse的特点
      • 列式存储
      • DBMS 的功能
      • 多样化引擎
      • 高吞吐写入能力
      • 数据分区与线程级并行
    • ClickHouse的应用
      • 合适场景
      • 不适合场景


ClickHouse是什么

ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库(DBMS),使用 C++ 语言编写,主要用于在线分析处理查询(OLAP),能够使用 SQL 查询实时生成分析数据报告。

ClickHouse的全称是Click Stream,Data WareHouse,简称ClickHouse

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jAevZhR5-1676970533485)(1.png)]

  • ClickHouse是一个完全的列式数据库管理系统,允许在运行时创建表和数据库,加载数据和运行查询,而无需重新配置和重新启动服务器,支持线性扩展简单方便高可靠性,容错

  • ClickHouse在大数据领域没有走 Hadoop 生态,而是采用 Local attached storage 作为存储,这样整个 IO 可能就没有 Hadoop 那一套的局限。

  • ClickHouse的系统在生产环境中可以应用到比较大的规模,因为它的线性扩展能力和可靠性保障能够原生支持 shard + replication 这种解决方案。它还提供了一些 SQL 直接接口,有比较丰富的原生 client。

  • 还有就是ClickHouse比较快。

一些发展历程的了解:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fxhdDit6-1676970533486)(2.png)]

同时,ClickHouse的社区是开源的,增长速度很快,社区也很活跃。

ClickHouse快的理由

上面收到了一点就是ClickHouse比较快,下方是官方的压测

下面是100M数据集的跑分结果:ClickHouse比Vertia快约5倍,比Hive快279倍,比My SQL 快801倍;虽然对不同的SQL查询,结果不完全一样,但是基本趋势是一致的。ClickHouse跑分有多块?举个例子:ClickHouse 1秒,Vertica 5.42秒,Hive 279秒;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oD1s7tU0-1676970533487)(3.png)]

下面的一些图表(来源某数据库对比网站),也可以证明ClickHouse在性能上的强大优势

  • 单表查询

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L1n2oY7D-1676970533488)(4.png)]

  • 关联查询

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-begj1RLX-1676970533489)(5.png)]

该网站的对比结论:ClickHouse 和很多 OLAP 数据库一样,单表查询速度优于关联查询,而且 ClickHouse的两者差距更为明显。

什么是OLAP

  • 百度百科

联机分析处理OLAP是一种软件技术,它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。它具有FASMI(Fast Analysis of Shared Multidimensional Information),即共享多维信息的快速分析的特征。其中F是快速性(Fast),指系统能在数秒内对用户的多数分析要求做出反应;A是可分析性(Analysis),指用户无需编程就可以定义新的专门计算,将其作为分析的一部 分,并以用户所希望的方式给出报告;M是多维性(Multi—dimensional),指提供对数据分析的多维视图和分析;I是信息性(Information),指能及时获得信息,并且管理大容量信息

ClickHouse的特点

列式存储

采用列式储存的好处:

  • 对于列的聚合,计数,求和等统计操作原因优于行式存储。

  • 由于某一列的数据类型都是相同的,针对于数据存储更容易进行数据压缩,每一列选择更优的数据压缩算法,大大提高了数据的压缩比重。

  • 由于数据压缩比更好,一方面节省了磁盘空间,另一方面对于 cache 也有了更大的发挥空间

DBMS 的功能

几乎覆盖了标准SQL 的大部分语法,包括 DDL 和 DML,以及配套的各种函数,用户管理及权限管理,数据的备份与恢复。

多样化引擎

ClickHouse 和 MySQL 类似,把表级的存储引擎插件化,根据表的不同需求可以设定不同的存储引擎。目前包括合并树、日志、接口和其他四大类 20 多种引擎。

高吞吐写入能力

  • 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 并不是强项。

ClickHouse的应用

合适场景

ClickHouse属于OLAP,同时兼具SQL大部分语法,速度快,所以ClickHouse非常适用于BI领域,除此之外,还可以广泛应用于广告流量、Web、App流量、电信、金融、电子商务、信息安全、网络游戏、物联网等众多其他领域

不适合场景

ClickHouse作为一款高性能OLAP数据库,虽然足够优秀,但也不是万能的。我们不应该把它用于任何OLTP事务性操作的场景,因为它有以下几点不足。

  • 不支持事务。

  • 不擅长根据主键按行粒度进行查询(虽然支持),故不应该把ClickHouse当作Key-Value数据库使用。

  • 不擅长按行删除数据(虽然支持)。

这些不足之处并不能视为ClickHouse的缺点,事实上其他同类高性能的OLAP数据库同样也不擅长上述的这些方面。因为对于一款OLAP数据库而言,上述这些能力并不是重点,只能说这是为了极致查询性能所做的权衡。

全文结束!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值