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。

相关推荐
码农君莫笑1 小时前
加密 SQLite 数据库管理研究
数据库·sql·sqlite
鸿永与1 小时前
『SQLite』约束怎么用
数据库·sqlite
liuzhilongDBA1 小时前
pg数据库运维经验2024
运维·数据库
背太阳的牧羊人2 小时前
使用 SQLite3 的基本操作步骤
数据库·sqlite
从后端到QT2 小时前
Android NDK开发入门2之适应idm环境
前端·javascript·数据库
背太阳的牧羊人2 小时前
使用 SQL 和表格数据进行问答和 RAG(6)—将指定目录下的 CSV 或 Excel 文件导入 SQLite 数据库
数据库·sql·langchain·sqlite·excel
唐梓航-求职中3 小时前
缓存-Redis-常见问题-缓存击穿-永不过期+逻辑过期(全面 易理解)
数据库·redis·缓存
潜洋3 小时前
Spring Boot教程之五十二:CrudRepository 和 JpaRepository 之间的区别
java·大数据·数据库·spring boot
潘多编程3 小时前
Spring Boot微服务中进行数据库连接池的优化?
数据库·spring boot·微服务
对自己不够狠3 小时前
ClickHouse 教程
clickhouse