目录
原文参考ClickHouse官方网站-https://clickhouse.yandex/docs/en/introduction/distinctive_features/
什么是ClickHouse:
ClickHouse是一个面向列得数据库管理系统(DBMS),用于在线分析处理查询(OLAP).
它以列式存储数据
OLAP场景得关键属性:
1.绝大数请求都是读取访问权限
2.数据以相当大得批次(>1000行)更新,而不是单行更新;或者它根本没有更新。
3.数据已经添加到数据库后,但未进行修改。
4.对于读取,从DB中提取了相当多的行,但是只提取了一小部分列
5.表格“宽”,意味着它们含有大量的列
6.查询相对较少(通常每台服务器数百个查询或者每秒更少)
7.对于简单查询,允许延迟大约50ms。
8.列值相当小:数字和短字符串(例如每个URL60个字节)
9.处理单个查询时需要高吞吐量(每台服务器每秒最多数十亿行)
10.Transactions不是必须的
11.对数据一致性要求较低
12.每个查询有一张大表。所有表都很小,除了一个。
13.查询结果明显小于源数据。换句话说,数据被过滤或聚合美因茨结果适合单个服务器的RAM。
ClickHouse的独特功能:
1.真正面向列的DBMS,
没有与值一起存储额外的数据。除此之外,这意味着必须支持恒定长度值,以避免在值的旁边存储长度“数字”。例如,是一个Uint 8类型的值实际上应该消耗大于1GB的未压缩,这将极大地影响CPU的使用。即使在未压缩时,紧凑地存储数据(没有任何“垃圾”)也是非常重要的,因为解压缩地速度(Cpu)使用率主要取决于未压缩数据的量。
---值得注意的是,因为有些系统可以单独存储不同列的值,由于它们针对其它场景的优化而吴凡有效的处理分析查询。例如Hbase,BigTable,Cassandra,和HyperTable。在这些系统中,您将获得1大约每秒十万行的吞吐量,但是不会达到每秒数亿行。
---值得注意的是,ClickHouse是一个数据库管理系统,而不是一个数据库。ClickHouse允许在运行时创建表和数据库,加载数据和运行查询,而无需重新配置和重新启动服务器。
2.数据压缩
一些面向列的DBMS(InfiniDB CE和MonetDB)不使用数据压缩。但是,数据压缩确实在实现性能卓越方面发或者关键作用。
3,数据磁盘存储
通过主键对数据进行物理分类,可以提取具有低延迟(小于即使毫秒)的特定值或范围的数据。一些面向列的DBMS(例如SAP HANA和Google PowerDrill)只能在RAM中工作,这种方式鼓励分配比实时分析实际需要更大的硬件估算。ClickHouse设计用于常规硬盘驱动器,这意味着每GB数据存储的成本很低,但SSD和额外的RAM也可以充分使用(如果可用)。
4,多个核心的并行处理
大型查询以自然方式并行化,获取当前服务器上可用的所有必要资源。
5,多个服务器上多的分布式处理
上面提到的几乎没有一个柱状DBMS支持分布式处理。在ClickHouse中,数据可以驻留在不同的分片上。每个分片都可以是一组用于容错的副本。在所有的分片上进行并行处理查询。这对于用户来说是透明多的。
6,SQL支持
ClickHouse支持基于SQL的声明性查询语言,在许多情况下与SQL标准相同。支持的查询包括GROUP BY,ORDER BY, FROM,IN和JOIN子句中的子查询以及标量子查询。不支持从属子查询和窗口函数。
7,矢量引擎
数据不仅按列存储,还由向量(列的一部分)处理。这是我们可以实现高CPU利用率。
8,实时数据更新
ClickHouse支持具有主键的表。为了快速执行主键范围的查询,使用合并树以递增的方式进行排序。因此,可以不断将数据添加到表中。摄取新数据时不会进行锁定。
9,索引
通过主键对数据进行物理排序,可以提取具有延迟(小于几十毫秒)的特定值或
10,适合在线查询
低延迟意味着可以在没有延迟的情况下处理查询,而无需在加载用户界面的同一时间提前准备答案。换句话说-online
11,支持近似计算
ClickHouse提供了各种交易性能准确度的方法:
1,聚合函数,用于近似计算不同值,中位数和分位数的数量2,基于数据的一部分(样本)运行查询并获得祭祀结果。在这种情况下,从磁盘检索的数据成比例地减少。
3,为有限数量地随机密钥运行聚合,为不是为所有密钥运行聚合。在数据密钥分发地某些条件下,还在使用较少资源的同时提供了相当准确的结果。
12,数据复制和数据完整性支持
使用异步多主机复制。再写入任何可用副本后,数据将分放到后台的所有剩余副本。系统在不同的副本上维护相同的数据。在大多数故障后自动执行恢复,在复杂情况下-半自动执行。
ClickHouse的缺点:
1,没有完整的事务支持
2,缺乏高速率和低延迟的修改和删除已插入数据的能力。有批次删除和更新可用于清理或修改数据,例如符合GDPR。
3,稀疏索引使得ClickHouse不太适合通过其键 做检索单行的点查询。