说明
本文使用Docker安装,要在Docker中运行ClickHouse,请遵循 Docker Hub上的指南。它是官方的deb安装包。
介绍
ClickHouse 是一个真正的列式数据库管理系统(DBMS)。在 ClickHouse 中,数据始终是按列存储的,包括矢量(向量或列块)执行的过程。只要有可能,操作都是基于矢量进行分派的,而不是单个的值,这被称为«矢量化查询执行»,它有利于降低实际的数据处理开销。
这个想法并不新鲜,其可以追溯到 APL 编程语言及其后代:A +、J、K 和 Q。矢量编程被大量用于科学数据处理中。即使在关系型数据库中,这个想法也不是什么新的东西:比如,矢量编程也被大量用于 Vectorwise 系统中。
通常有两种不同的加速查询处理的方法:矢量化查询执行和运行时代码生成。在后者中,动态地为每一类查询生成代码,消除了间接分派和动态分派。这两种方法中,并没有哪一种严格地比另一种好。运行时代码生成可以更好地将多个操作融合在一起,从而充分利用 CPU 执行单元和流水线。矢量化查询执行不是特别实用,因为它涉及必须写到缓存并读回的临时向量。如果 L2 缓存容纳不下临时数据,那么这将成为一个问题。但矢量化查询执行更容易利用 CPU 的 SIMD 功能。朋友写的一篇研究论文表明,将两种方法结合起来是更好的选择。ClickHouse 使用了矢量化查询执行,同时初步提供了有限的运行时动态代码生成。
1.部署 Clickhouse 服务
创建clickhouse 工作目录
1.1, pull 镜像
按照官方推荐的镜像拉取
docker pull yandex/clickhouse-server
查看镜像
1.2,docker-compose 启动镜像
新建 docker-comopose.yml 文件(配置如下)
version: "3.6"
services:
clickhouse-halobug:
container_name: clickhouse-halobug.cn
image: yandex/clickhouse-server:latest
restart: always
ports:
- "8123:8123"
- "9000:9000"
- "9009:9009"
networks:
- traefik
networks:
traefik:
external: true
1启动:docker-compose up -d
查看运行状态
浏览器访问 http://127.0.0.1:8123/
看到这里就启动成功啦,安装成功!
简单吧,简单继续~
==思考:如何修改clickhouse默认配置?数据如何持久化?如何查看日志?==
1.3 更改默认配置,数据持久化,查看日志
进入容器查看配置
docker exec -it clickhouse-halobug.cn(容器名称) /bin/bash
clickhouse 默认配置路径是: /etc/clickhouse-server/
退出容器,复制配置文件当前工作目录
1docker cp 容器名:/etc/clickhouse-server/config.xml .
2
3docker cp 容器名:/etc/clickhouse-server/uses.xml .
查看目录结构
修改docker-compose 配置文件
volumes:
# 默认配置 写入config.d/users.d 目录防止更新后文件丢失
- ./config.xml:/etc/clickhouse-server/config.d/config.xml:rw
- ./users.xml:/etc/clickhouse-server/users.xml:rw
# 运行日志
- ./logs:/var/log/clickhouse-server
# 数据持久
- ./data:/var/lib/clickhouse:rw
修改后的完整配置如下
version: "3.6"
services:
clickhouse-halobug:
container_name: clickhouse-halobug.cn
image: yandex/clickhouse-server:latest
restart: always
ports:
- "8123:8123"
- "9000:9000"
- "9009:9009"
networks:
- traefik
volumes:
# 默认配置 写入config.d/users.d 目录防止更新后文件丢失
- ./config.xml:/etc/clickhouse-server/config.d/config.xml:rw
- ./users.xml:/etc/clickhouse-server/users.xml:rw
# 运行日志
- ./logs:/var/log/clickhouse-server
# 数据持久
- ./data:/var/lib/clickhouse:rw
networks:
traefik:
external: true
重新启动服务
docker-compose down && docker-compose up -d
启动后目录结构
到此数据持久化,默认配置修改,日志映射完成!
验证
浏览器再次访问 http://127.0.0.1:8123/
查看容器日志
进入容器查看服务数据库
服务运行正常!
1.4,==创建用户登录== (后期使用)
查看users.xml文件
自定义用户
<halobug>
<password_sha256_hex>4754fc7e290a9c280d9497b2d76dd854e77f7e1c92476577fdb52ed22afc13e7</password_sha256_hex>
<networks incl="networks" replace="replace">
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
<allow_databases>
// 自定义对应数据库 tutorial 为测试库
<database>tutorial</database>
</allow_databases>
</halobug>
生成密码(进入容器运行)
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
黄色标注为自定义用户,红色为生成密码
验证用户密码,重新启动服务
# 重启
docker-compose down && docker-compose up -d
# 进入容器
docker exec -it clickhouse-halobug.cn /bin/bash
# 验证用户名密码
clickhouse-client -u halobug -h 127.0.0.1 --password qjLlan5A
查看验证结果
成功!到此服务就搭建完成!
1.5 数据导入测试
进入容器内测试
查看官方测试数据指导
导入成功后,查看数据验证
官方提供第三方开发的可视化界面
2.搭建tabix可视化操作
介绍
==需要VPN才能打开的安装 地址,使用镜像就别看这个了==
tabix ClickHouse Web 界面 Tabix.
主要功能:
浏览器直接连接 ClickHouse,不需要安装其他软件。
高亮语法的编辑器。
自动命令补全。
查询命令执行的图形分析工具。
配色方案选项。
2.1安装镜像
docker pull spoonest/clickhouse-tabix-web-client
2.2,创建工作目录&配置文件
创建tabix工作目录
新建docker-compose.yml(配置如下)
# docker-compose.yml
version: "3.6"
services:
clickhouse-halobug:
container_name: tabix-halobug.cn
image: spoonest/clickhouse-tabix-web-client
restart: always
expose:
- 80
networks:
- traefik
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik"
- "traefik.http.routers.tabix-test.entrypoints=https"
- "traefik.http.routers.tabix-test.rule=Host(`tabix.halobug.cn`)"
- "traefik.http.routers.tabix-test.tls=true"
- "traefik.http.services.tabix-test-backend.loadbalancer.server.scheme=http"
- "traefik.http.services.tabix-test-backend.loadbalancer.server.port=80"
logging:
driver: "json-file"
options:
max-size: "1m"
networks:
traefik:
external: true
启动服务
docker-compose down && docker-compose up -d
查看服务状态
hosts 绑定 :127.0.0.1 tabix.halobug.cn
浏览器访问:https://tabix.halobug.cn
安装成功!
2.2,登录Clickhouse
在1.4 创建的账号密码 此时就起到了作用
登录成功后可查看对应权限的数据库
可视化界面到此搭建完成~
3.测试使用
# 进入容器
docker exec -it clickhouse-halobug.cn /bin/bash
# 创建数据库
clickhouse-client --query "CREATE DATABASE IF NOT EXISTS test"
#使用用户名进入
clickhouse-client -u halobug -h 127.0.0.1 --password qjLlan5A
# 创建测试表
CREATE TABLE test.test_son
(
`id` Int64,
`name` String,
`title` String
) ENGINE = MergeTree ORDER BY id SETTINGS index_granularity = 8192
# 插入数据
INSERT INTO test.test_son VALUES ('1','Hello, world','标题测试'), ('2','Hello, world2','标题测试3')
修改users.xml对halobug 这个用户增加test数据库使用权限,如下图
重新启动服务
刷新 https://tabix.halobug.cn/ ,看到左侧导航的test数据库就是成功了!
程序如何使用?
参考官方 更多程序使用
本机 PHP 测试
#安装
composer require smi2/phpclickhouse
安装成功后
demo 使用
PHP版本:7.3.11
进入 vendor/smi2/phpclickhouse 创建 test.php (内容如下)
<?php
include_once __DIR__ . '/include.php';
$config = [
'host' => '127.0.0.1',
'port' => '8123',
'username' => 'halobug',
'password' => 'qjLlan5A'
];
$db = new ClickHouseDB\Client($config);
$db->database('test');
$db->setTimeout(1.5); // 1500 ms
$db->setTimeout(10); // 10 seconds
$db->setConnectTimeOut(5); // 5 seconds
$stat = $db->insert('test_son',
[
[1, 'HASH3','test'],
[2, 'HASH3_2','test'],
],
['id', 'name', 'title']
);
print_r($stat);
运行脚本测试,运行成功后使用 tabix 查看数据写入成功!
以上是 Clickhouse 单机部署&实践,想了解更多内容,就动手实践吧~