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 中视觉上快速且直观的数据分析。 伊戈尔·斯特里哈尔

后来我添加了谷歌地图。 如果你存储纬度、经度,那么你可以在谷歌地图上绘制结果,但没有飞机支持。

我们已经讨论了 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 格式的图表”按钮。

谢谢大家!

PS 安装 tabix 的迷你说明

  • 下载 最新发布
  • 解压,复制目录 build 在 nginx root_path 中
  • 配置nginx

来源: habr.com

添加评论