ClickHouse 面试题(一)_数据库


文章目录

  • 1、什么是 ClickHouse?
  • 2、ClickHouse 有哪些应用场景?
  • 3、ClickHouse 列式存储的优点有哪些?
  • 4、ClickHouse 的缺点是是什么?


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 时也要全部读出,读取操作被严重放大。而列存模式下,只需要读取参与计 算的列即可,极大的减低了 IOcost,加速了查询。
  • 同一列中的数据属于同一类型,压缩效果显著。列存往往有着高达十倍甚至 更高的压缩比,节省了大量的存储空间,降低了存储成本。
  • 更高的压缩比意味着更小的 data size,从磁盘中读取相应数据耗时更短。
  • 自由的压缩算法选择。不同列的数据具有不同的数据类型,适用的压缩算法 也就不尽相同。可以针对不同列类型,选择最合适的压缩算法。
  • 高压缩比,意味着同等大小的内存能够存放更多数据,系统 cache 效果更好。

4、ClickHouse 的缺点是是什么?

  • 不支持事务,不支持真正的删除/更新;
  • 不支持二级索引;
  • join 实现与众不同;
  • 不支持窗口功能;
  • 元数据管理需要人为干预。

5、ClickHouse 的架构是怎样的?

ClickHouse 面试题(一)_clickhouse_02


ClickHouse 采用典型的分组式的分布式架构,其中:

  • Shard。集群内划分为多个分片或分组(Shard 0 … Shard N),通过 Shard的线性扩展能力,支持海量数据的分布式存储计算。
  • Node。每个 Shard 内包含一定数量的节点(Node,即进程),同一 Shard
    内的节点互为副本,保障数据可靠。ClickHouse 中副本数可按需建设,且逻 辑上不同 Shard 内的副本数可不同。
  • ZooKeeper Service。集群所有节点对等,节点间通过 ZooKeeper 服务进 行分布式协调。