联机分析列式数据库管理系统ClickHouse

举报
tea_year 发表于 2025/09/17 11:51:26 2025/09/17
【摘要】 一、什么是ClickHouseClickHouse是一个开源的,用于联机分析(OLAP)的列式数据库管理系统(DBMS-database manager system), 它是面向列的,并允许使用SQL查询,实时生成分析报告。ClickHouse最初是一款名为Yandex.Metrica的产品,主要用于WEB流量分析。ClickHouse的全称是Click Stream,Data WareH...

一、什么是ClickHouse

ClickHouse是一个开源的,用于联机分析(OLAP)的列式数据库管理系统(DBMS-database manager system), 它是面向列的,并允许使用SQL查询,实时生成分析报告。ClickHouse最初是一款名为Yandex.Metrica的产品,主要用于WEB流量分析。ClickHouse的全称是Click Stream,Data WareHouse,简称ClickHouse。

OLAP场景的特征

  • 绝大多数是读请求。

  • 数据以相当大的批次(> 1000行)更新,而不是单行更新;或者根本没有更新。

  • 已添加到数据库的数据不能修改。

  • 对于读取,从数据库中提取相当多的行,但只提取列的一小部分。

  • 宽表,即每个表包含着大量的列。

  • 查询相对较少(通常每台服务器每秒查询数百次或更少)。

  • 处理单个查询时需要高吞吐量(每台服务器每秒可达数十亿行)。

  • 事务不是必须的。

  • 对数据一致性要求低。有副本情况下,写入一个即可,后台自动同步。

  • 每个查询有一个大表。除了他以外,其他的都很小。

  • 查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果适合于单个服务器的RAM中。


ClickHouse特性

1)、完备的DBMS功能

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

  • DML(Data Manipulation Language):可以动态查询、插入、修改或删除数据。

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

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

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


2)、列式存储


image-20230605221343278.png



  • 行式存储在数据写入和修改上具有优势。

行存储的写入是一次完成的,如果这种写入建立在操作系统的文件系统上,可以保证写入过程的成功或者失败,可以保证数据的完整性。列式存储需要把一行记录拆分成单列保存,写入次数明显比行存储多(因为磁头调度次数多,而磁头调度是需要时间的,一般在1ms~10ms),再加上磁头需要在盘片上移动和定位花费的时间,实际消耗更大。

数据修改实际上也是一次写入过程,不同的是,数据修改是对磁盘上的记录做删除标记。行存储是在指定位置写入一次,列存储是将磁盘定位到多个列上分别写入,这个过程仍是行存储的列数倍。

所以,行式存储在数据写入和修改上具有很大优势。

  • 列式存储在数据读取和解析、分析数据上具有优势。

数据读取时,行存储通常将一行数据完全读出,如果只需要其中几列数据的情况,就会存在冗余列,出于缩短处理时间的考量,消除冗余列的过程通常是在内存中进行的。列存储每次读取的数据是集合的一段或者全部,不存在冗余性问题。

列式存储中的每一列数据类型是相同的,不存在二义性问题,例如,某列类型为整型int,那么它的数据集合一定是整型数据,这种情况使数据解析变得十分容易。相比之下,行存储则要复杂得多,因为在一行记录中保存了多种类型的数据,数据解析需要在多种数据类型之间频繁转换,这个操作很消耗CPU,增加了解析的时间。

所以,列式存储在数据读取和解析数据做数据分析上更具优势。

综上所述,行存储的写入是一次性完成,消耗的时间比列存储少,并且能够保证数据的完整性,缺点是数据读取过程中会产生冗余数据,如果只有少量数据,此影响可以忽略,数量大可能会影响到数据的处理效率。列存储在写入效率、保证数据完整性上都不如行存储,它的优势是在读取过程,不会产生冗余数据,这对数据完整性要求不高的大数据处理领域比较重要。一般来说一个OLAP类型的查询可能需要访问几百万或者几十亿行的数据,但是OLAP分析时只是获取少数的列,对于这种场景列式数据库只需要读取对应的列即可,行式数据库需要读取所有的数据列,因此这种场景更适合列式数据库,可以大大提高OLAP数据分析的效率。ClickHouse就是一款使用列式存储的数据库,数据按列进行组织,属于同一列的数据会被保存在一起,列与列之间也会由不同的文件分别保存,在对OLAP场景分析时,效率很高。



