ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

我建議您閱讀 Igor Stryhar 2017 年報告的文字記錄「ClickHouse - Tabix 中視覺上快速且清晰的數據分析」。

Tabix 專案中 ClickHouse 的 Web 介面。
主要特點:

  • 直接從瀏覽器與 ClickHouse 搭配使用,無需安裝額外的軟體;
  • 具有語法突出顯示功能的查詢編輯器;
  • 自動完成命令;
  • 查詢執行的圖形分析工具;
  • 可供選擇的配色。
    ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾


ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

我是SMI2的技術總監。我們是一家新聞交換新聞聚合商。我們儲存從合作夥伴收到的大量資料並將其註冊到 ClickHouse 中 - 每秒約 30 個請求。

這是以下的數據:

  • 點擊新聞。
  • 新聞顯示在聚合器中。
  • 橫幅顯示在我們的網路上。
  • 我們從自己的計數器註冊事件,這與 Yandex.Metrica 類似。這是我們自己的微觀分析。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

在 ClickHouse 出現之前我們的生活非常忙碌。我們經歷了很多痛苦,試圖將這些數據儲存在某個地方並以某種方式對其進行分析。

ClickHouse 之前的生活 – infiniDB

我們擁有的第一個東西是 infiniDB。她和我們住了四年。我們艱難地推出了它。

  • 它不支援集群或分片。預設情況下,沒有這樣的智慧東西是開箱即用的。
  • 她加載數據時遇到困難。只有一個特定的控制台實用程式只能載入 CSV 文件,並且只能以某種非常不清楚的方式載入。
  • 資料庫是單線程的。你可以寫也可以讀。但它使得處理大量數據成為可能。
  • 她還有一根有趣的拐杖。每天晚上都得重啟伺服器,否則就無法運作。

她為我們工作直到 2016 年底,當時我們完全轉向了 ClickHouse。

ClickHouse 之前的生活 – Cassandra

由於 infiniDB 是單執行緒的,我們決定需要某種可以同時寫入多個執行緒的多執行緒資料庫。

我們嘗試了很多有趣的事情。然後我們決定嘗試 Cassandra。卡桑德拉一切都很棒。每個出價每秒 10 個請求。某處有 000 個閱讀請求。

但她也有自己的興趣。她每月或每兩個月都會經歷一次資料庫不同步。我不得不醒來並跑去修復卡桑德拉。伺服器一台一台重新啟動。而一切都變得順利又美好。

ClickHouse 之前的生活 – Druid

然後我們意識到我們需要寫入更多資料。 2016年我們開始看德魯伊。

Druid 是一個用 Java 寫的開源軟體。非常具體。當我們需要儲存某種事件流,然後對它們進行聚合或製作分析報告時,它適合點擊流。

Druid 的版本為 0.9.X。

資料庫本身部署起來非常困難。這就是基礎設施的複雜性。為了部署它,需要安裝很多很多的鐵。每個硬體都負責自己單獨的角色。

為了將資料載入到其中,需要使用某種薩滿教。有一個開源專案 - Tranquility,它在流中丟失了我們的資料。當我們將資料加載到其中時,它就丟失了。

但不知何故,我們開始實施它。我們就像吸了毒卻繼續吃仙人掌的刺蝟一樣,開始介紹它。我們花了大約一個月的時間來準備所有基礎設施。即,訂購伺服器、配置角色並完全自動化部署。也就是說,當叢集發生故障時,將自動部署第二個叢集。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

但隨後奇蹟發生了。我正在度假,我的同事給我發了一個鏈接 哈布爾,其中表示 Yandex 決定開放 ClickHouse。我說我們試試看。

實際上,我們在 2 天內部署了 ClickHouse 測試叢集。我們開始向其中載入資料。與infiniDB相比,這是初級的;與Druid相比,這是初級的。與 Cassandra 相比,它也很初級。因為如果您將資料從 PHP 載入到 Cassandra 中,那麼這並不簡單。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

我們得到了什麼?表現在速度上。資料儲存效能。也就是說,使用的磁碟空間要少得多。 ClickHouse速度很快,與其他產品相比,它的速度非常快。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

