開篇
最近在實習(xí)做一個機(jī)器學(xué)習(xí)聚類相關(guān)的項目。在進(jìn)行數(shù)據(jù)處理的時候需要使用數(shù)據(jù)庫對數(shù)據(jù)進(jìn)行聚合計算來提取特征姆蘸。由于之前聽說過Clickhouse這個由毛子開發(fā)的開源數(shù)據(jù)庫速度相當(dāng)?shù)每旃倏郏源蛩氵M(jìn)行一次嘗試翅敌。
簡介
ClickHouse是一個開源的用于在線分析處理的列式數(shù)據(jù)庫。
ClickHouse是由俄羅斯的Yandex公司(好像類似俄羅斯的百度的存在)為了Yandex Metrica網(wǎng)絡(luò)分析服務(wù)而開發(fā)醇锚。它支持分析實時更新的數(shù)據(jù)哼御,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.
總結(jié)起來ClickHouse的一個最顯著的特點就是快焊唬,跑分高恋昼,甚至要高于很多商業(yè)的數(shù)據(jù)庫系統(tǒng)。它的排名也上漲的非掣洗伲快液肌,最近數(shù)據(jù)分析相關(guān)比賽中有隊伍使用ClickHouse奪得冠軍。所以這個數(shù)據(jù)庫還是比較值得我們嘗試嘗試鸥滨。
不過ClickHouse也有一些缺點嗦哆,它大概是2016年6月份左右開源,是一個比較新的產(chǎn)品婿滓。社區(qū)俄語+英語為主老速,因為是俄羅斯的產(chǎn)品,俄語的內(nèi)容不少凸主,需要適當(dāng)使用谷歌翻譯來獲取我們需要的信息橘券。另一方面,Clickhouse目前只支持Linux卿吐,想要在Windows或者是Mac上面運(yùn)行要用到Docker旁舰。這一方面本人就不太了解。
在實習(xí)的項目中嗡官,我使用的本地Win10操作系統(tǒng) + Linux Ubuntu16.04.3 LTS(GNU/Linux 4.13.0-39-generic x86_64)服務(wù)器箭窜,使用Putty進(jìn)行SSH連接訪問服務(wù)器。
安裝與配置
關(guān)于Clickhouse的安裝與配置我們在官網(wǎng)衍腥,谷歌或者百度上面都可以找到不少教程磺樱,這里就不再贅述。下面放官方鏈接提供參考婆咸。
在完成安裝之后只需要在Terminal中鍵入命令:
clickhouse-client
或者
clickhouse-client -m (多行模式)
關(guān)于服務(wù)器的配置同樣可以參考官方教程
看不太懂英文的話請善用谷歌/百度/有道翻譯竹捉。
本人倒是直接使用了默認(rèn)的配置基本也能在本地完美運(yùn)行。如果想要設(shè)置集群或者是遠(yuǎn)程訪問的話就需要修改一些配置擅耽,這些我下面會提到。
使用方法
Clickhouse的語法基本和SQL類似物遇,不過它自己又增加了一些新的特性乖仇。比如生成表的時候要定義使用的引擎憾儒,有MergeTree, Merge乃沙, Log之類的不同的表引擎起趾,它們決定了數(shù)據(jù)的存儲方式,以及索引之類的內(nèi)容警儒,主要目的是能夠支持最快的查詢训裆。
Clickhouse比較不方便的一點是不支持Update,delete操作蜀铲,畢竟一切為了速度边琉。插入和查詢的效率都相當(dāng)之高,還能夠支持直接導(dǎo)入導(dǎo)出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
默認(rèn)的數(shù)據(jù)庫是Default变姨,密碼是空。如果需要自己生成新的數(shù)據(jù)庫用戶和密碼厌丑,可以直接在users.xml進(jìn)行添加修改定欧。
其余特性也都可以在官網(wǎng)教程中找到。
圖形化界面
Clickhouse官方暫時沒有圖形化界面怒竿,這樣使得操作相當(dāng)?shù)貌环奖憧仇绻褂肧SH + Terminal連接Linux服務(wù)器進(jìn)行操作,SQL指令和返回的表結(jié)果(行數(shù)較多)都無法在Terminal上完美顯示耕驰。這里官網(wǎng)也提到了幾個第三方的圖形化界面爷辱。我嘗試了其中的Tabix,效果還算不錯耍属。
Tabix是一個三方的開源Clickhouse圖形化界面托嚣。完全免費(fèi)而且不需要安裝,可以直接從瀏覽器打開厚骗。
只需要連接clickhouse服務(wù)器就能直接在瀏覽器上操作Clickhouse示启,非常方便。
考慮一般情況下Clickhouse服務(wù)器安裝在Linux服務(wù)器领舰。這里介紹如何遠(yuǎn)程連接Clickhouse夫嗓。
有一篇俄文的博客簡潔明了地介紹了Tabix連接遠(yuǎn)程Clickhouse服務(wù)器的方法。
首先我們需要對服務(wù)器進(jìn)行配置冲秽,以便它接受外部連接舍咖。
1. 關(guān)閉Clickhouse server的服務(wù)
sudo service clickhouse-server stop
2. 使用文本編輯器打開配置文件 /etc/clickhouse-server/config.xml(這里使用vi)
sudo vi /etc/clickhouse-server/config.xml
3. 只留下listen_port標(biāo)簽中的
<listen_host>::</listen_host>
4. 保存并退出
5. Linux服務(wù)器開放端口8123
Clickhouse服務(wù)器默認(rèn)運(yùn)行在端口8123,我們需要在防火墻中允許開放端口8123
sudo ufw allow 8123
6.重啟Clickhouse server服務(wù)
sudo service clickhouse-server start
最后轉(zhuǎn)到Tabix UI界面锉桑, 輸入名字排霉, 主機(jī)端口號還有登錄名密碼(如果是Default的話密碼基本為空,不用填寫)民轴。
這樣我們就可以直接使用圖形化界面寫Clickhouse命令了攻柠,無論是建表球订,插入還是查詢都能做到。查詢返回的結(jié)果還能夠以圖表的形式顯示瑰钮,比終端顯示更加直觀冒滩。
結(jié)束
作為一個開源的數(shù)據(jù)庫,Clickhouse確實速度相當(dāng)快浪谴,處理百萬級千萬級甚至億級的數(shù)據(jù)運(yùn)行時間都是以秒計時开睡。開源免費(fèi)的優(yōu)勢也使得它非常適合不算過于復(fù)雜的項目。當(dāng)然Clickhouse也有不少缺點苟耻,畢竟它還是一個新興的數(shù)據(jù)庫篇恒,整個社區(qū)還在蓬勃發(fā)展中。它當(dāng)前只支持主流的Linux梁呈,也許未來能兼容更多的操作系統(tǒng)婚度。如果你喜歡嘗試新的事物,不妨安裝一個來玩一玩官卡。