开始学习《ClickHouse原理解析与应用实践》,写博客作读书笔记。
本文全部内容都来自于书中内容,个人提炼。
前言和推荐
略过
第1章 ClickHouse的前世今生
跟ck没多大关系,过一遍就行。不看可以直接跳。
1.1 传统BI系统之殇
为了解决数据孤岛的问题,人们提出了数据仓库的概念。即通过引入一个专门用于分析类场景的数据库,将分散的数据统一汇聚到一处。
于20世纪 90年代,有人第一次提出了BI(商业智能)系统的概念。自此以后,人们通常用BI一词指代这类分析系统。相对于联机事务处理系统,我们把这类BI系统称为联机分析(OLAP)系统。
BI缺陷:
- 统对企业的信息化水平要求较高,通常只有中大型企业才有能力实施
- 受众狭小,主要受众是企业中的管理层或决策层
- 研发过程冗长
1.2 现代BI系统的新思潮
现代BI系统在设计思路的变化:
- 轻量化。就算只根据简单的Excel文件也能进行数据分析。
- 受众多元化。人人都能做。
- 虽然依然私有化, 但是使用体验上偏向快速应答,简单易用。
传统BI系统为OLTP型数据库(关系型数据库)。
现代BI 系统的典型应用场景是多维分析,为OLAP型数据库。
1.3 OLAP常见架构分类
OLAP指的是通过多种不同的维度审视数据,进行深层次分析。
对数据的几个分析操作的解释,概念的东西,了解即可:
- 上卷:从低层次向高层次汇聚。例如从“市”汇 聚成“省”,将“武汉”“宜昌”汇聚成“湖北”。
- 下钻:和上卷相反,从高层次向低层次明细数据穿透。例如从“省”下钻到 “市”,从“湖北省”穿透到“武汉”和“宜昌”。
- 切片:观察立方体的一层,将一个或多个维度设为单个固定值,然后观察剩余的维度,例如将商品维度固定为“足球”。
- 切块:与切片类似,只是将单个固定值变成多个值。例如将商 品维度固定成“足球”“篮球”和“乒乓球”。
- 旋转:旋转立方体的一面,如果要将数据映射到一张二维表, 那么就要进行旋转,这就等同于行列置换。
举例如图1-1。
常见的OLAP架构大致分成三类:
- ROLAP(Relational OLAP,关系型OLAP)。直接使用关系模型构建,数据模型常使用星型模型或者雪花模型。最为直接的实现方法。缺点是对数据的实时处理能力要求很高。
- MOLAP(Multidimensional OLAP,多维型 OLAP)。核心思想是借助预先聚合结果,使用空间换取时间 的形式最终提升查询性能。是为了缓解ROLAP性能问题。缺点是维度预处理可能会导致数据的膨胀。
- HOLAP(Hybrid OLAP,混合架构的OLAP)。理解成ROLAP和MOLAP两者的集成。
不考虑性能,单纯从模型角度考虑,ROLAP架构更胜一筹。更简单且容易理解。它直接面向明细数据查询,不需要预处理。
1.4 OLAP实现技术的演进
演进过程简单划分成两个阶段:
- 传统关系型数据库阶段。存在严重的性能问题。
- ROLAP架构下,使用Oracle、MySQL一类数据库作为存储与计算的载体
- MOLAP架构下,则借助物化视图的形式实现数据立方体。
- 大数据技术阶段。
- ROLAP架构下,使用Hive和SparkSQL等分布式系统。
- MOLAP架构下,依托MapReduce,Spark,HBase,依然存在维度爆炸、数据同步实时性不高的问题。
1.5 一匹横空出世的黑马
就是吹黑屁,说ck多牛逼。
ck既使用ROLAP模型,同时又拥有比肩MOLAP的性能。
1.5.1 天下武功唯快不破
ck具有ROLAP、在线实时查 询、完整的DBMS、列式存储、不需要任何数据预处理、支持批量更 新、拥有非常完善的SQL支持和函数、支持高可用、不依赖Hadoop复杂 生态、开箱即用等许多特点。
1.5.2 社区活跃
ClickHouse是一款开源软件,遵循Apache License 2.0协议。社区更新活跃。
1.6 ClickHouse的发展历程
伴随着 Yandex.Metrica业务的发展,ClickHouse底层架构历经四个阶段:
1.6.1 顺理成章的MySQL时期
流量的数据采集链路是这样的:网站端的应用程序首先通过 Yandex提供的站点SDK实时采集数据并发送到远端的接收系统,再由接收系统将数据写入MySQL集群。导致数据在磁盘中是完全随机存储的,并且会产生大量的磁盘碎片。
1.6.2 另辟蹊径的Metrage时期
Metrage在