关于clickhouse:云小课|MRS基础原理之ClickHouse组件介绍

3次阅读

共计 3749 个字符,预计需要花费 10 分钟才能阅读完成。


阅识风波是华为云信息大咖,善于将简单信息多元化出现,其出品的一张图 (云图说)、深入浅出的博文(云小课) 或短视频 (云视厅) 总有一款能让您疾速上手华为云。更多精彩内容请单击此处。

摘要:在 2016 年开源的高性能、开源联机剖析列式数据库管理系统。其数据压缩比高,基于多核并行计算、向量化执行与 SIMD,在性能上体现卓越。以后 ClickHouse 被宽泛的利用于互联网广告、App 和 Web 流量、电信、金融、物联网等泛滥畛域,十分实用于商业智能化利用场景,在国内外有大量的利用和实际。

本文分享自华为云社区《【云小课】EI 第 22 课 MRS 根底原理之 ClickHouse 组件介绍》,作者:阅识风波

ClickHouse 是一款开源的面向联机剖析解决的列式数据库,其独立于 Hadoop 大数据体系,最外围的特点是极致压缩率和极速查问性能。同时,ClickHouse 反对 SQL 查问,且查问性能好,特地是基于大宽表的聚合剖析查问性能十分优异,比其余剖析型数据库速度快一个数量级。以后 ClickHouse 被宽泛的利用于互联网广告、App 和 Web 流量、电信、金融、物联网等泛滥畛域,十分实用于商业智能化利用场景,在国内外有大量的利用和实际。

ClickHouse 要害个性介绍

齐备的 DBMS 性能

ClickHouse 领有齐备的数据库治理性能,具备一个 DBMS(Database Management System,数据库管理系统)根本的性能,如下所示:

DDL(数据定义语言):能够动静地创立、批改或删除数据库、表和视图,而无须重启服务。

DML(数据操作语言):能够动静查问、插入、批改或删除数据。

权限管制:能够依照用户粒度设置数据库或者表的操作权限,保障数据的安全性。

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

分布式治理:提供集群模式,可能主动治理多个数据库节点。

列式存储与数据压缩

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

在执行数据查问时,列式存储能够缩小数据扫描范畴和数据传输时的大小,进步了数据查问的效率。

向量化执行引擎

ClickHouse 利用 CPU 的 SIMD 指令实现了向量化执行。SIMD 的全称是 Single Instruction Multiple Data,即用单条指令操作多条数据,通过数据并行以进步性能的一种实现形式 (其余的还有指令级并行和线程级并行),它的原理是在 CPU 寄存器层面实现数据的并行操作,相比同类 OLAP 产品执行效率更高。

正本机制

ClickHouse 利用 ZooKeeper,通过 ReplicatedMergeTree 引擎(Replicated 系列引擎)实现了正本机制。正本机制是多主架构,能够将 INSERT 语句发送给任意一个正本,其余正本会进行数据的异步复制。

正本机制性能劣势如下:

ClickHouse 正本机制的设计能够最大限度的缩小网络数据传输,用以在不同的数据中心进行同步,能够用来建设多数据中心、异地多活的集群架构。

正本机制是实现高可用、负载平衡、迁徙 / 降级性能的根底。

零碎会监督正本数据的同步状况,辨认故障节点,并在节点恢复正常时进行故障复原,保障服务整体高可用。

数据分片与分布式查问

ClickHouse 通过分片和分布式表机制提供了线性扩大的能力。

分片机制:用来解决单节点的性能瓶颈,通过将数据进行程度切分,将一张表中的数据拆分到多个节点,不同节点之间的数据没有反复,这样就能够通过减少分片对 ClickHouse 进行线性扩大。

分布式表:在查问分片的数据时,通过分布式表进行查问,分布式表引擎本身不存储任何数据,仅是一层代理,可能主动路由到集群中的各个分片节点获取数据,即分布式表须要和其余数据表一起协同工作。

如下图所示,在查问时,咱们须要查问分布式表 table_distributed,分布式表会将查问申请主动路由到各个分片节点上,并进行后果的汇聚。

