ClickHouse快速上手

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)。

在传统的行式数据库系统中,数据按列式顺序存储:

处于同一行中的数据总是被物理的存储在一起。

常见的行式数据库系统有:MySQLPostgresMS 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声明必须指定三个关键的事情:

  1. 要创建的表的名称。
  2. 表结构,例如:列名和对应的数据类型
  3. 表引擎及其设置,这决定了对此表的查询操作是如何在物理层面执行的所有细节。

语法:

复制代码
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。

相关推荐
新法国菜39 分钟前
MySql知识梳理之DML语句
数据库·mysql
老华带你飞1 小时前
校园交友|基于SprinBoot+vue的校园交友网站(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·校园交友网站
许泽宇的技术分享1 小时前
Text2API与Text2SQL深度对比:自然语言驱动的数据交互革命
数据库·windows·microsoft
两张不够花4 小时前
Shell脚本源码安装Redis、MySQL、Mongodb、PostgreSQL(无报错版)
linux·数据库·redis·mysql·mongodb·postgresql·云计算
Java 码农4 小时前
nodejs 集成mongodb实现增删改查
数据库·mongodb
少陵野小Tommy5 小时前
Python能用古诗词数据库做什么7:根据标题、诗句查找诗歌
开发语言·数据库·python
khystal6 小时前
HUMS 2023齿轮箱数据分析
数据库·数据分析·信号处理
Warren986 小时前
Spring Boot 整合网易163邮箱发送邮件实现找回密码功能
数据库·vue.js·spring boot·redis·后端·python·spring
追逐时光者7 小时前
推荐 4 个不错的数据库设计工具,效率提升利器!
数据库
.Shu.9 小时前
Mysql InnoDB 底层架构设计、功能、原理、源码系列合集【五、InnoDB 高阶机制与实战调优】
数据库·mysql