博客 / 用户故事

商业机密:Coinhall 如何使用 ClickHouse 为其区块链数据平台提供支持

author avatar
ClickHouse 团队
Aug 14, 2024 - 7 分钟阅读


Coinhall 是一个全链交易终端,通过聚合来自 23 个不同区块链网络的交换数据,提供实时价格图表并优化交易机会。该平台成立于 2021 年,为用户提供全面的交易工具和去中心化交易所中最优的交换率。

为了管理来自多个来源的大量区块链数据,Coinhall 需要顶级的性能和可扩展性。速度支持实时分析,并确保用户可以及时做出交易决策,而成本效率则可以降低运营成本,帮助公司保持竞争力、有效分配资源并支持未来增长。

两年前,Coinhall 联合创始人兼 CTO Aaron Choo 领导了 Coinhall 数据架构的转型。在最近于新加坡举行的见面会上,Aaron 详细介绍了这一转型过程,包括自实施 ClickHouse 以来他们看到的令人印象深刻的成果。

起初

Aaron 于 2021 年 8 月启动了 Coinhall,他称之为“个人周末项目”。当时他还是新加坡国立大学的计算机科学专业学生,几乎没有专业经验,更不用说数据库管理系统的知识了。

他最初围绕 BigQuery 构建了该平台,因为他在大学期间使用过 Google Cloud Platform,并且它提供了合理的免费层级。Aaron 说,它在一段时间内运行良好,但最终团队遇到了问题,最明显的是性能和成本方面。

Aaron 说:“查询平均需要大约两秒钟才能运行。” “对于其他用例来说,这可能不是问题,但因为我们是面向消费者的交易产品,如果您等待几秒钟才能加载数据,那就有问题了。”

他们还很快超过了 BigQuery 的免费层级,每天运行 200 万次查询并扫描超过 150 TB 的数据。他们发现自己每月花费数千美元却获得低于标准的性能,他们知道是时候做出改变了。

选择 ClickHouse

Aaron 快速在 Google 上搜索了“时序数据库”,找到了几个选项,并在 2021 年 10 月将平台迁移到了 QuestDB。他选择 QuestDB 的部分原因是,他想要一个可以自我管理的解决方案。它比 BigQuery 有所改进,但到 2022 年年中,他对数据库缺乏开发者资源和功能感到沮丧。

这次,为了找到合适的长期解决方案,他进行了更全面的搜索,比较了在线评论和外部基准,以找到最适合 Coinhall 需求的方案。在早期评估阶段,他看到 ClickHouse 在除复杂性之外的各个方面都具有优势,但即使是复杂性,也是他知道可以控制的东西。

他说:“作为一名开发人员,您总是可以学习、改进并使您的体验更好。”

作为评估的一部分,Aaron 专注于每个数据库处理烛台图查询的能力。烛台图对于像 Coinhall 这样的交易平台至关重要,因为它们以可视方式表示随时间的价格变动,显示每个交易周期的开盘价、最高价、最低价和收盘价。为了让 Coinhall 提供实时交易洞察,它需要一个能够快速且大规模执行这些查询的数据库。

Aaron 将选择范围缩小到 Rockset、SingleStore、Snowflake 和 ClickHouse。在性能方面,ClickHouse 是明显的赢家,执行烛台图查询仅需 20 毫秒,而其他数据库则需要 400 毫秒或更长时间。它运行最新价格查询仅需 8 毫秒,超过了次优性能(SingleStore)的 45 毫秒。最后,它处理 ASOF JOIN 查询仅需 50 毫秒,而 Snowflake 则需要 20 分钟,Rockset 则超时。

ClickHouse 在成本效率方面也轻松胜出。虽然其他三个托管服务每月花费高达 2,000 美元,但自托管 ClickHouse 是迄今为止最具成本效益的选择,每月成本仅为 50 美元。它仅用 4 个 vCPU 和 16 GB RAM 就实现了这些结果,使其成为像 Coinhall 这样的小型但不断发展的公司的理想选择,他们需要在保持运营成本低廉的同时确保高性能。

coinhall-img1.png

经验和优化

Aaron 和团队于 2022 年 7 月开始将平台迁移到 ClickHouse。正如 Aaron 所说,“这并不容易,因为我们有三到四项服务在运行。” 但到 10 月,他们已完全过渡到 ClickHouse 作为其主要数据库管理系统。

随着他们越来越习惯使用 ClickHouse,Aaron 和团队进行了一些旨在提高速度和效率的优化。

性能调优

正如 Aaron 所说,“数据库的速度仅取决于其最慢的查询。” 在实施初期,当团队适应 ClickHouse 和其他数据库之间的一些差异时,他们遇到了性能瓶颈,导致某些查询速度变慢。

Aaron 求助于 ClickHouse 的文档,特别是其关于稀疏主索引的指南,他称之为“如果您考虑使用 ClickHouse,这是最好的资源”。通过遵循最佳实践并微调他们的查询,Aaron 和团队减少了查询时间,确保即使是最复杂的操作也能高效执行。

高效的数据检索

团队面临的主要挑战之一是“Limit By”子句的效率低下,该子句对于检索每种资产的最新价格是必要的,但本质上会扫描整个表,从而导致性能瓶颈。

为了解决这个问题,他们整合了 ClickHouse 的两个功能:AggregatedMergeTree 和物化视图。前者旨在高效存储聚合数据,允许系统仅存储最新的数据点,从而减少查询期间扫描的行数。每当新数据插入表中时,物化视图都会自动更新。通过创建仅提取最新数据的物化视图,Aaron 和团队确保在查询执行期间仅扫描相关行。

正如 Aaron 指出的那样,这种组合通过减少检索最新价格所需的计算负载,提高了查询性能。结果是数据检索过程更快、更高效,这对于维护实时分析非常重要。

管理复杂连接

Coinhall 团队面临的第三个挑战是管理复杂的连接操作,特别是排序合并连接,其中表被单独排序然后合并。由于 ClickHouse 管理合并连接的方式与其他数据库不同,Aaron 采取了一种替代方法,即尽可能避免连接或降低其复杂性。

通过重新设计他们的数据查询以最大限度地减少对连接的依赖,他们可以在不影响数据准确性或完整性的情况下保持高性能。

未来展望

在尝试了多个数据库之后,Aaron 和团队在 ClickHouse 中找到了理想的长期解决方案,这使他们能够提供基于实时分析的一流交易体验。展望未来,他们计划继续优化和扩展 ClickHouse 的使用,利用其更多功能来添加新的交易工具、改善用户体验,并将 Coinhall 定位为未来多年的数据平台,以实现增长。

来自 Coinhall 的 CTO Aaron Choo 的话:“在 Coinhall,高效管理大量区块链数据对于我们面向消费者的交易平台至关重要。最初,我们使用 BigQuery,但随着数据量的增长,其成本和性能问题也随之增加。在探索了多种替代方案后,我们发现 ClickHouse 是明显的赢家。ClickHouse 的性能明显优于我们测试过的其他数据库,如 Snowflake、Rockset 和 SingleStore,并且实现了 40 倍的成本节省。”

在此处访问 Aaron Choo 在见面会上的幻灯片:here

要了解有关 ClickHouse 及其如何使您的数据操作更快、更高效的更多信息,请加入我们的开源社区免费试用 ClickHouse Cloud 30 天

分享这篇文章

订阅我们的新闻通讯

随时了解功能发布、产品路线图、支持和云服务!
正在加载表单...
关注我们
X imageSlack imageGitHub image
Telegram imageMeetup imageRss image
©2025ClickHouse, Inc. 总部位于加利福尼亚州湾区和荷兰阿姆斯特丹。