一、OLAP
-
概念
OLAP(Online analytical processing,联机分析处理)是快速解决多维分析问题的一种方法,OLAP工具让用户能够从多个角度交互地分析多维数据。OLAP由三个基本的分析操作组成:上卷(roll-up)、钻取(drill-down)、切片(slicing)和切块(dicing)。
2. OLAP场景的关键特征
-
绝大多数是读请求
-
数据以相当大的批次(> 1000行)更新,而不是单行更新;或者根本没有更新。
-
已添加到数据库的数据不能修改。
-
对于读取,从数据库中提取相当多的行,但只提取列的一小部分。
-
宽表,即每个表包含着大量的列
-
查询相对较少(通常每台服务器每秒查询数百次或更少)
-
对于简单查询,允许延迟大约50毫秒
-
列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节)
-
处理单个查询时需要高吞吐量(每台服务器每秒可达数十亿行)
-
事务不是必须的
-
对数据一致性要求低
-
每个查询有一个大表。除了他以外,其他的都很小。
-
查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果适合于单个服务器的RAM中
二、ClickHouse
ClickHouse是一个用于联机分析处理(OLAP)的列式数据库管理系统(DBMS)。ClickHouse作为列式存储的优点如下:
| 行式 | |
|---|---|
| 列式 |
- I/O
-
- 针对分析查询类的需求,通常只需要读取表的一小部分列,在列式存储数据库中只查询你想要的数据,假如你只需要读取100列中的5列,那么至少减少你20倍的IO消耗;
- 由于数据总是打包成batch进行读取的,列式数据存储更紧凑,在压缩速度与压缩比例上很有优势,能较少内存以及IO的消耗;
- 由于IO的降低,那么这有利于更多的数据被系统内存缓存;
2. CPU
由于执行一个查询需要处理大量的行,因此在整个向量上执行所有操作比在整个行上进行所有操作更加高效,CPU不需要因为处理负载而频繁的处于等待的状态。