ClickHouse设计原理简介(上)

简介: ClickHouse设计原理简介(上)

简介


1、由Yandex开源的高性能OLAP数据库

2、采用列式存储结构,拥有高效的数据压缩能力

3、通过多核并行处理以及向量执行引擎提升查询能力

4、多样化的表引擎用于支撑不同的应用场景

5、支持多线程和分布式处理

ClickHouse性能

100million条数据量下,ClickHouse的单表聚合查询性能非常高,是Greenplum(x2)集群的16倍,是PostgreSQL的10倍,是Mysql的833倍。

适用场景

  • • 商业智能
  • • 电信行业数据存储统计
  • • 新浪微博用户行为记录分析
  • • 电子商务用户分析
  • • 金融等领域

不适用的场景

  • • 不支持事务
  • • 不擅长根据主键按行粒度进行查询(虽然支持)
  • • 不擅长按行删除数据(虽然支持)
  • • 不擅长按行更新数据(虽然支持)

ClickHouse采用列式存储,其格式相对于行存储格式来说,对行粒度查询进行处理稍显劣势。


核心特性


完备的DBMS功能

  • • DDL:可以动态的创建、修改或删除数据库、表和视图
  • • DML:可以动态查询、插入、修改或删除数据
  • • 权限控制:可以按照用户粒度设置数据库或表的操作权限,保证数据安全
  • • 数据备份与恢复,提供了数据的导入和导出恢复机制
  • • 分布式管理:提供集群模式,能够自动管理多个数据库节点

列式存储和数据压缩

  • • 列式存储有效减少查询时扫描数据量
  • • 列式存储比行存储的另一个优势是数据压缩的友好性
  • • 同一个字段拥有相同的数据类型和实现语义,数据重复项的可能性更高
  • • 默认采用LZ4压缩算法(速度较快,但压缩率较低),以及ZSTD压缩算法(速度较慢,压缩率较高)
  • • ClickHouse的LZ4算法在Yandex的生产环境数据压缩比能达到8:1
  • • TPCH数据(无索引),ckdb压缩率达到52%,rocksdb达到61%

行式存储是按行读取,比如一个表中有很多列,读取其中三列,就需要对所有列进行一个扫描;列式存储只需要对所需要的三列进行读取,就有效的减少了查询时候的扫描数据量。

列式存储是一个字段作为一组数据进行一个存储。

向量化执行引擎

  • • 利用寄存器硬件层面的特性,为上层的程序性能带来了指数级的提升
  • • SIMD指令,单条指令操作多条数据,通过数据并行以提高数据的并行操作。它的原理是在CPU寄存器层面实现数据的并行操作。

image.png

通过数据的并行来提高数据的查询能力和处理能力。

多样化表引擎

  • • 为了避免平庸,ClickHouse拥有和Mysql类似的表引擎设计,它拥有4大类30多种表引擎
  • • 每一种表引擎都拥有各自的特点,用户可以根据实际业务场景的要求,选择合适的表引擎使用

image.png

  • • ReplacingMergeTree

主要用于相同主键进行合并处理比如主键重复的数据有多条,可以在内部合并,最终保留一条

多线程和分布式

  • • 多线程

如果说向量化执行是通过数据级并行的方式提升性能,那么多线程就是通过线程级并行的方式实现性能的提升,默认CPU核数的一半

  • • 分布式

为了利用分布式设计,ClickHouse在数据存取,即支持分区(纵向扩展、利用多线程原理),也支持分片(横向扩展,利用分布式原理,由replica组成)

另外ClickHouse提供了本地表和分布式表的概念,本地表相当于数据分片,分布式表是本地表的访问代理,其本身不存储任何数据


image.png



ClickHouse架构设计


多主架构

区别于Master-Slave主从架构,ClickHouse采用了Multi-Master多主架构,集群中的每个节点角色对等,客户端访问任意一个节点都能得到相同的效果

多主架构具有很多优势,不用区分多主控节点,数据节点和计算节点,集群中的所有节点功能相同,客户端访问每一个节点都能得到相同的效果

image.png



MergeTree原理解析


image.png


相关文章
|
存储 SQL 运维
涨姿势 | 一文读懂备受大厂青睐的ClickHouse高性能列存核心原理
本文尝试解读ClickHouse存储层的设计与实现,剖析它的性能奥妙
3874 0
涨姿势 | 一文读懂备受大厂青睐的ClickHouse高性能列存核心原理
|
6月前
|
存储 分布式计算 监控
ClickHouse简介
ClickHouse是一款专注于OLAP(联机分析处理)的列式存储数据库,以其极致的查询性能、高压缩率和实时分析能力著称。它通过列式存储、向量化查询引擎及分布式架构,满足大规模数据复杂聚合需求,适用于实时日志分析、用户行为分析等场景。然而,ClickHouse不支持事务(ACID),JOIN性能较弱,且对单行更新/删除效率低,不适合OLTP场景。其丰富的表引擎(如MergeTree系列)和数据类型(如LowCardinality优化类型)为不同业务需求提供了灵活支持。
|
9月前
|
存储 缓存 监控
ClickHouse 架构原理及核心特性详解
ClickHouse 是由 Yandex 开发的开源列式数据库,专为 OLAP 场景设计,支持高效的大数据分析。其核心特性包括列式存储、字段压缩、丰富的数据类型、向量化执行和分布式查询。ClickHouse 通过多种表引擎(如 MergeTree、ReplacingMergeTree、SummingMergeTree)优化了数据写入和查询性能,适用于电商数据分析、日志分析等场景。然而,它在事务处理、单条数据更新删除及内存占用方面存在不足。
2652 21
|
12月前
|
SQL 消息中间件 分布式计算
大数据-141 - ClickHouse 集群 副本和分片 Zk 的配置 Replicated MergeTree原理详解(一)
大数据-141 - ClickHouse 集群 副本和分片 Zk 的配置 Replicated MergeTree原理详解(一)
258 0
|
12月前
|
SQL 大数据
大数据-141 - ClickHouse 集群 副本和分片 Zk 的配置 Replicated MergeTree原理详解(二)
大数据-141 - ClickHouse 集群 副本和分片 Zk 的配置 Replicated MergeTree原理详解(二)
270 0
|
存储 自然语言处理 算法
ClickHouse设计原理简介(下)
ClickHouse设计原理简介(下)
477 0
ClickHouse设计原理简介(下)
|
存储 SQL 设计模式
ClickHouse设计原理简介(中)
ClickHouse设计原理简介(中)
548 1
ClickHouse设计原理简介(中)
|
存储 消息中间件 SQL
Sentry 监控 - Snuba 数据中台架构简介(Kafka+Clickhouse)
Sentry 监控 - Snuba 数据中台架构简介(Kafka+Clickhouse)
905 0
Sentry 监控 - Snuba 数据中台架构简介(Kafka+Clickhouse)
|
存储 SQL 分布式计算
clickhouse简介
clickhouse简介
687 0
|
3月前
|
存储 监控 分布式数据库
ClickHouse分布式数据库动态伸缩(弹性扩缩容)的实现
实现ClickHouse数据库的动态伸缩需要持续的维护和精细的操作。从集群配置到数据迁移,再到监控和自动化,每一步都要仔细管理以确保服务的可靠性和性能。这些活动可以显著提高应用的响应性和成本效率,帮助业务根据实际需求灵活调整资源分配。
198 10

热门文章

最新文章

推荐镜像

更多