ClickHouse 笔记1 | 简介、特点 | 基于CentOS7系统的安装与使用 | 常用数据类型 | MergeTree 表引擎 | SQL操作

一、ClickHouse 简介


ClickHouse 是 俄罗斯的 Yandex 公司于2016年开源的 列式存储数据库(DBMS),使用 C++语言 编写,主要用于在线分析处理查询(OLAP),能够使用 SQL 查询实时生成分析数据报告。

二、ClickHouse 特点


2.1 采用列式存储

2.2 属于数据库管理系统(DBMS )

支持标准 SQL 的大部分语法,包括 DDL 数据定义 和 DML 数据操纵,以及相关函数,用户管理以及权限管理,数据备份与恢复

2.3 多样化引擎

和 MySQL 类似,把表级的存储引擎插件化,根据表的不同需求可设置不同的存储引擎,目前有合并树、日志、接口和其他四大类的二十多种引擎。

2.4 高吞吐写数据

ClickHouse 采用类 日志结构合并树 LSM Tree(Log-Structured-Merge-Tree),数据写入后,定期在后台进行压缩(Compaction)

通过类 LSM Tree 的存储结构,ClickHouse 写数据是以追加(append)的方式,且写入后数据段不可更改。

在后台执行压缩(Compaction)时是多个段 归并(Merge)、排序(Sort)后按顺序写回磁盘。

顺序写的特性:有效利用磁盘的吞吐能力

2.5 数据分区与线程级并行

ClickHouse 将数据划分为多个 partition(分区),每个 partition 再划分为多个 index granularity(索引粒度),然后通过多个 CPU 核心分别处理其中的一部分,从而实现并行的数据处理

特点:单条 Query 查询语句就能利用整机的所有 CPU,并行处理降低了查询的延时。

不过这种并行方式使得 不便同时并发多条查询,,ClickHouse 并不擅长处理高qps( 每秒查询率 = 并发数/平均响应时间)的查询业务

三、Centos 下使用安装 ClickHouse


ClickHouse 可以在任何具有 x86_64、AArch64 或 PowerPC64LE CPU 架构的 Linux、FreeBSD 或 Mac OS X 上运行。
官方文档 快速入门:https://clickhouse.com/docs/en/quick-start/

3.1 安装 clickhouse

3.1.1 方式一:使用 yum 安装

ClickHouse官网:Fast Open-Source OLAP DBMS - ClickHouse
下载地址:https://packages.clickhouse.com/rpm/stable/

  • clickhouse-common-static — ClickHouse编译的二进制文件。
  • clickhouse-server — 创建clickhouse-server软连接,并安装默认配置服务
  • clickhouse-client — 创建clickhouse-client客户端工具软连接,并安装客户端配置文件。
  • clickhouse-common-static-dbg — 带有调试信息的ClickHouse二进制文件。

添加官方的库:

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo

下载

sudo yum install -y clickhouse-server clickhouse-client

在这里插入图片描述

3.2.2 方式二:使用 Docker 拉取镜像

我这里的 Docker 是本机虚拟机里配置的 Docker

# 启动 docker
sudo systemctl start docker

# 创建容器
sudo docker run --name c1 -d -it -p 8181:8181 clickhouse/clickhouse-server

查看容器 IP

docker inspect -f '{
   {
   range .NetworkSettings.Networks}}{
   {
   .IPAddress}}{
   {
   end}}' c1

在这里插入图片描述

设置宿主机到虚拟机里Docker容器的端口映射,保证能ping通,这里可参考:
https://blog.csdn.net/Unirithe/article/details/120711045
在这里插入图片描述

使用 Docker 的话就无需配置和启动了,只要容器在运行,ClickHouse 服务就默认启动了,比如访问:http://172.17.0.2:8123/,会有一个 Ok.的结果
在这里插入图片描述

3.2 配置 ClickHouse

Click House 官方默认是关闭外部连接的,需手动配置

sudo vim /etc/clickhouse-server/config.xml

# 在 vim 查询 <lisen_host>::</listen_host>
/<listen_host>::</listen_host>

把 <listen_host>::</listen_host> 的注释打开后保存
在这里插入图片描述

除了打开 <listen_host> 配置,我们需要了解其默认配置的数据文件和日志文件的存储路径,也可以根据自己需要修改默认的位置。

  • 默认数据文件配置 /var/lib/clickhouse/
  • 日志文件配置 /var/log/clickhouse-server/clickhouse-server.log

3.3 启动 Click House

查看 clickhouse-server 的安装目录

rpm -ql clickhouse-server.x86_64

启动 clickhouse

sudo /etc/init.d/clickhouse-server start

3.4 测试连接

在之前的依赖包中,我们同时也安装了 Click House 的客户端,接下来使用客户端的命令连接启动的服务端,查看一下是否能正常连接,如果是通过方式一安装的 clickhouse(都安装在Linux),则执行

clickhouse-client -m

如果是通过 Docker 安装的,这里我采用的是 Docker放 Click House 服务端,而 Docker宿主机就放 Click Client 客户端进行连接,则执行下面命令,指定容器的IP即可:

clickhouse-client -h 172.17.0.2 -m

在这里插入图片描述

测试命令,查询所有的数据库:

:) show databases

方式一安装下测试成功的结果如下图:
在这里插入图片描述

四、数据类型


官方文档:https://clickhouse.com/docs/en/sql-reference/data-types/

4.1 整型

固定长度,分为有符号和无符号

有符号整型

取值范围:[ − 2 n -2^n 2n ~ 2 n − 1 − 1 2^{n-1} - 1 2n11]

类型 数据范围
Int8 -128 ~ 127
Int16 -32768 ~ 32767
Int32 -2147483648 ~ 2147483647
int64 -9223372036854775808~9223372036854775807

无符号整型

取值范围:[ 0 0 0~ 2 n − 1 2^n - 1 2n1]

类型 数据范围
UInt8 0~255
UInt16 0~65535
UInt32 0 ~ 4294967295
Uint64 0 ~18446744073709551615

使用场景:记录个数、数量、存储型 id 等

4.2 浮点型

浮点型有 Float32 和 Float64 两种,类似 Java 里的 float 和 double

建议:尽量用整数存储数据,例,将固定精度的数字转为整数值,如时间用毫秒为单位表示,因为浮点型计算可能会出现误差,例如在 ClickHouse中计算 1.0 - 0.9 ,结果是 0.0999… 趋近于0.1, 而不是 0.1
在这里插入图片描述

使用场景:数据值较小,不涉及大量统计计算,且精度要求不高时,如保存商品的重量。

4.3 无布尔型

Click House 没有提供 bool 类型 ,一般可使用 UInt8 类型来表示, 取值限制为 0 或1 即可

4.4 Decimal 类型

Decimal 为有符号的浮点数,在加减乘运算中保持精度,而在触发中,最低有效数字会被舍去。
声明:

  • Decimal32(s),相当于 Decimal(9-s, s) ,小数有效位在 1 ~ 9 之间
  • Decimal64(s),相当于 Decimal(18-s, s) ,小数有效位在 1 ~18 之间
  • Decimal128(s),相当于 Decimal(38-s, s)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值