1. ClickHouse是啥?
是用于联机分析(OLAP)的列式数据库管理系统(DBMS)
2. 啥是列式数据库?
常见的行式数据库系统有: MySQL、Postgres和MS SQL Server。将同一列的数据存储在一起,不同列的数据也总是分开存储的数据库是列式数据库。常见的列式数据库有: Vertica、 Paraccel (Actian Matrix,Amazon Redshift)、 Sybase IQ、 Exasol、 Infobright、 InfiniDB、 MonetDB (VectorWise, Actian Vector)、 LucidDB、 SAP HANA、 Google Dremel、 Google PowerDrill、 Druid、 kdb+。
3.olap有啥关键特征?应用于哪些场景
- 大多数是读请求
- 数据总是以相当大的批(> 1000 rows)进行写入
- 不修改已添加的数据
- 每次查询都从数据库中读取大量的行,但是同时又仅需要少量的列
- 宽表,即每个表包含着大量的列
- 较少的查询(通常每台服务器每秒数百个查询或更少)
- 对于简单查询,允许延迟大约50毫秒
- 列中的数据相对较小: 数字和短字符串(例如,每个URL 60个字节)
- 处理单个查询时需要高吞吐量(每个服务器每秒高达数十亿行)
- 事务不是必须的
- 对数据一致性要求低
- 每一个查询除了一个大表外都很小
- 查询结果明显小于源数据,换句话说,数据被过滤或聚合后能够被盛放在单台服务器的内存中
4.为啥列式数据库更适合OLAP?
输入输出方面:
- 针对分析类查询,通常只需要读取表的一小部分列。在列式数据库中你可以只读取你需要的数据。例如,如果只需要读取100列中的5列,这将帮助你最少减少20倍的I/O消耗。
- 由于数据总是打包成批量读取的,所以压缩是非常容易的。同时数据按列分别存储这也更容易压缩。这进一步降低了I/O的体积。
- 由于I/O的降低,这将帮助更多的数据被系统缓存。
cpu方面:
由于执行一个查询需要处理大量的行,因此在整个向量上执行所有操作将比在每一行上执行所有操作更加高效。同时这将有助于实现一个几乎没有调用成本的查询引擎。如果你不这样做,使用任何一个机械硬盘,查询引擎都不可避免的停止CPU进行等待。所以,在数据按列存储并且按列执行是很有意义的。
5.clickhouse有哪些特性?
- 真正的列式数据库管理系统
- 使用了数据压缩
- 除了内存还可以存储在传统磁盘上
- 可以多核心并行
- 可以支持分布式查询
- 与SQL标准兼容,支持的查询包括 GROUP BY,ORDER BY,IN,JOIN以及非相关子查询
- 向量引擎。数据不仅仅按列存储,同时还按向量(列的一部分)进行处理,更加高效地使用