这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
一、数据库复习
数据库的分类: OLTP数据库: OLTP (Online transactional processing)数据库是一种高速分析 数据库,专为多个用户执行大量事务而设计。 OL AP数据库: OL AP (Online analytical processing)数据库旨在同时分析多个数 据维度,帮助团队更好地理解其数据中的复杂关系
数据库架构:
二、概述:
什么叫做ClickHouse?
ClickHouse 是 Yandex(俄罗斯最大的搜索引擎)开源的一个用于实时数据分析的基于列存储的数据库,其处理数据的速度比传统方法快 100-1000 倍。ClickHouse 的性能超过了目前市场上可比的面向列的 DBMS,每秒钟每台服务器每秒处理数亿至十亿多行和数十千兆字节的数据。ClickHouse是近年来备受关注的开源列式数据库,主要用于数据分析(OLAP)领域。
我们用ClickHouse做什么?
这个是ClickHouse官方给出的一份性能测试图,由此可见ClickHouse雀氏快的离谱。
那么ClickHouse为什么会这么快?
- 因为ClickHouse是列式存储数据库,所以快
- CickHouse的设计则采用了自下而上的方式,目的是以最快的速度进行GROUP BY查询和过滤. 列式存储的优点
- 数据压缩
- 数据压缩可以使读的数据量更少,在IO密集型计算中获得更大的性能优势
- 相同类型压缩效率更高
- 排序之后压缩效率更高
- 可以针对不同类型使用不同的压缩算法
- 数据选择
- 可以选择特定的列做计算而不是读所有列
- 对聚合计算更友好
-
延迟物化 物化:将列数据转换为可以被计算或者输出的行数据或者内存数据结果的过程,物化 后的数据通常可以用来做数据过滤,聚合计算,Join
-
向量化
- SIMD (single instruction multiple data),对于现代多核CPU,其都有能力用一条指令执行多条数据
行存VS列存
三、典型应用场景
大宽表存储和查询:
- 大宽表查询
- 可以建非常多的列
- 可以增加,删除,清空每一列的数据
- 查询的时候引擎可以快速选择需要的列
- 可以将列涉及到的过滤条件下推到存储层从而加速查询
2。 动态表结构
- map中的每个key都是一列
- map中的每-列都可以单独的查询
- 使用方式同普通列,可以做任何计算
离线数据分析
- 数据导入
- 数据可以通过spark生成clickhouse格式的文件
- 导入到hdfs.上由hive2ch导入工具完成数据导入
- 数据直接导入到各个物理节点
- 数据按列导入
- 保证查询可以及时访问已有数据
- 可以按需加载需要的列
四、总结
- ClickHouse是标准的列存结构 2.存储设计是L SM-Tree架构 3.使用稀疏索引加速查询 4.每个列都有丰富的压缩算法和索引结构 5.基于列存设计的高效的数据处理逻辑