become who you want to be|

张三Blog

园龄:3年4个月粉丝:3关注:0

列式数据库管理系统之ClickHouse初学

1.ClickHouse入门

ClickHouse 是一个真正的列式数据库管理系统(DBMS)。在 ClickHouse 中,数据始终是按列存储的,包括矢量(向量或列块)执行的过程。只要有可能,操作都是基于矢量进行分派的,而不是单个的值,这被称为«矢量化查询执行»,它有利于降低实际的数据处理开销。

这个想法并不新鲜,其可以追溯到 APL 编程语言及其后代:A +、J、K 和 Q。矢量编程被大量用于科学数据处理中。即使在关系型数据库中,这个想法也不是什么新的东西:比如,矢量编程也被大量用于 Vectorwise 系统中。

通常有两种不同的加速查询处理的方法:矢量化查询执行和运行时代码生成。在后者中,动态地为每一类查询生成代码,消除了间接分派和动态分派。这两种方法中,并没有哪一种严格地比另一种好。运行时代码生成可以更好地将多个操作融合在一起,从而充分利用 CPU 执行单元和流水线。矢量化查询执行不是特别实用,因为它涉及必须写到缓存并读回的临时向量。如果 L2 缓存容纳不下临时数据,那么这将成为一个问题。但矢量化查询执行更容易利用 CPU 的 SIMD 功能。朋友写的一篇研究论文表明,将两种方法结合起来是更好的选择。ClickHouse 使用了矢量化查询执行,同时初步提供了有限的运行时动态代码生成。

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

1.1 ClickHouse的特点

1.1.1 列式存储

以下面的表为例:

idNameAge
1张三18
2李四22
1王五34
  • 采用形式存储时,数据在磁盘上的组织结构为:
1张三182李四223王五34

好处就是想查询某个人的属性时,可以通过一次磁盘查找加顺序读取就可以。但是当想查所有人的年龄时需要不停的的查找或者全表扫描才行 遍历的很多数据都是不需要的

  • 采用列式存储时数据在盘上的组织结构为:
1232张三李四王五182234

这时想查搜友人的年龄只需把年龄那一列拿出来就可以了

  • 列式存储的好处
    • 对于列的聚合、计数、求和等系统操作原因优于行式存储
    • 优于某一列的数据类型都是相同的,针对于数据存储更容易进行数据压缩,每一列选择更优的数据压缩算法,大大提高了数据的压缩比重
    • 由于数据压缩比更好,一方面节省了磁盘空间,另一方面对于cache也有了更大的发挥空间

1.1.2 DBMS的功能

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

1.1.3 多样化引擎

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

1.1.4 高吞吐写入能力

ClickHouse 采用类LSM Tree的结构,数据写入后定期在后台Compaction。通过类LSM tree的结构,ClickHouse在数据导入时全部是顺序append写,写入后数据段不可更改,在后台compaction时也是多个短merge sort后顺序写回磁盘。顺序写的特性,充分利用了磁盘的吞吐能力,几盘在HDD上也有着优异的写入性能

官方公开benchmark测试显示能够达到50MB-200MB/s的写入吞吐能力,按照每行100Byte估算,大约相当于50W-200W条/s的写入速度

1.1.5 数据分区与线程及并行

ClickHouse将数据划分为多个partition,每个partition再进一步划分为多个index granularity(索引粒度),然后通过多个CPU核心分别处理其中的一部分来实现并行数据处理。在这种设计下,单条Query就能利用整机所有CPU。极致的并行处理能力,极大的降低了查询延时
所以,ClickHouse即使对于大量数据的查询也能够化整为零平行处理,但是有一个弊端就是对于单条查询使用多CPU,就不利用同时并发多条查询。所以对于高QPC的查询业务,ClickHouse并不是强项

1.1.6 性能对比

  • 单表查询
    在这里插入图片描述
  • 关联查询
    在这里插入图片描述
    结论:ClickHouse像很多OLAP数据库一样,单表查询速度优于关联查询 而且ClickHouse的两者差距更为明显

2.ClickHouse安装

3.数据类型

4.表引擎

5.SQL操作

6.副本

7.分片集群

本文作者:张三Blog

本文链接:https://www.cnblogs.com/zhangsan-plus/p/16503267.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   张三Blog  阅读(196)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起