
本文字数:4331;估计阅读时间:11 分钟

Meetup活动
ClickHouse 北京第二届 Meetup 讲师招募中,欢迎讲师在文末扫码报名!

为进一步简化大数据集查询,我们很高兴宣布 sql.clickhouse.com 正式上线!这个全新的 SQL playground 提供了超过 35 个数据集和 220 个示例查询供您尝试。我们还添加了简单的图表功能(并计划进一步改进),并支持保存和分享查询!快来试试,并在社交平台或 GitHub 仓库分享您喜欢的查询,供他人使用!


作为 ClickHouse 用户,我们对数据集充满热情,甚至有一个内部名为“data lovers”的 Slack 频道,用于分享有趣的数据集进行实验和特性测试!过去,我们记录了这些数据集并提供了一些示例查询供用户入门。我们还将其中许多数据集公开在 ClickHouse 的公共实例中,并在文档中引用,这使用了 ClickHouse 自带的经典 Play 界面。

这个 Play 界面设计简单,非常适合入门:它无需依赖,只是一个 HTML 文件。
然而,这并未提供理想的用户体验。我们希望 playground 能支持用户导航和保存查询,并提供语法高亮、自动补全、查询参数、结果导出、基础图表功能和丰富的分享功能,让用户能够更好地探索数据集,从而更轻松地上手 ClickHouse 并分享需求。
幸运的是,我们最近为 CryptoHouse 演示项目构建了一个 UI,用户可以免费查询 100TB 的区块链数据,包括 Solana、Ethereum 和 Polymarket。此 UI 在设计时考虑了可复用性,结合了 ClickHouse Cloud SQL 控制台中的一些经验和代码。经过一些优化后,我们快速地将该 UI 适用于新的 playground,并重新组织和分类了已有的演示数据集。现在 playground 已包含 35 个以上的数据集,总量达 60 TB(并持续增加),并从文档和博客中加载了所有 220 个示例查询,帮助用户快速上手。

未来,我们的文档和博客将更多地引用该环境,最新的 MTA 博客已从这个全新 playground 中受益。
偏好使用 clickhouse-client 或希望集成该服务的用户,可以直接连接到 ClickHouse 实例 sql-clickhouse.clickhouse.com,例如:clickhouse client --host sql-clickhouse.clickhouse.com --secure --user demo --password ''。

demo-ui 是一个使用 NextJS 和 React 构建的单页应用,所有请求均由客户端发出。正如我们在单页应用博客中详细介绍的,ClickHouse 的一些关键特性让这一切成为可能:
HTTP 接口与 REST API ——通过 JavaScript 使用 SQL 查询 ClickHouse 变得非常简单。默认情况下,ClickHouse 监听 8123 端口,使用 SSL 时则监听 8443 端口,后者在 ClickHouse Cloud 中开放。该接口支持 HTTP 压缩和会话。
输出格式 ——支持 70 多种输出数据格式,包括 20 种 JSON 子格式,便于 JavaScript 解析。
查询参数 ——支持模板化查询,增强对 SQL 注入的防护能力。
基于角色的访问控制 (RBAC) ——允许管理员限制对特定表和行的访问。
查询复杂度限制 ——用户具有只读权限,查询的复杂性和资源使用也受到限制。Playground 中的每次查询最多读取 100 亿行,返回 1000 行结果。
配额 ——限制来自每个客户端(基于 IP 地址)的查询次数,以防止恶意客户端使数据库过载。在 Playground 中,用户每小时最多可查询 60 次。
最后三项尤为关键,使我们能够将 demo 背后的 ClickHouse Cloud 实例公开至互联网,并安全地提供只读凭据。具体配置请参见此处。
UI 开发过程中还大量使用了我们自有的组件库 click-ui。该库提供了一组符合品牌的 React 组件,加速开发并确保一致的交互体验,让我们避免在细节调整上花费大量时间,尤其适合快速搭建 demo!
此外,我们还采用了 Apache Echarts 图表库。这款库易于集成且文档丰富,使我们能够快速实现图表功能。


demo playground 是任何 OSS 数据库的重要组成部分,但我们也必须控制服务成本。配额设置是其中的一部分,以确保公平使用,避免资源被单一用户过度占用。此外,ClickHouse Cloud 提供了存储与计算分离的架构,数据存储在对象存储中,从而大幅降低数据存储成本,并使我们在增加 demo 数据集时能够实现无限扩展。

