0
点赞
收藏
分享

微信扫一扫

Clickhouse_2_架构概述

kolibreath 2022-03-11 阅读 71
spring cloud

生生不息,“折腾”不止;Java晋升指北,让天下没有难学的技术


在这里插入图片描述
ClickHouse汲取了各家技术的精髓,将每一个细节都做到了极致

核心特性

1.1 DBMS功能

ClickHouse拥有完备的管理功能,所以称得上是DBMS;

  • DDL(数据定义语言):可以动态地创建、修改、删除数据库、表、视图(无需重启服务)
  • DML(数据操作语言):CRUD
  • 权限控制:可设置库、表的操作权限,保障数据的安全性
  • 数据备份/恢复:恢复机制
  • 分布式管理:提供集群模式,能够自动管理多个数据库节点

1.2 列式存储/数据压缩

如果想让数据查询变得更快,最简单且有效的方法就是减少数据扫描范围、数据传输时大小,而列式存储、数据压缩就可以帮助我们实现上述两点;
列式存储 VS 行式存储:Select A1,A2,A3,A4 from 表;

  • 行式存储,数据库首先会逐行扫描,并获取每行数据的所有字段,再返回每一行的所需字段
  • 列式存储,直接获取对应列的字段,避免了多余的数据扫描
    数据压缩:有两个字符,ABCDEFGHI、BCDEFGHI
  • 压缩前:ABCDEFGHI_BCDEFGHI
  • 压缩后:ABCDEFGHI_(9,8)

1.3 关系模型/SQL查询

ClickHouse使用关系模型描述数据,并提供了传统数据库的概念

  • 数据库
  • 视图
  • 函数

ClickHouse完全使用SQL作为查询语言,支持Group By、Order By、Join、in等大部分标准SQL

1.4 多样化表引擎

ClickHouse提供多种多样的表引擎,每一种表引擎都有各自的特点,用户可根据实际业务场景的要求,选择合适的表引擎;

1.5 多主架构

ClickHouse采用Multi-Master多主架构,集群中的每个节点角色对等,客户端访问任意一个节点都能够有相同的效果;

1.6 数据分片/分布式

ClickHouse提供了本地表(Local Table)与分布式表(Distributed Table)的概念;

一张本地表就等同于一份数据的分片,而分布式表本身不存储数据,它是本地表的访问代理,其作用类似分库中间件,借助分布式表,能够代理访问多个数据分片,从而实现分布式查询;

架构设计

2.1 Cluster/Replication

ClickHouse的集群由分片Shard组成,而每个分片又通过副本Replica组成;

  • ClickHouse的1个节点只能拥有1个分片(如果要实现1分片、1副本,则至少需要2个服务节点)
  • 分片只是一个逻辑概念,其物理承载还是副本承担的;

2.2 向量化执行引擎

CPU的SIMD指令;SIMD Single Instruction Multiple Data,单条指令操作多条数据,对于不同数据可能存在相同操作,可以理解为并行操作;

举报

相关推荐

0 条评论