Clickhouse初体验

开篇

最近在实习做一个机器学习聚类相关的项目。在进行数据处理的时候需要使用数据库对数据进行聚合计算来提取特征。由于之前听说过Clickhouse这个由毛子开发的开源数据库速度相当得快,所以打算进行一次尝试。

简介

ClickHouse是一个开源的用于在线分析处理的列式数据库。

ClickHouse是由俄罗斯的Yandex公司(好像类似俄罗斯的百度的存在)为了Yandex Metrica网络分析服务而开发。它支持分析实时更新的数据,Clickhouse以高性能著称。

ClickHouse is an open-source Column-oriented DBMS(columnar database management system) for online analytical processing (OLAP).

ClickHouse was developed by the Russian IT company Yandex for the Yandex.Metrica web analytics service. ClickHouse allows analysis of data that is updated in real time. The system is marketed for high performance.

总结起来ClickHouse的一个最显著的特点就是快,跑分高,甚至要高于很多商业的数据库系统。它的排名也上涨的非常快,最近数据分析相关比赛中有队伍使用ClickHouse夺得冠军。所以这个数据库还是比较值得我们尝试尝试。

不过ClickHouse也有一些缺点,它大概是2016年6月份左右开源,是一个比较新的产品。社区俄语+英语为主,因为是俄罗斯的产品,俄语的内容不少,需要适当使用谷歌翻译来获取我们需要的信息。另一方面,Clickhouse目前只支持Linux,想要在Windows或者是Mac上面运行要用到Docker。这一方面本人就不太了解。

在实习的项目中,我使用的本地Win10操作系统 + Linux Ubuntu16.04.3 LTS(GNU/Linux 4.13.0-39-generic x86_64)服务器,使用Putty进行SSH连接访问服务器。

安装与配置

关于Clickhouse的安装与配置我们在官网,谷歌或者百度上面都可以找到不少教程,这里就不再赘述。下面放官方链接提供参考。

ClickHouse Quick Start

安装指南

在完成安装之后只需要在Terminal中键入命令:


clickhouse-client

或者


clickhouse-client -m (多行模式)

关于服务器的配置同样可以参考官方教程

服务器配置

服务器配置

看不太懂英文的话请善用谷歌/百度/有道翻译。

本人倒是直接使用了默认的配置基本也能在本地完美运行。如果想要设置集群或者是远程访问的话就需要修改一些配置,这些我下面会提到。

使用方法

Clickhouse的语法基本和SQL类似,不过它自己又增加了一些新的特性。比如生成表的时候要定义使用的引擎,有MergeTree, Merge, Log之类的不同的表引擎,它们决定了数据的存储方式,以及索引之类的内容,主要目的是能够支持最快的查询。

Clichouse表引擎(官方)

Clickhouse表引擎(中文)

Clickhouse比较不方便的一点是不支持Update,delete操作,毕竟一切为了速度。插入和查询的效率都相当之高,还能够支持直接导入导出CSV文件。


cat path_to_your_csv/XXX.csv | clickhouse-client  --query="Insert into XXX FORMAT CSV";


clickhouse-client  --query="select * from XXXX"  > path_to_output/XXX.csv

默认的数据库是Default,密码是空。如果需要自己生成新的数据库用户和密码,可以直接在users.xml进行添加修改。

其余特性也都可以在官网教程中找到。

图形化界面

Clickhouse官方暂时没有图形化界面,这样使得操作相当得不方便,如果使用SSH + Terminal连接Linux服务器进行操作,SQL指令和返回的表结果(行数较多)都无法在Terminal上完美显示。这里官网也提到了几个第三方的图形化界面。我尝试了其中的Tabix,效果还算不错。

Tabix是一个三方的开源Clickhouse图形化界面。完全免费而且不需要安装,可以直接从浏览器打开。

Tabix官网

Tabix UI

只需要连接clickhouse服务器就能直接在浏览器上操作Clickhouse,非常方便。

考虑一般情况下Clickhouse服务器安装在Linux服务器。这里介绍如何远程连接Clickhouse。

有一篇俄文的博客简洁明了地介绍了Tabix连接远程Clickhouse服务器的方法。

Tabix- Clickhouse的界面

首先我们需要对服务器进行配置,以便它接受外部连接。

1. 关闭Clickhouse server的服务


sudo service clickhouse-server stop

2. 使用文本编辑器打开配置文件 /etc/clickhouse-server/config.xml(这里使用vi)


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

3. 只留下listen_port标签中的


<listen_host>::</listen_host>

监听所有窗口

4. 保存并退出

5. Linux服务器开放端口8123

Clickhouse服务器默认运行在端口8123,我们需要在防火墙中允许开放端口8123


sudo ufw allow 8123

6.重启Clickhouse server服务

sudo service clickhouse-server start

最后转到Tabix UI界面, 输入名字, 主机端口号还有登录名密码(如果是Default的话密码基本为空,不用填写)。

Tabix登录

这样我们就可以直接使用图形化界面写Clickhouse命令了,无论是建表,插入还是查询都能做到。查询返回的结果还能够以图表的形式显示,比终端显示更加直观。

查询结果

结束

作为一个开源的数据库,Clickhouse确实速度相当快,处理百万级千万级甚至亿级的数据运行时间都是以秒计时。开源免费的优势也使得它非常适合不算过于复杂的项目。当然Clickhouse也有不少缺点,毕竟它还是一个新兴的数据库,整个社区还在蓬勃发展中。它当前只支持主流的Linux,也许未来能兼容更多的操作系统。如果你喜欢尝试新的事物,不妨安装一个来玩一玩。

参考资料

  1. Clickhouse官方文档

  2. Clickhouse官方教程

  3. Clickhouse专业中文社区

  4. Clickhouse官方Github

  5. Tabix官方网站Tabix官方Github

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,430评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,406评论 3 398
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,834评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,543评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,547评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,196评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,776评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,671评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,221评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,303评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,444评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,134评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,810评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,285评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,399评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,837评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,455评论 2 359

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,275评论 25 707
  • 【明线暗战交织】 明线是沙也加的人生经历,暗线是我的人生。沙也加因为在兄长杀死父亲的火灾后失忆,从而被养父母隐瞒一...
    CASSIE_CC阅读 329评论 0 0
  • 穿插在纵横交错的马路上 没有了方向 行走在下班流中的一刹那 我似一粒灰尘 漂浮在人世间 你看啊,那是惊鸿一瞥 还是...
    陈明青年阅读 1,097评论 2 3
  • 循环过一百多次的一首歌 受LOFTER 糖老师影响 借鉴了一张封面 你们想知道怎么做的嘛?
    荒岛路影像阅读 315评论 0 0
  • 走过很多路, 见过很多人, 看过很多电影, 慢慢懂了人生。 曾经,很多台词看不懂, 如今,看懂已是伤心人。 《阿甘...
    天天天蓝2阅读 267评论 0 0