前言
ClickHouse是俄罗斯Yandex 2016年开源的列式存储数据库(DBMS)与hbase类似,使用C++编写。主要用于 在线分析处理查询(OLAP),常用于SQL查询进行数据分析生成数据报告,大数据领域-数仓。
入门
列式存储vs行式存储
DBMS功能
对标准SQL语法支持的比较好,包括DDL和DML及相关函数、权限管理、数据备份与恢复。
多样化引擎
目前包括合并树(merge tree)、日志、接口、和其他四类20多种引擎
高吞吐写入能力
采用LSM Tree结构,数据写入后定期在后台compaction(合并),数据导入时都是顺序写append(速度快),写入后数据段不可更改,compaction时也是多个段merge sort后顺序写回磁盘
数据分区与线程级并行
数据分区可避免全表扫描。将数据划分为多个partition,每个partition再进一步划分为多个index。然后利用多核CPU分别处理其中一部分来实现并行数据处理。这种设计下,单条query就能利用整机所有CPU,极大提高查询效率。弊端是单条query就使用多核CPU不利于并发多条查询,因此不适用于高qps的查询业务
- cpu可能容易达到瓶颈
- 高并发查询也可能达到瓶颈