1、什么是ClickHouse?
ClickHouse是近年来备受关注的开源列式数据库管理系统,主要⽤于数据分析(OLAP)领域。通过向量化执⾏以
及对cpu底层指令集(SIMD)的使⽤,它可以对海量数据进⾏并⾏处理,从⽽加快数据的处理速度。ClickHouse从
OLAP场景需求出发,定制开发了⼀套全新的⾼效列式存储引擎,并且实现了数据有序存储、主键索引、稀疏索
引、数据Sharding、数据Partitioning、TTL、主备复制等丰富功能。
2、ClickHouse有哪些应⽤场景?
1. 绝⼤多数请求都是⽤于读访问的;
2. 数据需要以⼤批次(⼤于1000⾏)进⾏更新,⽽不是单⾏更新;
3. 数据只是添加到数据库,没有必要修改;
4. 读取数据时,会从数据库中提取出⼤量的⾏,但只⽤到⼀⼩部分列;
5. 表很“宽”,即表中包含⼤量的列;
6. 查询频率相对较低(通常每台服务器每秒查询数百次或更少);
7. 对于简单查询,允许⼤约50毫秒的延迟;
8. 列的值是⽐较⼩的数值和短字符串(例如,每个URL只有60个字节);
9. 在处理单个查询时需要⾼吞吐量(每台服务器每秒⾼达数⼗亿⾏);
10. 不需要事务;
11. 数据⼀致性要求较低;
12. 每次查询中只会查询⼀个⼤表。除了⼀个⼤表,其余都是⼩表;
13. 查询结果显著⼩于数据源。即数据有过滤或聚合。返回结果不超过单个服务器内存。
3、ClickHouse列式存储的优点有哪些?
当分析场景中往往需要读⼤量⾏但是少数⼏个列时,在⾏存模式下,数据按⾏连续存储,所有列的数据都存储
在⼀个block中,不参与计算的列在IO时也要全部读出,读取操作被严重放⼤。⽽列存模式下,只需要读取参
与计算的列即可,极⼤的减低了IO cost,加速了查询。
同⼀列中的数据属于同⼀类型,压缩效果显著。列存往往有着⾼达⼗倍甚⾄更⾼的压缩⽐,节省了⼤量的存储
空间,降低了存储成本。
更⾼的压缩⽐意味着更⼩的data size,从磁盘中读取相应数据耗时更短。
⾃由的压缩算法选择。不同列的数据具有不同的数据类型,适⽤的压缩算法也就不尽相同。可以针对不同列类
型,选择最合适的压缩算法。
⾼压缩⽐,意味着同等⼤⼩的内存能够存放更多数据,系统cache效果更好。
4、ClickHouse的缺点是是什么?
不⽀持事务,不⽀持真正的删除/更新;
不⽀持⼆级索引;
join实现与众不同;
不⽀持窗⼝功能;
元数据管理需要⼈为⼲预。