前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >超快!大数据分析引擎ClickHouse

超快!大数据分析引擎ClickHouse

作者头像
凹谷
发布2021-01-18 15:04:47
1.7K0
发布2021-01-18 15:04:47
举报

有格局的人会想着如何把蛋糕做大,而不是如何从眼前的蛋糕中多分一点。

一、什么是ClickHouse?

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。

对于存储而言,列式数据库总是将同一列的数据存储在一起,不同列的数据也总是分开存储。

常见的列式数据库有:Vertica、 Paraccel (Actian Matrix,Amazon Redshift)、 Sybase IQ、 Exasol、 Infobright、 InfiniDB、 MonetDB (VectorWise, Actian Vector)、 LucidDB、 SAP HANA、 Google Dremel、 Google PowerDrill、 Druid、 kdb+。

二、传统分析数据库的解决方案:

1、传统面对大数据量的处理方式:对数据进行分层,通过层层递进形成数据集市,从而减少最终查询的数据体量,比如提出数据立方体概念,通过对数据进行预先处理,以空间换时间,提升查询性能。

2、OLAP分类

关系型ROLAP:使用关系型模型构建,数据模型常使用星型模型或雪花模型

多维型MOLAP:使用多维数组的形式保存数据,其核心思想是借助预处理聚合结果,使用空间换时间的形式提升查询性能

混合架构HOLAP:可以理解ROLAP和MOLAP两者集成

三、一匹横空出世的黑马ClickHouse

ClickHouse(全称:Click Stream,Data WareHouse)具有ROLAP、在线实时查询、完整的DBMS、列式存储、不需要任何数据预处理、支持批量更新、非常完善的SQL和函数支持、支持高可用、不依赖Hadoop生态及开箱即用等特点。

ClickHouse 历史演化过程:

Mysql时期->另辟蹊径的Metrage时期->自我突破的OLAPServer时期->水到渠成的ClickHouse时期

1、MySQL时期:

采用MyISAM表引擎,采用B+数结构存储索引,而数据文件使用另外单独的存储文件,(区别于InnoDB表引擎使用B+树同时存储索引和数据,数据直接挂载在叶子节点中)

2、Metrage时期:

数据模型层面:关系型模型改为Key-Value模型

索引层面:LSM树代替了B+树

数据处理层面:实时查询改为预处理方式

使用LSM树最具代表性的是Hbase数据库,LSM本质可以看成将原本一颗大树拆成了许多颗小树,每一批次写入的数据会在内存中构建出一个小树,构建完成即完成写入(这里会通过预写日志的方式,防止内存故障而导致数据丢失),写入数据只发生在内存,不涉及磁盘操作,所以极大的提高了写入速度。

3、OLAPServer时期:

设计思路:取众家之长

数据模型:换回了关系型,理由:关系型有更好的描述能力

存储层面:与MyISAM表引擎类似,分为索引文件和数据文件

索引层面:沿用LSM树,将索引文件和数据文件按列进行拆分,每个列字段独立存储。

四、ClickHouse(全称:Click Stream,Data WareHouse)

1、ClickHouse适用场景:

非常适用商业智能领域,也广泛应用于广告流量、web、app流量、电信、金融、电子商务、信息安全、网络游戏、物联网等

2、ClickHouse不适用场景:

不支持事务

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

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

五、ClickHouse架构详解

ClickHouse是一款MPP架构的列式存储数据库,汲取了各家技术的精髓,将每一个细节做到了极致。

1、完备的DBMS(数据库管理系统)功能

DDL(数据库定义语言):可以动态的创建数据库、表和视图

DML(数据库操作语言):动态的查询、新增、修改及删除数据

权限控制、数据备份与恢复、分布式管理等

2、列式存储与数据压缩

不同的列保存在不同的文件中,数据中的重复项越多压缩率就越高,数据的体量就越小,传输就越快,对网络带宽和磁盘IO的压力就越小,使用LZ4算法压缩,压缩率达8:1.

3、向量化执行引擎

向量化引擎可以简单的理解做一项消除程序中循环的优化,原理是在寄存器层面的并行操作,寄存器的访问速度是内存的300倍,硬盘的3000万倍。

4、关系模型与SQL查询

关系模型(包括星型模型、雪花模型乃至宽表模型)相当于其它模型有更好的数据描述能力,另外注意ClickHouse SQL语法区分大小写。

5、多样化的表引擎

拥有合并数、内存、文件、接口和其他六大类20多种表引擎,每种引擎都有各自的特点,适用于不同的场景。

6、多线程与分布式

如果说向量化执行是通过数据级并行方式提升了性能,那么多线程处理就是通过线程级并行方式实现了性能提升,相比底层硬件实现的向量化执行SIMD(单个指令处理多条数据),线程级并行方式由高层次的软件层面控制。

分布式设计的思想是分而治之,在分布式有一条金科定律:移动计算比移动数据更划算。

在存储方面ClickHouse既支持分区(纵向扩展,利用多线程原理),也支持分片(横向扩展,利用分布式原理),可以说将多线程和分布式技术应用到了极致。

7、多主架构

HDFS、Spark、Hbase和ElasticSearch这类分布式系统都采用了Master-Slave主从架构,由一个节点管控,而ClickHouse采用多主架构,客户端访问任何一个节点都能得到相同的结果。

8、在线查询

能够做到急速响应,且无须对数据进行任何预处理加工。

9、数据分片与分布式查询

数据分片是一种将数据横向切分,ClickHouse提供了本地表(Local Table)和分布式表(Distributed Table),本地表相当于一份数据分片,而分布式表本身不存储任何数据,它是本地表的访问代理,其作用类似分库中间件,借助分布式表可访问多个本地表,从而实现分布式查询。

六、ClickHouse的设计原则,如此之快的秘诀

1、着眼硬件,先想后做

2、算法在前,抽象在后

3、勇于尝鲜,不行就换

4、特定场景,特殊优化

5、持续测试,持续改进

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据与微服务架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库管理
数据库管理(Database Management Center,DMC)是一个高效,安全,可靠的数据库一站式管理平台。DMC 提供可视化的库管理、实例会话管理、SQL 窗口、SQL 安全审计、SQL 变更审批、实时监控、操作审计等数据库管理能力,集成诊断优化和数据可视化分析能力,从而简化和规范数据库管理操作、降低数据库运维门槛、提升运维效率。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档