ClickHouse入门、实战与进阶
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 ClickHouse概述

ClickHouse是一个用于OLAP(On-Line Analytical Processing,在线分析处理)的列式数据库管理系统(Columnar DBMS),由俄罗斯Yandex公司的程序员在2008年开始开发(使用C++编程语言),并于2016年6月15日开源。

面对海量数据(TB级)、复杂业务分析场景问题,ClickHouse能够实现基于SQL语法的实时查询秒级响应。ClickHouse使用SIMD高效指令集、向量化执行引擎,在查询性能方面较传统方式提升了100~1000倍,同时具备50MB/s~200MB/s的实时导入能力,支持列存储数据高压缩率。

目前业界比较流行的分析型数据库包括Kylin、AnalyticDB、Druid、ClickHouse、Doris、Vertica、MonetDB、InfiniDB、LucidDB等。在DB-Engine排行榜(https://db-engines.com/en/ranking_trend)上(如图1-1所示),截至2022年10月,ClickHouse排第44名。在Relational DBMS排行榜上,ClickHouse排第28名(https://db-engines.com/en/system/ClickHouse)。从增长曲线图(https://db-engines.com/en/ranking_trend)可以看出,ClickHouse从开源到现在,增长迅速。

ClickHouse与竞品DB的性能基线(https://clickhouse.com/benchmark/dbms)对比如图1-2所示(1000万数据量的查询时延,时延越小越好)。

图1-1 业界比较流行的分析型数据库变化趋势(DB-Engine排行榜)

图1-2 ClickHouse与竞品DB的性能基线对比

近年来,大数据技术的发展,不论技术迭代,还是生态圈的繁荣,都远超我们的想象。大数据技术的鼻祖Google开启了“三驾马车”时代——Google FS、MapReduce和BigTable,大数据逐渐成为浪潮之巅。从Spark成为Hadoop生态的一部分,到Flink横空出世取代Spark成为大数据处理领域的新星,再到如今Google想要用Apache Beam(原名Google Cloud DataFlow)一统天下,大数据技术的发展可谓跌宕起伏,波澜壮阔。我们可以看到一个有趣的现象,那就是与大数据相关的技术滥觞之地都与搜索引擎公司有关(例如,Google的“三驾马车”,Yandex的ClickHouse,Baidu的Doris等)——因为搜索引擎公司直面海量数据,要解决海量数据的快速查询、分析的问题。另外,Hadoop起源于Apache Nutch项目,始于2002年,是Apache Lucene(开源全文检索引擎)的子项目之一。

ClickHouse的官网文档资料如下。

❑GitHub地址:https://github.com/ClickHouse/ClickHouse。

❑官网地址:https://clickhouse.com/。

❑在线源码阅读地址:https://clickhouse.com/codebrowser/html_report/ClickHouse/index.html。

小贴士:OLAP与OLTP简介

OLAP是数仓的灵魂,主要用于对复杂多维、大规模数据集进行在线实时分析,为用户提供决策支持。OLAP的核心是A(Analytical),也就是在线实时分析。

OLAP有很多不同的类型,例如关系型OLAP(Relational OLAP,ROLAP)、多维OLAP(Multidimensional OLAP,MOLAP)、混合OLAP(Hybrid OLAP,HOLAP)、空间OLAP(Spatial OLAP,SOLAP)等。ClickHouse、Presto等是ROLAP,Kylin是MOLAP。

OLAP的基本分析操作有上卷(Roll Up)、下钻(Drill Down)、切片(Slicing)、切块(Dicing)和数据旋转透视(Pivot)等,如图1-3所示。

图1-3 OLAP的基本分析操作

1)上卷,用于通过将相关数据聚合到一个变量中来减少维度。例如,可以将来自世界各地不同城市的销售额分组到一个国家或地区。

2)下钻,是上卷的逆向操作,用于分离信息以获得对收集到的数据的细粒度洞察。例如,你可以根据每个季度来评估金融机构的销售业绩。上卷与下钻如图1-4所示。

图1-4 上卷与下钻

3)切片与切块,是指定了某些维度值后,观察剩余维度的测度变化。维度值为单值时是切片,维度值为多值时则为切块。切片(块)的计算本质就是对指定维度的数据进行过滤,其意义在于更细致地剖析数据,便于分析人员多侧面地观察、对比数据,如图1-5所示。

图1-5 切片与切块

4)数据旋转透视,用于旋转数据轴以汇总信息并获得两个变量之间关系的整体视图,如图1-6所示。

图1-6 数据旋转透视

OLAP系统被整合到数据仓库中,以允许毫不费力地对数据进行分组、聚合和连接。对于传统的关系数据库,由于复杂的数据建模是资源密集型的,因此数据分析缓慢。但是,借助OLAP系统,可以将数据塑造成多种形状,从而加快大数据分析的速度。

OLTP的重点是T(Transaction),也就是在线实时事务处理。OLTP是传统关系型数据库服务(Relational Database Service,RDS)的主要应用场景,主要用来存储与业务高度相关的数据。OLTP强调准确、低时延、高并发。前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,快速响应用户操作。OLTP广泛用于在线订票、银行、电子商务网站、金融科技和任何其他日常交易量在数十万或数百万之间的业务。目前,OLTP系统几乎用于所有数字产品,每天支撑着数以亿万计的在线交易的运行。

OLAP与OLTP的对比清单如表1-1所示。

表1-1 OLAP与OLTP的对比清单

Yandex(https://yandex.com/)由Arkady Volozh和IIya Segalovich创建于1993年,是Yet Another Indexer(另一个索引)的缩写。Yandex是俄罗斯第一搜索引擎,类似中国的百度、美国的Google。Yandex提供包括搜索、最新新闻、地图和百科、电子信箱、电子商务、互联网广告等服务。

ClickHouse就是由Yandex公司专门开发,用来解决用户点击日志分析问题的,可以理解为俄罗斯版的百度统计,旨在提升网页点击日志分析的性能。在2008年,该公司开发ClickHouse的目的是替换原有的MySQL MyISAM引擎,后来发现ClickHouse的实际应用效果很好,于是在2016年进行了开源。ClickHouse的性能远超同期的开源竞品。

Yandex有很多项目在使用ClickHouse,包括Yandex数据分析、电子邮件、广告数据分析、用户行为分析等。2012年,欧洲核子研究中心使用了ClickHouse保存粒子对撞机产生的大量实验数据,每年的数据存储量都是PB级别,并支持统计分析查询。

讲了这么多,为什么叫ClickHouse呢?其实原因很简单。这款产品的设计初衷是解决用户点击流的大数据数仓分析问题。ClickHouse即Click Stream和Data WareHouse的统称。