简介
最强OLAP分析引擎 -- clickhouse
OLTP与OLAP:
- OLTP:是传统的关系型数据库,主要操作增删改查,强调事务一致性,比如银行系统、电商系统。
- OLAP:是仓库型数据库,主要是读取数据,做复杂数据分析,侧重技术决策支持,提供直观
- 简单的结果。
1.Clickhouse是什么
Clickhouse 是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。是由俄罗斯Yandex公司开源的数据库,专为OLAP而设计。 Yandex是俄罗斯最大的搜索引擎公司,官方宣称ClickHouse 日处理记录数”十亿级”管理系统。他是使用C++语言编写的,支持SQL实时查询的大型数据管理系统。由于Clickhouse在大型数据集查询处理的高效表现,从2016年开源以来,就吸引了全球的目光,甚至一度登上githubl的关注度头把交椅。
OLAP
Clickhouse的设计定位就是用于OLAP离线数据处理。相比于OLTP在线事务处理,Clickhouse更关注于对海量数据的计算分析,关注的是数据吞吐、查询速度、计算性能等指标。而对于数据频繁的修改变更,则不太擅长。所以Clickhouse通常用来构建后端的实时数仓或者离线数仓。
列式存储
Clickhous是一个真正意义上的列式存储数据库。传统数据库存储数据都是按照数据行进行存储。
2.clickhous的应用场景
一个典型的OLAP场景主要是对海量数据进行更新,相比于我们常用的ysq等OLTP数据库,有一些很明显的特征。
(1)绝大多数请求都是读请求。对数据的修改比较少或者几乎没有。
(2)数据量很大。这个量即包括数据的行数,也包括数据的列数。也就是通常说的宽表。大部分情况下,对分布式表结构的要求是必须的。
(3)数据通常以大的批次进行整体更新,而不是单行更新。这需要有很高的数据吞吐量。
(4)对事务的要求不是必须的。对于数据一致性的要求不会太高。通常只要求数据最终一致性。
clickhous的使用
clickhouse本身作为一个数据库,对普通增删改查的操作都是支持的。但是,他针对数仓的使用场景,又有非常多的高级特性。对这些高级特性的掌握程度将直接影响clickhousel的使用效率。实现一个同样的查询逻辑,不同的SQL写法在clickhouse.上很容易体现出非常非常大的执行时长差别。所以在使用clickhouse时,需要对这些特性非常重视。