文章目录
- 1、什么是 ClickHouse?
- 2、ClickHouse 有哪些应用场景?
- 3、ClickHouse 列式存储的优点有哪些?
- 4、ClickHouse 的缺点是是什么?
1、什么是 ClickHouse?
ClickHouse 是近年来备受关注的开源列式数据库管理系统,主要用于数据分析(OLAP)领域。通过向量化执行以及对 cpu 底层指令集(SIMD)的使用,它可以对海量数据进行并行处理,从而加快数据的处理速度。ClickHouse 从 OLAP场景需求出发,定制开发了一套全新的高效列式存储引擎,并且实现了数据有序存储、主键索引、稀疏索引、数据 Sharding、数据 Partitioning、TTL、主备复制等丰富功能。
2、ClickHouse 有哪些应用场景?
- 绝大多数请求都是用于读访问的;
- 数据需要以大批次(大于 1000 行)进行更新,而不是单行更新;
- 数据只是添加到数据库,没有必要修改;
- 读取数据时,会从数据库中提取出大量的行,但只用到一小部分列;
- 表很“宽”,即表中包含大量的列;
- 查询频率相对较低(通常每台服务器每秒查询数百次或更少);
- 对于简单查询,允许大约 50 毫秒的延迟;
- 列的值是比较小的数值和短字符串(例如,每个 URL 只有 60 个字节);
- 在处理单个查询时需要高吞吐量(每台服务器每秒高达数十亿行);
- 不需要事务;
- 数据一致性要求较低;
- 每次查询中只会查询一个大表。除了一个大表,其余都是小表;
- 查询结果显著小于数据源。即数据有过滤或聚合。返回结果不超过单个服务器内存。
3、ClickHouse 列式存储的优点有哪些?
- 当分析场景中往往需要读大量行但是少数几个列时,在行存模式下,数据按 行连续存储,所有列的数据都存储在一个 block中,不参与计算的列在 IO 时也要全部读出,读取操作被严重放大。而列存模式下,只需要读取参与计 算的列即可,极大的减低了 IOcost,加速了查询。
- 同一列中的数据属于同一类型,压缩效果显著。列存往往有着高达十倍甚至 更高的压缩比,节省了大量的存储空间,降低了存储成本。
- 更高的压缩比意味着更小的 data size,从磁盘中读取相应数据耗时更短。
- 自由的压缩算法选择。不同列的数据具有不同的数据类型,适用的压缩算法 也就不尽相同。可以针对不同列类型,选择最合适的压缩算法。
- 高压缩比,意味着同等大小的内存能够存放更多数据,系统 cache 效果更好。
4、ClickHouse 的缺点是是什么?
- 不支持事务,不支持真正的删除/更新;
- 不支持二级索引;
- join 实现与众不同;
- 不支持窗口功能;
- 元数据管理需要人为干预。
5、ClickHouse 的架构是怎样的?
ClickHouse 采用典型的分组式的分布式架构,其中:
- Shard。集群内划分为多个分片或分组(Shard 0 … Shard N),通过 Shard的线性扩展能力,支持海量数据的分布式存储计算。
- Node。每个 Shard 内包含一定数量的节点(Node,即进程),同一 Shard
内的节点互为副本,保障数据可靠。ClickHouse 中副本数可按需建设,且逻 辑上不同 Shard 内的副本数可不同。 - ZooKeeper Service。集群所有节点对等,节点间通过 ZooKeeper 服务进 行分布式协调。