1. 项目目标
(1)了解ClickHouse特性与优势
(2)熟练掌握ClickHouse安装部署
(3)熟练掌握ClickHouse基本用法
2. 项目准备
2.1. 规划节点
|------------|-----------|------------|
| 主机名 | 主机IP | 节点规划 |
| clickhouse | 10.0.1.10 | clickhouse |
2.2. 基础准备
系统镜像:CentOS 7.9
官方网址: ClickHouse Docs
3. 项目实施
3.1. ClickHouse入门
ClickHouse官方简介:简介 | ClickHouse Docs
1)什么是ClickHouse
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。
在传统的行式数据库系统中,数据按列式顺序存储:
处于同一行中的数据总是被物理的存储在一起。
常见的行式数据库系统有:MySQL 、Postgres 和MS SQL Server。
在列式数据库系统中,数据按如下的顺序存储:
列式数据库更适合于OLAP场景(对于大多数查询而言,处理速度至少提高了100倍),下面详细解释了原因(通过图片更有利于直观理解):
详细内容参考:什么是ClickHouse?
2)ClickHouse优势
ClickHouse凭借极致的列存和向量化计算会有更加出色的并发表现,并且查询支持完备度也更好。ClickHouse的并发处理能力立足于磁盘吞吐,ClickHouse更加适合低成本、大数据量的分析场景,比如说数据报表。它能够充分利用磁盘的带宽能力。数据导入和存储成本上,ClickHouse具有绝对的优势。
3.2. 安装部署
1)添加官方存储库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
2)运行命令安装
sudo yum install -y clickhouse-server clickhouse-client
3)启动服务
sudo /etc/init.d/clickhouse-server start
4)客户端连接
clickhouse-client
5)验证
:) SELECT 1
SELECT 1
┌─1─┐
│ 1 │
└───┘
1 rows in set. Elapsed: 0.003 sec.
:)
部署成功了!
3.3. 基础使用教程
官方示例数据集:示例数据集 | ClickHouse Docs
阿里云SQL语句教程:SQL语句
1)创建数据库
语法:
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)]
ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')
**示例:**创建一个名为sqltest的库
CREATE DATABASE IF NOT EXISTS sqltest;
查看库:
show databases;
进入数据库:
use sqltest;
一般都使用自带引擎,也可以使用别的引擎,例如使用MySQL:
CREATE DATABASE mysql_db ENGINE = MySQL('10.0.1.10:3306', 'clickhouse', 'root', '000000');
2)创建表
与创建数据库相比,创建表的语法要复杂得多,一般CREATE TABLE声明必须指定三个关键的事情:
语法:
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [compression_codec] [TTL expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [compression_codec] [TTL expr2],
...
) ENGINE = engine
**示例:**创建一个表tabletest
第一个是name,第二个是type数据类型(ClickHouse数据类型)
CREATE TABLE tabletest(
yyyymmdd Int32,
name String,
shows Int64,
loads Int64,
click Int64,
request Int64
) engine=Memory;
查看表:
desc table tabletest;
3)插入数据
语法:
INSERT INTO [db.]table [(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v22, v23)
示例:
INSERT INTO tabletest VALUES(20240510,'tom',1,1,1,1),(20240510,'jack',2,2,2,2);
查看:
select * from tabletest
4)查询数据
语法:
SELECT [DISTINCT] expr_list
[FROM [db.]table | (subquery) | table_function] [FINAL]
[SAMPLE sample_coeff]
[ARRAY JOIN ...]
[GLOBAL] ANY|ALL INNER|LEFT JOIN (subquery)|table USING columns_list
[PREWHERE expr]
[WHERE expr]
[GROUP BY expr_list] [WITH TOTALS]
[HAVING expr]
[ORDER BY expr_list]
[LIMIT [n, ]m]
[UNION ALL ...]
[INTO OUTFILE filename]
[FORMAT format]
[LIMIT n BY columns]
**示例:**查询tabletest里 筛选shows展示大于1的
SELECT *
FROM tabletest
WHERE shows>1
更详细教程:使用SELECT语句查询数据
4. 项目总结
本博客简要介绍了ClickHouse的特性,部署,使用。适合初学者快速入门上手使用ClickHouse。