CK入门概述
入门概述
闲话部分:
在学习clickhouse之前,
我建议至少了解了一门oltp数据库(mysql或pgsql之类的)的基础原理,包括且不限于(基础语法、ddl、dml、索引相关原理)
在此基础上横向对比,才能更好的比较两种数据库的优劣点
闲话部分2:
在学习ck前还需要注意几个点:
1、为什么要用ck
2、ck解决了什么问题
3、ck如何解决了这些问题
4、有无发展史,初期的建模架构之类的迭代思路是什么样的
闲话部分3:
由于笔者目前仅在学习中对pg和ck比较熟悉,所以文中多会以这两者做比较
前置术语部分:
刚开始接触ck,一定得了解几个概念:olap、oltp;行式数据库、列式数据库;
OLTP和OLAP
OLTP (Online Transaction Processing)系统关注的是:
- 高频、短事务
- 强一致性
- 单条或少量数据的读写
OLAP (Online Analytical Processing)系统关注的是:
- 大数据量
- 复杂聚合
- 批量扫描与统计分析
有关OLTP和OLAP本篇博客不做详细展开,后续会在对应篇章再讨论
行列式数据库
基于上述出发点,不难发现两种数据库会有各自的侧重点;
所以可以引出行列数据库的比较:
行式存储 vs 列式存储:底层存储结构的根本差异
列式数据库(Column-oriented)
数据按列连续存储:
1 | |
优点:
- 只读取需要的列,I/O 极小
- 同一列数据类型一致,压缩率极高
- 聚合计算(SUM、COUNT、AVG)效率极高
缺点:
- 单行写入、更新不友好
- 事务支持较弱
行式数据库(Row-oriented)
数据按行连续存储:
1 | |
优点:
- 适合点查一整行
- 更新单条记录效率高
- 事务支持成熟
缺点:
- 做聚合统计时,需要扫描大量无关列
- I/O 浪费严重
有关行列式数据库本篇博客不做详细展开,后续会在讲ck数据引擎的时候再讨论