虽然 ClickHouse Cloud 支持自动扩展,但当前集群配置为 3 个节点,每个节点 30 个虚拟 CPU——主要是因为我们预计用户的查询负载相对稳定。我们监控资源消耗并设置告警,并根据需求审查资源,以便必要时进行垂直或水平扩展。
最后,尽管当前数据集是静态的,接下来的工作将重点放在确保尽可能多的数据集保持更新。我们计划利用 ClickHouse Cloud 的两个核心特性:
ClickPipes ——一个托管集成平台,使数据导入 ClickHouse 更简单。虽然需要确保数据集变化定期在 Kafka 或对象存储中可用,但这将显著简化数据加载过程。
计算-计算分离 ——目前在预览阶段,它允许灵活创建多个计算节点组,每组拥有独立端点,共享相同的对象存储。此架构可以将不同的工作负载隔离,支持更精细的资源分配。对于 playground,这意味着我们可以为写入操作分配独立的计算资源,既不影响用户查询性能,又可以独立扩展,实现更优的成本效益。

尽管 demo UI 较为简洁,但有一项功能的实现细节值得分享。ClickHouse 的新用户经常提到,clickhouse-client 中的查询反馈是他们首次运行查询时的亮点之一。

随着用户编写更复杂的查询,这种反馈变得愈加重要,不仅用于估算查询耗时,还可用于评估性能和资源消耗。我们希望 playground 能提供类似的体验,并在查询超出复杂度限制(如扫描超 100 亿行)且可能无法完成时支持用户取消查询。
虽然 ClickHouse 的 HTTP 接口在查询执行时会发送响应头,但这些不被浏览器的 fetch API 支持且较难读取。尽管有替代方案,例如使用 JSONEachRowWithProgress 格式在响应流中返回进度,但这些方法会增加开销且效果不理想。因此,我们为每个查询分配唯一的查询 ID,并通过每隔 100 毫秒执行一次的独立查询,检查 system.processes 表的进度:
SELECTsum(read_rows) AS read_rows,sum(total_rows_approx) AS total_rows,sum(read_bytes) AS read_bytes,read_rows max(elapsed) AS rps,read_bytes max(elapsed) AS bps,formatReadableQuantity(read_rows) AS formatted_rows,formatReadableQuantity(total_rows) AS formatted_total_rows,formatReadableSize(read_bytes) AS formatted_bytes,formatReadableQuantity(rps) AS formatted_rps,formatReadableSize(bps) AS formatted_bpsFROM clusterAllReplicas(default, system.processes)WHERE (initial_user = 'demo') AND startsWith(query_id, {uuid:String})
此查询在 monitor 用户下运行,该用户的行读取复杂度限制较低,但每小时查询配额较高,从而可以在查询运行时提供详细的进度信息。


playground 支持用户在本地保存查询(及配置的图表)。这些数据仅保存在浏览器存储中,但查询和图表可通过链接分享。如果您认为某个查询值得记录并向更广泛的社区分享为官方示例,欢迎在示例查询文件的源代码库中提交问题或 PR。我们也会确保文档中新增的示例查询和数据集在 playground 中可用。
正如我们提到的,我们希望简化示例查询的提交流程,以提升用户体验。

我们将继续优化 SQL playground,主要关注以下三个方面:
实时数据集 ——确保数据集在新数据发布时得到及时更新。尽管部分数据集不会变化,但其他数据集(如 GitHub 事件)可以实现实时更新。我们预计这将是一个渐进的过程。
共享小部件 ——我们已在文档和博客中链接了所有示例查询至新 playground,但理想情况下,用户可以直接在页面中运行查询。为此,我们计划提供查询小部件,可嵌入各页面上,直接呈现结果和图表。同样,该小部件也可用于论坛或讨论场景,以增强社区协作。
简化分享流程 ——当前共享新数据集和示例查询的流程有些繁琐,我们正在探索更便捷的方法。
敬请关注未来的更新!

全新的 ClickHouse SQL Playground 为社区和数据爱好者提供了一个平台,使他们能够使用真实数据集进行探索、实验和分享见解,同时学习 ClickHouse。我们希望用户能充分利用该 playground,并鼓励您分享反馈(以及您最喜爱的查询)!

我们正为北京活动招募讲师,如果你有独特的技术见解、实践经验或 ClickHouse 使用故事,非常欢迎你加入我们,成为这次活动的讲师,与大家分享你的经验。


注册ClickHouse中国社区大使,领取认证考试券


试用阿里云 ClickHouse企业版
轻松节省30%云资源成本?阿里云数据库ClickHouse架构全新升级,推出和原厂独家合作的ClickHouse企业版,在存储和计算成本上带来双重优势,现诚邀您参与100元指定规格测一个月的活动,了解详情:https://t.aliyun.com/Kz5Z0q9G


征稿启示
面向社区长期正文,文章内容包括但不限于关于 ClickHouse 的技术研究、项目实践和创新做法等。建议行文风格干货输出&图文并茂。质量合格的文章将会发布在本公众号,优秀者也有机会推荐到 ClickHouse 官网。请将文章稿件的 WORD 版本发邮件至:Tracy.Wang@clickhouse.com






