前言
我是在17年就听说过Clickhouse,那时还未接触过亿数据的运算,那时我在的小公司对于千万数据的解决方案还停留在分库分表,最好的也是使用mycat做的集群。
这些解决方案都比较复杂,毕竟通常来说那些需要大量存储的数据基本都是像日志,流水等不需要修改的数据,像客户人员等需要经常维护的信息一般项目也就几万左右,在这些不是非常重要的数据上耗太多时间我个人是觉得有点浪费(但毕竟还是要的嘛),直到我到了新公司才重新拾起了对Clickhouse的学习,下面主要介绍下安装以及下篇会介绍一些简单的用法。
一、ClickHouse简介
文档地址:https://clickhouse.yandex/docs/zh/
CH是由俄罗斯“熊哥”开源的一套用于联机分析(OLAP)的列式数据库管理系统(DBMS),它通过针对性的设计,力图解决海量多维度数据的查询性能问题。
小白程序员轻松上手,安装和操作就像mysql一样简单。
适用于:
- 大多数是读请求
- 每次写入大于1000行的数据(不适用于单条插入)
- 不修改已添加的数据
- 每次查询都从数据库中读取大量的行,但是同时又仅需要少量的列
- 宽表,即每个表包含着大量的列
- 较少的查询(通常每台服务器每秒数百个查询或更少)
- 对于简单查询,允许延迟大约50毫秒
- 列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节)
- 处理单个查询时需要高吞吐量(每个服务器每秒高达数十亿行)
- 事务不是必须的
- 对数据一致性要求低
- 每一个查询除了一个大表外都很小
- 查询结果明显小于源数据,换句话说,数据被过滤或聚合后能够被盛放在单台服务器的内存中
应用场景
- 公交轨迹(我自己的应用场景)
- 消费转账流水
- 日志记录
- 天气数据
- ......
二、ClickHouse安装
安装方式有多种(暂未支持windows上安装),官方文档上介绍的安装方式感觉有点复杂,下面介绍一种较为简单的安装方式,通过rpm安装包进行安装。
Git地址:https://github.com/Altinity/clickhouse-rpm-install
系统环境:CentOS 7.5
1、下载包需要curl支持,当前系统没有的话需要先通过yum安装一下
代码语言:javascript复制sudo yum install -y curl
2、下载安装脚本
代码语言:javascript复制curl -s https://packagecloud.io/install
/repositories/altinity
/clickhouse/script.rpm.sh | sudo bash
3、检查clickhouse安装包全不全
代码语言:javascript复制sudo yum list 'clickhouse*'
Available Packages
clickhouse-client.x86_64 18.1.0-1.el7 Altinity_clickhouse
clickhouse-common-static.x86_64 18.1.0-1.el7 Altinity_clickhouse
clickhouse-compressor.x86_64 1.1.54336-3.el7 Altinity_clickhouse
clickhouse-debuginfo.x86_64 18.1.0-1.el7 Altinity_clickhouse
clickhouse-mysql.noarch 0.0.20180319-1 Altinity_clickhouse
clickhouse-server.x86_64 18.1.0-1.el7 Altinity_clickhouse
clickhouse-server-common.x86_64 18.1.0-1.el7 Altinity_clickhouse
clickhouse-test.x86_64 18.1.0-1.el7 Altinity_clickhouse
4、检查没问题的话开始安装服务端和客户端
代码语言:javascript复制sudo yum install -y clickhouse-server clickhouse-client
5、检查安装后的包全不全
代码语言:javascript复制sudo yum list installed 'clickhouse*'
Installed Packages
clickhouse-client.x86_64 18.1.0-1.el7 @Altinity_clickhouse
clickhouse-common-static.x86_64 18.1.0-1.el7 @Altinity_clickhouse
clickhouse-server.x86_64 18.1.0-1.el7 @Altinity_clickhouse
clickhouse-server-common.x86_64 18.1.0-1.el7 @Altinity_clickhouse
6、安装成功后首先运行服务端,默认会使用config.xml作为配置文件,也可以通过--config=xxx来指定配置文件
代码语言:javascript复制sudo service clickhouse-server start
7、客户端运行,这里的命令啥的和mysql很像,一些命令语法都是差不多的,下面简单试下
代码语言:javascript复制clickhouse-client
localhost :) show databases
SHOW DATABASES
┌─name────┐
│ default │
│ system │
└─────────┘
2 rows in set. Elapsed: 0.030 sec.
这时服务端会有响应信息
代码语言:javascript复制ClickHouse client version 18.1.0.
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 18.1.54396.
三、可视化界面安装,官方文档有介绍很多种工具,这里介绍Tabix
上面介绍的操作方式都是在linux上进行操作的,结果什么都需要通过终端进行查看,很不方便,好在有第三方可视化Web界面工具
Tabix:https://github.com/tabixio/tabix
Tabix使用安装非常方便,有本地安装和无安装两种方式
1、无安装方式最简单,直接打开官方提供的地址:http://ui.tabix.io/#!/login
在上面输入你Clickhouse运行的地址、端口、登录名、密码等信息就好了。
2、本地安装方式
本地需要Web服务器,所以先安装一个nginx,具体安装不再细说,网上资料有很多,nginx配置
代码语言:javascript复制server {
listen 80;
server_name ui.tabix.io;
charset utf-8;
root /var/www/tabix.ui/build;
location / {
if (!-f $request_filename) {
rewrite ^(.*)$ /index.html last;
}
index index.html index.htm;
}
}
然后下载最新的安装文件:https://github.com/smi2/tabix.ui/releases,并且解压将build文件夹拷贝到nginx对应的目录下,然后浏览运行看下效果,具体登录操作和上面一样。
四、扩充
使用Prometheus进行系统的监控
使用Grafana监控数据库的性能