ClickHouse核心功能介绍

  • 完备的DBMS功能

    ClickHouse拥有完备的DBMS数据库管理系统(Database Management System),基本功能如下所示:

    DDL(数据定义语言):可以动态地创建、修改或删除数据库、表和视图,而无须重启服务。

    DML(数据操作语言):可以动态查询、插入、修改或删除数据。

    权限控制:可以按照用户粒度设置数据库或者表的操作权限,保障数据的安全性。

    数据备份与恢复:提供了数据备份导出与导入恢复机制,满足生产环境的要求。

    分布式管理:提供集群模式,能够自动管理多个数据库节点。

    ClickHouse拥有完备的DBMS数据库管理系统(Database Management System),基本功能如下所示:

    DDL(数据定义语言):可以动态地创建、修改或删除数据库、表和视图,而无须重启服务。

    DML(数据操作语言):可以动态查询、插入、修改或删除数据。

    权限控制:可以按照用户粒度设置数据库或者表的操作权限,保障数据的安全性。

    数据备份与恢复:提供了数据备份导出与导入恢复机制,满足生产环境的要求。

    分布式管理:提供集群模式,能够自动管理多个数据库节点。

  • 列式存储与数据压缩

    ClickHouse是一款使用列式存储的数据库,数据按列进行组织,属于同一列的数据会被保存在一起,列与列之间也会由不同的文件分别保存。

    在执行数据查询时,列式存储可以减少数据扫描范围和数据传输时的大小,提高了数据查询的效率。

    ClickHouse是一款使用列式存储的数据库,数据按列进行组织,属于同一列的数据会被保存在一起,列与列之间也会由不同的文件分别保存。

    在执行数据查询时,列式存储可以减少数据扫描范围和数据传输时的大小,提高了数据查询的效率。

  • 向量化执行引擎

    ClickHouse利用CPU的SIMD指令实现了向量化执行。SIMD的全称是Single Instruction Multiple Data,即用单条指令操作多条数据,通过数据并行以提高性能的一种实现方式 ( 其他的还有指令级并行和线程级并行 ),它的原理是在CPU寄存器层面实现数据的并行操作。

    ClickHouse利用CPU的SIMD指令实现了向量化执行。SIMD的全称是Single Instruction Multiple Data,即用单条指令操作多条数据,通过数据并行以提高性能的一种实现方式 ( 其他的还有指令级并行和线程级并行 ),它的原理是在CPU寄存器层面实现数据的并行操作。

  • 关系模型与SQL查询

    ClickHouse完全使用SQL作为查询语言,提供了标准协议的SQL查询接口,使得现有的第三方分析可视化系统可以轻松与它集成对接。

    同时ClickHouse使用了关系模型,所以将构建在传统关系型数据库或数据仓库之上的系统迁移到ClickHouse的成本会变得更低。

    ClickHouse完全使用SQL作为查询语言,提供了标准协议的SQL查询接口,使得现有的第三方分析可视化系统可以轻松与它集成对接。

    同时ClickHouse使用了关系模型,所以将构建在传统关系型数据库或数据仓库之上的系统迁移到ClickHouse的成本会变得更低。

  • 数据分片与分布式查询

    ClickHouse集群由一到多个分片组成,而每个分片则对应了ClickHouse的一个服务节点。分片的数量上限取决于节点数量(一个分片只能对应一个服务节点)。

    ClickHouse提供了本地表 (Local Table)与分布式表 (Distributed Table)的概念。一张本地表等同于一份数据的分片。而分布式表本身不存储任何数据,它是本地表的访问代理,其作用类似分库中间件。借助分布式表,能够代理访问多个数据分片,从而实现分布式查询。

    ClickHouse集群由一到多个分片组成,而每个分片则对应了ClickHouse的一个服务节点。分片的数量上限取决于节点数量(一个分片只能对应一个服务节点)。

    ClickHouse提供了本地表 (Local Table)与分布式表 (Distributed Table)的概念。一张本地表等同于一份数据的分片。而分布式表本身不存储任何数据,它是本地表的访问代理,其作用类似分库中间件。借助分布式表,能够代理访问多个数据分片,从而实现分布式查询。

ClickHouse应用场景

ClickHouse适合对结构定义良好并且不可变的事件/日志流进行分析。

  • 适用场景

    1、网络/APP流量分析

    2、用户行为记录分析

    3、人群预估、人群画像

    4、商业智能(BI)

    5、监控系统

    6、大宽表,单表聚合查询

    1、网络/APP流量分析

    2、用户行为记录分析

    3、人群预估、人群画像

    4、商业智能(BI)

    5、监控系统

    6、大宽表,单表聚合查询

  • 不适用场景

    1、OLTP

    2、key-value高频访问

    3、文档存储

    4、非结构化数据

    5、稀疏索引使得不适合通过其键检索单行的点查询

    6、不适合频繁更新和删除的场景

    1、OLTP

    2、key-value高频访问

    3、文档存储

    4、非结构化数据

    5、稀疏索引使得不适合通过其键检索单行的点查询

    6、不适合频繁更新和删除的场景

ClickHouse开源增强特性

MRS ClickHouse具备集群模式升级、平滑弹性扩容、高可用HA部署等优势能力,相关介绍如下:

1、集群模式升级

如下图所示,多个ClickHouse节点组成的集群,没有中心节点,更多的是一个静态资源池的概念,业务要使用ClickHouse集群模式,需要预先在各个节点的配置文件中定义cluster信息,等所有参与的节点达成共识,业务才可以正确的交互访问,也就是说配置文件中的cluster才是通常理解的“集群”概念。

常见的数据库系统,隐藏了表级以下的数据分区、副本存储等细节,用户是无感知的,而ClickHouse则要求用户主动来规划和定义数据分片(shard)、分区(partition)、副本(replica)位置等详细配置。它的这种类似“手动挡”的属性,给用户带来极不友好的体验,所以MRS服务的ClickHouse实例对这些工作做了统一的打包处理,适配成了“自动挡”,实现了统一管理,灵活易用。具体部署形态上,一个ClickHouse实例将包含3个Zookeeper节点和多个ClickHouse节点,采用Dedicated Replica模式,数据双副本高可靠。

2、平滑的弹性扩容能力

随着业务的快速增长,面对集群存储容量或者CPU计算资源接近极限等场景,MRS服务提供了ClickHouse数据迁移工具,该工具可以将某几个ClickHouseServer实例节点上的一个或多个MergeTree引擎分区表的部分分区迁移至其他ClickHouseServer节点上相同的表中,以便保障业务可用性,实现了更加平滑的扩容能力。

在用户对集群进行扩容ClickHouse节点时,可以使用该工具将原节点上的部分数据迁移至新增节点上,从而达到扩容后的数据均衡。

3、高可用HA部署架构

MRS服务提供了基于ELB(Elastic Load Balance)的HA部署架构,可以将用户访问流量自动分发到多台后端节点,扩展系统对外的服务能力,实现更高水平的应用容错。如下图所示,客户端应用请求集群时,使用ELB来进行流量分发,通过ELB的轮询机制,写不同节点上的本地表,读不同节点上的分布式表,这样,无论集群写入的负载、读的负载以及应用接入的高可用性都具备了有力的保障。

ClickHouse集群发放成功后,每个ClickHouse实例节点对应一个副本replica,两个副本组成一个shard逻辑分片。