DoubleCloud 即将关闭。利用限时免费迁移服务迁移到 ClickHouse。立即联系我们 ->->

博客 / 用户案例

商业秘密:Coinhall 如何利用 ClickHouse 为其区块链数据平台提供动力

author avatar
ClickHouse 团队
2024 年 8 月 14 日


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 毫秒。最后,它在 50 毫秒内处理了 ASOF JOIN 查询,而 Snowflake 则需要 20 分钟,Rockset 则超时。

ClickHouse 在成本效益方面也轻松获胜。虽然其他三种托管服务每月成本高达 2000 美元,但自托管 ClickHouse 显然是最具成本效益的选择,每月仅需 50 美元。它只需 4 个 vCPU 和 16 GB 的内存即可实现这些结果,这使得它成为像 Coinhall 这样的小型但正在成长中的公司的理想选择,他们需要将运营成本保持在较低水平,同时确保高性能。

coinhall-img1.png

经验教训和优化

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

随着他们对 ClickHouse 的使用越来越熟练,Aaron 和他的团队已经进行了许多优化,旨在提高速度和效率

性能调整

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

Aaron 查阅了 ClickHouse 的文档,特别是 有关稀疏主索引的指南,他称其为“如果你想使用 ClickHouse,那么这是最好的资源”。通过遵循最佳实践并微调他们的查询,Aaron 和他的团队已经缩短了查询时间,确保即使是最复杂的运算也能高效执行。

高效数据检索

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

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

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

管理复杂的联接

Coinhall 团队面临的第三个挑战是管理复杂的联接运算,特别是排序合并联接,其中表被单独排序,然后合并。由于 ClickHouse 管理合并联接的方式不同于其他数据库,因此 Aaron 采取了另一种方法,要么尽可能避免联接,要么降低联接的复杂性。

通过重新设计数据查询以最大程度减少对联接的依赖,他们可以保持高性能,而不会影响数据准确性或完整性。

展望未来

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

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

访问 Aaron Choo 在聚会上的幻灯片 这里.

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

分享这篇文章

订阅我们的时事通讯

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