写点什么

云小课|MRS 基础原理之 ClickHouse 组件介绍

发布于: 1 小时前


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


​​​​​​​​​​​​​​​​​​​​​​​​​摘要:在 2016 年开源的高性能、开源联机分析列式数据库管理系统。其数据压缩比高,基于多核并行计算、向量化执行与 SIMD,在性能上表现卓越。当前 ClickHouse 被广泛的应用于互联网广告、App 和 Web 流量、电信、金融、物联网等众多领域,非常适用于商业智能化应用场景,在国内外有大量的应用和实践。


本文分享自华为云社区《使用scipy.linalg在Python中使用线性系统》,作者: Hi,EI。


ClickHouse 是一款开源的面向联机分析处理的列式数据库,其独立于 Hadoop 大数据体系,最核心的特点是极致压缩率和极速查询性能。同时,ClickHouse 支持 SQL 查询,且查询性能好,特别是基于大宽表的聚合分析查询性能非常优异,比其他分析型数据库速度快一个数量级。当前 ClickHouse 被广泛的应用于互联网广告、App 和 Web 流量、电信、金融、物联网等众多领域,非常适用于商业智能化应用场景,在国内外有大量的应用和实践。


ClickHouse 关键特性介绍


  • 完备的 DBMS 功能


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


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

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

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

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

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


  • 列式存储与数据压缩


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


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


  • 向量化执行引擎


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


  • 副本机制


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



副本机制功能优势如下:


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


副本机制是实现高可用、负载均衡、迁移/升级功能的基础。


系统会监视副本数据的同步情况,识别故障节点,并在节点恢复正常时进行故障恢复,保证服务整体高可用。


  • 数据分片与分布式查询


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


分片机制:用来解决单节点的性能瓶颈,通过将数据进行水平切分,将一张表中的数据拆分到多个节点,不同节点之间的数据没有重复,这样就可以通过增加分片对 ClickHouse 进行线性扩展。


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


如下图所示,在查询时,我们需要查询分布式表 table_distributed,分布式表会将查询请求自动路由到各个分片节点上,并进行结果的汇聚。



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

操作前准备


  • 已创建 ClickHouse 集群。

  • 已安装 ClickHouse 客户端。

ClickHouse 客户端使用


1. 以客户端安装用户,登录安装客户端的节点。

2. 执行以下命令,切换到客户端安装目录。以下目录为举例,具体客户端路径请以实际安装路径为准。

cd /opt/Bigdata/client

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

source bigdata_env

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

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

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


ClickHouse 数据库基本操作


  • 创建数据库:

基本语法

CREATE DATABASE [IFNOT 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 ASSELECT ...

使用示例


  • 插入表数据:

基本语法

方法一:标准格式插入数据。

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] [STEPexpr]

[LIMIT [offset_value,]n BY columns]

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

[UNION ALL ...]

[INTO OUTFILEfilename]

[FORMAT format]

使用示例


  • 修改表结构:

基本语法

ALTER TABLE [database_name].name [ONCLUSTER clusterADD|DROP|CLEAR|COMMENT|MODIFYCOLUMN ...

ALTER 仅支持 *MergeTree ,Merge 以及 Distributed 等引擎表。

使用示例


  • 显示数据库和表信息

基本语法

show databases

show tables

使用示例


  • 查询表结构

基本语法

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

使用示例


  • 删除表

基本语法

DROP [TEMPORARYTABLE [IFEXISTS] [database_name.]name [ON CLUSTER cluster]

使用示例


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


点击关注,第一时间了解华为云新鲜技术~

发布于: 1 小时前阅读数: 2
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
云小课|MRS基础原理之ClickHouse组件介绍