二、ClickHouse安装


sudo yum install yum-utils
sudo rpm --import https://repo.clickhouse.com/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.clickhouse.com/rpm/stable/x86_64
sudo yum install clickhouse-server clickhouse-client -y

修改配置文件/etc/clickhouse-server/
config.xml 去掉下面代码注释 <listen_host>0.0.0.0</listen_host>
users.xml  增加密码<password>123456</password>

[root@hadoop10 clickhouse-server]# systemctl start clickhouse-server
[root@hadoop10 clickhouse-server]# systemctl status clickhouse-server

[root@hadoop10 clickhouse-server]# clickhouse-client -h hadoop10 --port 9000 --password 123456
ClickHouse client version 22.2.2.1.
Connecting to hadoop10:9000 as user default.
Connected to ClickHouse server version 22.2.2 revision 54455.

hadoop10 :)


netstat -nltp 查看ck启动的端口


image-20230605222526871.png

image-20230605222531159.png



安装完成之后会生成如下对应的目录,每个目录的介绍如下:

  • /etc/clickhouse-server : 服务端的配置文件目录,包括全局配置config.xml和用户配置users.xml。

  • /var/lib/clickhouse : 默认的数据存储目录,通常会修改,将数据保存到大容量磁盘路径中。

  • /var/log/cilckhouse-server : 默认保存日志的目录,通常会修改,将数据保存到大容量磁盘路径中。

  • 在/usr/bin下会有可执行文件:

    clickhouse:主程序可执行文件

    clickhouse-server:一个指向clickhouse可执行文件的软连接,供服务端启动使用。

    clickhouse-client:一个指向clickhouse可执行文件的软连接,供客户端启动使用。

三、客户端命令行参数

我们可以通过clickhouse client来连接启动的clickhouse服务,连接服务时,我们可以指定以下参数,这里指定的参数会覆盖默认值和配置文件中的配置。

参数 解释
--host, -h 服务端的host名称, 默认是localhost。您可以选择使用host名称或者IPv4或IPv6地址。
--port 连接的端口,默认值:9000。注意HTTP接口以及TCP原生接口使用的是不同端口。
--user, -u 用户名。 默认值:default。
--password 密码。 默认值:空字符串。
--query,-q 使用非交互模式查询。
--database, -d 默认当前操作的数据库. 默认值:服务端默认的配置(默认是default)。
--multiline, -m 如果指定,允许多行语句查询(Enter仅代表换行,不代表查询语句完结)。
#hive -e "sql"
clickhouse-client -q "show databases" -h hadoop10 --password 123456
clickhouse-client -d "system" -q "show tables"
clickhouse-client -h hadoop10 --port 9000 --password 123456 -m

四、安装的图形化操作图示


image-20230605232012584.png

image-20230605232017337.png

image-20230605232025011.png

image-20230605232032368.png


五、总结

ClickHouse 是 Yandex 开源的列式 OLAP 数据库,专为 Web 流量分析等场景设计,支持 SQL 实时生成分析报告。其适配 OLAP 特征:以读请求为主,数据批量更新、不可修改,查询高吞吐量且结果小于源数据,事务非必需。

核心优势在列式存储:虽写入 / 修改效率不及行存储,但读取时无冗余列、数据类型统一,解析快,大幅提升海量数据分析效率。具备完备 DBMS 功能,含 DDL/DML、分布式管理、权限控制及备份恢复。

安装通过 Yum 完成,需配置服务端监听地址与密码,默认生成配置、数据、日志目录,可按需迁移至大容量磁盘。客户端通过clickhouse-client连接,支持指定主机、端口、用户等参数,非交互模式可直接执行查询,满足多样使用场景 。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。