當 Yandex 在 OpenSource 中發布 ClickHouse 時,只有一個控制台用戶端。我們公司 SMI2 決定嘗試為 Web 製作一個本機客戶端,以便我們可以從瀏覽器開啟頁面,編寫請求並取得結果,因為我們開始編寫大量請求。在控制台中編寫是很困難的。我們製作了第一個版本。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

接近去年冬天的時候,與 ClickHouse 配合使用的第三方工具開始出現。這些工具例如:

我將研究其中的一些工具,即那些我曾經使用過的工具。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

一個很好的工具,但是對於德魯伊來說。當 Druid 被實現時,我正在測試 SuperSet。我喜歡他。對於德魯伊來說這是非常快的。

它不適合ClickHouse。也就是說,它適合、啟動,但只準備處理基本查詢,例如:SELECT 事件、GROUP BY 事件。它不支援更複雜的 ClickHouse 語法。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

下一個工具是 Apache Zeppelin。這是一件好事而且有趣。作品。它支援筆記本、儀表板,並支援變數。我知道 ClickHouse 社群中有人使用它。

但不支援 ClickHouse 語法,即您必須在控制台或其他地方編寫查詢。接下來,檢查一切是否正常。只是不方便而已。但它有良好的儀表板支援。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

下一個工具是 Redash.IO。 Redash 託管在互聯網上。也就是說,與以前的工具不同,它不需要安裝。這是一個能夠整合來自不同資料來源的資料的儀表板。也就是說,您可以從ClickHouse、MySQL、PostgreSQL 和其他資料庫下載。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

就在一個月前(2017 年 XNUMX 月),Grafana 出現了支持。例如,當您在 Grafana 中建立有關硬體狀態或某些指標的報表時,現在您可以直接根據 ClickHouse 的資料建立相同的圖表或某種面板。這個很方便,我們自己也用。這可以讓您發現異常情況。也就是說,如果發生某些情況並且某些硬體掉落或變得緊張,那麼您可以查看該數據是否成功進入 ClickHouse 的原因。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

我發現在這些工具或控制台中編寫非常尷尬。我決定改進我們的第一個介面。我從 EventSQL、SeperSet、Zeppelin 那裡得到了這個想法。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

你想要什麼?我想要獲得圖形、改進的編輯器,並實現對提示字典的支援。因為ClickHouse有一個很棒的功能-字典。但使用字典很困難,因為你需要記住儲存值的格式,即它是數字還是字串等。而且由於我們經常使用字典的不同變體,因此編寫查詢非常困難。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

自從我們的第一個版本發布以來已經過去了 3 個月。我向一個私有分支做了大約 330 次提交,結果是 Tabix。

與之前的版本(稱為 ClickHouse-Frontend)不同,我決定將其重新命名為一個簡單的名稱。結果是 Tabix。

出現了什麼?

繪製圖表。支援 ClickHouse SQL 語法。提供有關功能的建議,可以做很多有趣的事情。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

這就是一般 Tabix 方案的樣子。左邊是一棵樹。中間是查詢編輯器。以下是該請求的結果。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

接下來我將向您展示查詢編輯器的工作原理。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

這裡,自動完成功能會自動在表格上執行,並相應地提示欄位的自動完成功能。以及功能上的提示。如果按 ctrl Enter,請求將會執行或因錯誤而失敗。最簡單的請求發送到 Tabix 並獲得結果,即可快速使用 ClickHouse。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

正如我已經說過的,字典是一個非常有趣的東西,我們經常使用它。這讓我們能夠做很多事情。假設我們將所有城市儲存在字典中。我們儲存城市識別碼和城市名稱、緯度和經度。在資料庫中我們只儲存城市識別碼。因此,我們對數據進行了非常強烈的壓縮。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

這似乎是一件簡單的事情,但它以一種非常有趣的方式在 ClickHouse 中提供了幫助。由於ClickHouse僅支援嵌套連接,因此查詢向下增長且足夠寬。當括號打開並且出現一些長表達式時,像折疊查詢這樣簡單的操作就可以更輕鬆地處理查詢本身。因為當查詢長度為 200-300 行且寬度非常巨大時,折疊查詢然後找到某個位置或以某種方式對其進行本地化非常有幫助。