讲了这么多,具体怎么应用 ClickHouse 呢?别急,以下通过 ClickHouse 客户端应用和数据库基本操作带你疾速上手。

操作前筹备

  • 已创立 ClickHouse 集群。
  • 已装置 ClickHouse 客户端。

ClickHouse 客户端应用

以客户端装置用户,登录装置客户端的节点。

  1. 执行以下命令,切换到客户端装置目录。以下目录为举例,具体客户端门路请以理论装置门路为准。

cd /opt/Bigdata/client

  1. 执行以下命令配置环境变量。

source bigdata_env

4. 执行 ClickHouse 组件的客户端命令。

clickhouse client –host ClickHouse的实例 IP –user 登录名 –-password 明码 –-port ClickHouse的端口号

clickhouse client 命令行参数阐明如下表所示:

ClickHouse 数据库基本操作

创立数据库:

根本语法

CREATE DATABASE [IF NOT EXISTS] database_name

应用示例

创立表:

根本语法

办法一:在指定的“database_name”数据库中创立一个名为“table_name”的表。

如果建表语句中没有蕴含“database_name”,则默认应用客户端登录时抉择的数据库作为 database_name”。

CREATE TABLE [IF NOT EXISTS] [database_name.]table_name [ON CLUSTER Cluster 名]

(

name1 [type1] [DEFAULT|materialized|ALIAS expr1],

name2 [type2] [DEFAULT|materialized|ALIAS expr2],

) ENGINE = engine

办法二:创立一个与 table_name2 具备雷同构造的表,同时能够对其指定不同的表引擎申明。

如果没有表引擎申明,则创立的表将与 database_name2.table_name2 应用雷同的表引擎。

CREATE TABLE [IF NOT EXISTS] [database_name.]table_name AS [database_name2.]table_name2 [ENGINE = engine]

办法三:应用指定的引擎创立一个与 SELECT 子句的后果具备雷同构造的表,并应用 SELECT 子句的后果填充它。

CREATE TABLE [IF NOT EXISTS] [database_name.]table_name ENGINE = engine AS SELECT …

应用示例

插入表数据:

根本语法

办法一:规范格局插入数据。

INSERT INTO [database_name.]table [(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v22, v23), …

办法二:应用 SELECT 的后果写入。

INSERT INTO [database_name.]table [(c1, c2, c3)] SELECT …

应用示例

查问表数据:

根本语法

SELECT [DISTINCT] expr_list

[FROM [database_name.]table | (subquery) | table_function] [FINAL]

[SAMPLE sample_coeff]

[ARRAY JOIN …]

[GLOBAL] [ANY|ALL|ASOF] [INNER|LEFT|RIGHT|FULL|CROSS] [OUTER|SEMI|ANTI] JOIN (subquery)|table (ON <expr_list>)|(USING <column_list>)

[PREWHERE expr]

[WHERE expr]

[GROUP BY expr_list] [WITH TOTALS]

[HAVING expr]

[ORDER BY expr_list] [WITH FILL] [FROM expr] [TO expr] [STEP expr]

[LIMIT [offset_value,]n BY columns]

[LIMIT [n,]m] [WITH TIES]

[UNION ALL …]

[INTO OUTFILE filename]

[FORMAT format]

应用示例

批改表构造:

根本语法

ALTER TABLE [database_name].name [ON CLUSTER cluster] ADD|DROP|CLEAR|COMMENT|MODIFY COLUMN …

ALTER 仅反对 *MergeTree,Merge 以及 Distributed 等引擎表。

应用示例

显示数据库和表信息

根本语法

show databases

show tables

应用示例

查问表构造

根本语法

DESC|DESCRIBE TABLE [database_name.]table [INTO OUTFILE filename] [FORMAT format]

应用示例

删除表:

根本语法

DROP [TEMPORARY] TABLE [IF EXISTS] [database_name.]name [ON CLUSTER cluster]

应用示例

好了,本期云小课就介绍到这里,快去体验 MapReduce(MRS)更多功能吧!猛戳这里

点击关注,第一工夫理解华为云陈腐技术~

正文完
 0