
本文字数:3025;估计阅读时间:8 分钟
Meetup活动
ClickHouse Guangzhou User Group第1届 Meetup火热报名中,详见文末海报!


Coinhall 是一个跨链交易终端,通过汇总来自 23 个不同区块链网络的交易数据,提供实时价格图表,优化交易机会。成立于 2021 年的平台为用户提供全面的交易工具,以及在去中心化交易所中实现最佳兑换率的功能。
为了管理来自多个来源的大量区块链数据,Coinhall 需要顶级的性能和可扩展性。速度支持实时分析,确保用户能够及时做出交易决策,而高效的成本控制帮助公司在竞争中保持优势、优化资源分配,并支持未来的增长。
两年前,Coinhall 的联合创始人兼 CTO Aaron Choo 带领团队进行了数据架构的转型。在最近的新加坡见面会上,Aaron 分享了自从引入 ClickHouse 后取得的显著成果。

Aaron 于 2021 年 8 月启动了 Coinhall,当时他还是一名计算机科学专业的学生,几乎没有任何职业经验,更谈不上数据库管理系统的专业知识。
最初,他基于 BigQuery 构建了平台,因为他在大学期间使用过 Google Cloud Platform,且其免费套餐相对友好。最初一切运行顺利,但 Aaron 表示,随着时间推移,团队逐渐遇到了性能和成本方面的问题。
“查询平均需要大约两秒钟才能完成,”Aaron 说道。“这对其他场景来说可能无所谓,但作为面向消费者的交易产品,如果加载数据需要等待几秒钟,这就成了一个大问题。”
他们还很快超过了 BigQuery 的免费套餐,每天运行两百万次查询,扫描超过 150TB 的数据。随着每月花费数千美元却无法获得理想的性能,他们意识到是时候做出改变了。
选择 ClickHouse
Aaron 迅速通过 Google 搜索“时间序列数据库”,找到了一些选项,并在 2021 年 10 月将平台迁移至 QuestDB。他选择 QuestDB 的部分原因在于,他希望找到一个可以自行管理的解决方案。虽然 QuestDB 在性能上优于 BigQuery,但到 2022 年中期,他对该数据库的开发资源和功能不足感到失望。
这一次,Aaron 希望找到一个更长远的解决方案,于是他进行了更全面的搜索,参考了在线评论和外部基准测试,以寻找最适合 Coinhall 需求的数据库。在初期评估中,他发现 ClickHouse 在复杂性之外的所有方面都占据优势,但复杂性并不是他担心的问题,因为他认为这是可以掌控的。
“作为开发人员,你总是可以学习、提升,并改善自己的使用体验,”他说。
在评估过程中,Aaron 特别关注了每个数据库处理 K 线图查询的能力。K 线图对于像 Coinhall 这样的交易平台至关重要,因为它们可以直观地展示价格随时间的变动,显示每个交易周期的开盘价、最高价、最低价和收盘价。要实现实时交易分析,Coinhall 需要一个能够快速、大规模执行这些查询的数据库。
Aaron 将候选数据库缩小至 Rockset、SingleStore、Snowflake 和 ClickHouse。在性能测试中,ClickHouse 表现明显优于其他选项,能够在 20 毫秒内执行 K 线图查询,而其他数据库的查询时间则需 400 毫秒或更长。ClickHouse 还能在 8 毫秒内完成最新价格查询,远超表现第二好的 SingleStore(45 毫秒)。此外,ClickHouse 在 50 毫秒内完成了 ASOF JOIN 查询,而 Snowflake 则需要 20 分钟,Rockset 甚至直接超时。
ClickHouse 在成本效益方面也轻松胜出。虽然其他三种托管服务的成本高达每月 2,000 美元,自托管 ClickHouse 的成本仅为每月 50 美元。凭借 4 个 vCPU 和 16 GB 内存,ClickHouse 交付了优异的性能,成为像 Coinhall 这样的小型、快速发展的公司的理想选择,既能控制运营成本,又能确保高性能。

经验与优化
Aaron 和他的团队于 2022 年 7 月开始将平台迁移至 ClickHouse。正如 Aaron 所说,“过程并不轻松,因为我们当时有多个服务在运行。”但到 10 月,他们成功将 ClickHouse 完全作为主要数据库管理系统。
随着团队对 ClickHouse 的熟悉,他们进行了多项优化,以提升系统速度和效率:
性能调优
正如 Aaron 所言,“数据库的速度取决于最慢的查询。”在早期实施过程中,团队遇到了性能瓶颈,导致某些查询变慢。这些瓶颈源自 ClickHouse 与其他数据库的差异。
Aaron 查阅了 ClickHouse 的文档,尤其是关于稀疏主索引的指南,他称其为“使用 ClickHouse 的最佳资源。”通过遵循最佳实践并对查询进行优化调整,团队显著减少了查询时间,确保复杂操作的高效执行。
高效数据检索
团队面临的一个主要挑战是 "Limit By" 子句的低效,该子句用于检索每个资产的最新价格,但会导致全表扫描,进而影响性能。
为了解决这个问题,他们引入了 AggregatedMergeTree 和物化视图两大功能。AggregatedMergeTree 用于高效存储聚合数据,只保留最新数据点,从而减少查询时的扫描行数;物化视图则在数据插入时自动更新,通过仅提取最新数据,显著提升查询速度。
正如 Aaron 所言,这种组合降低了获取最新价格的计算负载,大大提升了查询性能,使数据检索更快、更高效,有助于维持实时分析。
管理复杂的 Join 操作
Coinhall 团队还面临着管理复杂 Join 操作的挑战,尤其是排序合并 Join。由于 ClickHouse 处理合并 Join 的方式不同于其他数据库,Aaron 采取了替代方案,尽量避免复杂的 Join 操作或简化其复杂性。
通过重新设计查询,减少对 Join 的依赖,他们在不影响数据准确性和完整性的情况下,保持了系统的高性能。

经过多次尝试,Aaron 和他的团队最终选择了 ClickHouse 作为长期解决方案,借助实时分析提供优质的交易体验。未来,他们计划继续优化和扩展 ClickHouse 的使用,利用更多功能来开发新的交易工具,提升用户体验,助力 Coinhall 在数据平台领域的长期发展。
Coinhall 的 CTO Aaron Choo 表示:"在 Coinhall,有效管理海量区块链数据对我们的面向消费者的交易平台至关重要。我们最初使用 BigQuery,但随着数据增长,成本和性能问题接踵而至。经过多方探索,我们最终发现 ClickHouse 是最佳选择。ClickHouse 不仅在性能上远超其他数据库,如 Snowflake、Rockset 和 SingleStore,还为我们节省了 40 倍的成本。"
点击此处查看 Aaron Choo 在见面会上的演示幻灯片。【https://aaroncql.github.io/clickhouse-presentation-110724/1】

好消息:ClickHouse Guangzhou User Group第1届 Meetup 已经开放报名了,将于2024年8月25日在广州天河区林和中路6号 海航威斯汀酒店 5楼多功能3厅举行,扫码免费报名


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