物件樹、多重查詢和選項卡(影片 13:46 https://youtu.be/w1-XsL3nbRg?t=826)

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

接下來我將向您展示樹和選項卡。左側是一棵樹;在頂部您可以建立多個選項卡。選項卡就像工作區。您可以建立多個選項卡並對每個選項卡進行不同的命名。它就像一個用於建立報告的迷你係統。

選項卡會自動儲存。如果您重新啟動瀏覽器或關閉或開啟 Tabix,所有這些都會儲存。

熱鍵 - 方便(影片 14:39 https://youtu.be/w1-XsL3nbRg?t=879)

有熱鍵,而且數量相當多。我在這裡提取了其中一些作為示例。這是切換選項卡、執行一個請求或執行多個請求。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

我將向您展示如何處理結果。我們發送請求。這裡我畫了 sin、cos 和 tg。您可以反白顯示結果,即為列繪製典型地圖。您可以突出顯示正值或負值。或簡單地為特定的表格元素著色。當桌子很大並且您需要用眼睛發現一些異常情況時,這很方便。當我尋找異常情況時,我用綠色或紅色突出顯示了一些線條、一些元素。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

那裡有很多有趣的事情。例如,如何複製到Redmine Markdown。如果您需要將結果複製到某個地方,這非常方便。您只需選擇一個區域,說“複製到Redmine”,它就會複製到Redmine Markdown或建立一個Where查詢。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

接下來是查詢最佳化。我曾經忘記指定“日期”字段。我在 ClickHouse 中的請求處理得不是非常非常快,但很快,即不到一秒鐘。當我看到他跑了多少行時,我感到害怕。我們不會一天內向該表寫入這麼多行。我開始分析該請求,發現我錯過了一個地方的約會。也就是說,我忘記指出我不需要整個表的數據,而是特定時期的數據。

Tabix 有一個「統計」選項卡,它儲存發送請求的整個歷史記錄,即您可以在其中查看此請求讀取了多少行以及執行時間。這允許優化。

您可以根據查詢結果建立資料透視表。您向 ClickHouse 發送了請求並收到了一些資料。然後您可以用滑鼠移動這些資料並建立某種資料透視表。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

下一個有趣的事情是繪圖。假設我們有以下請求:sin、cos 從 0 到 299。要繪製它,您需要選擇「繪製」選項卡,您將獲得包含 sin 和 cos 的圖形。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

您可以將其分成不同的軸,即您可以一次並排繪製兩個圖表。寫入一個命令和第二個命令。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

您可以繪製直方圖。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

您可以將其分解為圖形矩陣。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

您可以建立熱圖。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

您可以建立熱日曆。順便說一句,當您需要分析一年多的異常情況(即找到高峰或下降)時,這是一件非常方便的事情。這個數據視覺化幫助我解決了這個問題。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

接下來是樹狀圖。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

桑基斯是一張有趣的圖表。他要么是 Streamgrahps,要么是 River。但我稱它為河流。它還允許您查找任何異常情況。非常舒服。我建議使用它進行搜尋。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

下一個有趣的事情是繪製動態地圖。如果您在資料庫中儲存緯度、經度,並且儲存目的地,例如,如果您有卡車運輸或飛機飛行,那麼您可以繪製目的地路徑。您也可以在那裡設定它們飛入的這些物體的速度和大小。

但這張地圖的問題在於,它只畫了一張世界地圖,沒有細節。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

後來我加入了谷歌地圖。如果你儲存緯度、經度,那麼你可以在Google地圖上繪製結果,但沒有飛機支援。

我們已經討論了 Tabix 中處理結果和查詢的主要功能。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

下一篇是對 ClickHouse 伺服器的分析。有一個單獨的“Metrics”選項卡,您可以在其中查看每列儲存的資料的大小。螢幕截圖顯示,這個「referrer」欄位佔用了大約 730 GB。如果我們放棄這個字段,我們將節省三個 700 GB 的分片,即大約 2 TB,這是我們不需要的。

我們還有一個“request_id”字段,我們將其儲存在字串中。但如果我們開始以數位形式儲存它,這個欄位將大大縮小。

它還顯示伺服器配置和叢集中的節點列表。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

下一個選項卡是指標。它們透過 ClickHouse 進入即時狀態,讓您能夠分析伺服器的狀態並了解伺服器發生的情況。這並不是完整 Grafana 的替代品。這對於快速分析是必要的。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

下一個選項卡是進程。從它們中您可以了解伺服器上發生的情況。了解那裡發生了什麼事。我有一個每次讀取消耗 200 GB 的請求。感謝這個介面,我看到了這一點。我抓住了他並糾正了他。結果大約是 30 GB,即有時的效能。

ClickHouse – Tabix 中視覺上快速且直覺的資料分析。 伊戈爾·斯特里哈爾

謝謝你!而且它是開源的

我完成了。順便說一句,它是開源的,它是免費的,你甚至不需要下載它。在瀏覽器中打開它,一切都會正常。

問題

伊戈爾,下一步是什麼?您將在哪裡開發這個工具?

接下來,將出現儀表板,即可能會出現儀表板。與其他資料庫整合。我這樣做了,但尚未在開源中發布。這是 MySQL,也可能是 PostgreSQL。也就是說,Tabix 不僅可以將請求傳送到 ClickHouse,還可以傳送到其他工具。

顯然,已經做了大量的工作。事實證明這是一個相當完整的想法。顯然,這是在瀏覽器中完成的,以便消除各種軸上的拐杖並快速將整個事情整合在一起。我聽說你在 PHP 工作,所以最簡單的方法是在瀏覽器中輸入它,它在任何地方都可以工作。對此沒有任何疑問。問題是這樣的。那裡確實做了很多事情。有多少人致力於此?這一切花了多久時間?因為自訂工具通常沒有那麼多多功能。

我們團隊的一個人從夏天工作到秋天。這是第一個版本。然後我一個人就做了 330 次提交。正如你所看到的,我和我的同事只完成了一半。三個月的時間,從第一個版本到最後一個版本,大部分都是我一個人完成的。但我不太了解Javascript。這是我唯一的、我希望也是我參與的最後一個 Javascript 專案。我明白了,我看了——哦,恐怖。但我真的很想完成這個產品,這就是發生的事情。

非常感謝您的報告!這是一個很棒的工具。和 畫面 你比較過嗎?

謝謝。這就是為什麼我將其命名為 Tabix,因為第一個字母是相同的。

因為你競爭?

會有很多投資,我們會競爭。

您如何向內部分析師推銷該工具將完全取代 *畫面*?會有什麼論點?

與 ClickHouse 原生配合使用。我嘗試過Tableau,但你不能在那裡寫字典之類的支援。 我知道人們如何使用 Tabix。他們編寫查詢,將其上傳到 CSV,然後上傳到 BI。 他們已經在那裡做了一些事情。但我很難想像他們是如何做到這一點的,因為它是一個圖形工具。它可以卸載 5 行,最多 000 行,但不能更多,否則瀏覽器將無法應對。

也就是說,數據量有一些嚴重的限制,對吧?

是的。我無法想像您會想要將 10 行上傳到瀏覽器畫面上的表格中。為了什麼?

這是不是意味著這是一個快速查看數據的介面?稍微扭一下,扭一下?

是的,快速了解它是如何工作的並建立摘要圖。然後把它交給某個地方。我們有自己的報告系統,我只是從那裡接受這個請求。我在 Tabix 中繪製並將其發送給我們的報告。

還有一個問題。同期群分析?

如果有任何要求,我們會添加。

您什麼時候開始使用它? ClickHouse,實作花了多久時間? 點擊之家 並帶來 生產狀態?

正如我所說,我們在很短的時間內實現了一個測試集群。我們在兩天內部署了它。我們又測試了幾週。我們在3個月內就達到了生產,但是我們有自己的ETL,也就是記錄資料的工具。他盡其所能地寫下了一切。他可以使用 MongoDB、Cassandra、MySQL 進行編寫。教他如何在 ClickHouse 中編寫很容易。我們擁有現成的基礎設施,可以快速實施。三個月內我們開始丟掉第一個組件。 3個月內我們完全放棄了其他一切。我們只剩下一個ClickHouse了。

伊戈爾,非常感謝您的報告。我真的很喜歡使用地圖建立路徑的功能。是否有計劃與 Yandex.Maps 集成,特別是與自訂 Yandex.Maps 集成?

我嘗試整合而不是 Google 地圖,但我在 Yandex.Maps 上沒有找到深色主題。我沒有告訴你一件事情。我會倒帶添加。

幻燈片——谷歌地圖。有一個命令“DRAW_GMAPS”,它繪製地圖。有一個命令“DRAW_YMAPS”,即可以繪製Yandex.Map。但實際上,在這個命令下有Javascript,即您從ClickHouse接收到的資料可以傳輸到您在此處編寫的Javascript。並且您有一個應該在其中繪製的輸出區域。你可以畫任何圖形,也就是任何圖形、地圖,你可以畫自己的組件。在此之前,我有另一個用於繪製圖表的庫。

也就是說,有沒有一個可以自訂顯示功能的工具?

任何。您可以對這些點重新著色,使它們不再是紅色,而是藍色、綠色。

感謝您的報告!您有一張投影片展示了替代查詢工具 點擊之家 用於建立儀表板和分析報告。我知道當你開始工作的那一刻 ClickHouse,尚未為這些工具編寫適配器。我想知道為什麼您決定製作自己的工具,而不是為某些現成的工具編寫適配器?我認為調整測試編輯器很快。為什麼決定做這麼多工作?

這裡有一個有趣的點——事實是我是技術總監,而不是資料科學家。當我們開始實施 Druid 時,我的路線圖包含了大約 50% 的任務 - 讓我們計算一下,或者讓我們計算一下,或者分析一下。結果我們實作了ClickHouse。他開始快速建立一切,計算並快速關閉他的路線圖。那時我意識到我缺乏數據科學和數據視覺化方面的知識。 Tabix 是我學習資料視覺化的作業。我正在研究如何補充齊柏林飛艇。我有點不喜歡他的程式設計。 Redash 我研究瞭如何添加它,但普通的編輯器對我來說就足夠了。 SuperSet 也是用一種我不太喜歡的語言寫的。所以我決定騎自行車,這就是發生的事情。

伊戈爾,你接受 Pull 請求嗎?

是。

非常感謝您的報告!還有兩個問題。首先,你說話不太恭維 JavaScript。你是用純 Javascript 寫的還是某種框架?*

在裸 Javascript 更好。

那什麼框架呢?

角。

天氣晴朗。第二個問題。你有沒有考慮過 R и *閃亮的**?*

考慮了一下。玩過。

您也可以只編寫一個適配器。

他是。似乎社群做到了,但是,正如我回答上一個問題時,我想自己嘗試一下。

*不,關於可視化,它也在那裡。

你說有這樣一個東西,它會給你畫一個圖表。我打開了一本關於資料視覺化的書。我想:「讓我嘗試可視化這些數據。我會寫信給他,以便他重建數據。”我開始更了解數據供應技術。如果我採用了現成的元件,我個人會學到更糟糕的如何使用它,即可視覺化。但是,是的,我喜歡 R,但我還沒有讀過《R for Dummies》這本書。

謝謝!

簡單的問題。有什麼方法可以快速上傳標誌或時間表嗎?

可以上傳到 CSV 或 Excel。

不是數據,而是現成的板塊、現成的圖表?比如,給老闆看。

有一個「上傳」按鈕,還有一個「上傳 png、jpg 格式的圖表」按鈕。

謝謝!

附:安裝 tabix 的迷你說明

  • 下載 最新發布
  • 解壓縮,複製目錄 build 在 nginx root_path 中
  • 配置nginx

來源: www.habr.com

添加評論