

作者:Vijay Shekhawat:TRM Labs 数据平台团队核心成员,精通实时流处理、数据湖仓架构及构建安全、高吞吐的数据分析管道,在推动 PB 级数据处理能力方面发挥了关键作用。
Andrew Fisher:TRM Labs 资深软件工程师,擅长大规模批处理数据加载与数据湖仓方案,为应对加密欺诈提供坚实的数据基础和分析能力。
导读:开源无国界,在本期“StarRocks 全球用户精选案例”专栏中,我们将介绍区块链情报公司 TRM Labs 的数据平台演进实践。
作为一家致力于打击加密金融犯罪的技术公司,TRM Labs 为全球金融机构、加密企业与政府部门提供链上数据分析与情报支持。其平台需处理来自 30 多条区块链的 PB 级数据,并以亚秒级响应支撑每分钟超过 500 次的查询请求。
最初,TRM 构建于分布式 Postgres 与 BigQuery 之上,并通过持续优化应对业务增长。但随着本地化部署与多环境需求的兴起,现有架构面临性能与成本的双重挑战。
为此,TRM 转向开源生态,基于 Apache Iceberg 与 StarRocks 构建新一代数据湖仓架构,用于支撑面向用户的分析业务。
本文主要围绕该方案的选型思路、架构设计与性能验证展开分享,并结合真实经验探讨为何这套体系值得更多团队参考与借鉴。在本系列的下一篇中,将聚焦架构的具体落地实践,包括如何基于对象存储部署 Apache Iceberg,以及如何优化 StarRocks 以支持本地部署等多环境需求。
TRM 的第一代数据平台采用分布式 Postgres(Citus Data)集群,支持快速点查与小规模预聚合。当查询负载超出集群承载能力时,大型查询和临时聚合任务则转交 BigQuery 处理。

(图 1,展示了 TRM 第一代数据平台如何处理面向用户的分析,并通过 Postgres 和 BigQuery 路由查询)
尽管 BigQuery 多年来在客户分析场景中表现稳定,但随着平台向多环境部署(包括本地部署)扩展,其局限性日益显现。
我们需要在多个站点之间共享区块链分析数据,而 BigQuery 作为托管服务,并不适合这一需求。同时,面向用户的查询工作负载也需要全新的扩展方式。
因此,我们的新一代数据平台必须兼顾数据湖的灵活性与数仓的性能与可靠性。我们基于 Apache Iceberg 构建现代化数据湖仓架构,借助其开放规范实现与多种查询与计算引擎的良好互通性。经过多轮对比测试后,我们最终选择 StarRocks 作为查询引擎。
Iceberg 与 StarRocks 的组合不仅满足了多站点部署和性能要求,也为平台的长期演进打下了坚实基础。
随着多环境部署(包括本地部署)成为核心需求,我们需要为面向客户的分析(customer-facing analytics)使用场景找到一个替代方案。
基于使用 BigQuery 和 Postgres 的经验,总结出以下几点关键观察:
基于上述洞察,我们不再局限于传统 OLAP 存储方案(如 ClickHouse),而是开始探索更具潜力的 Data Lakehouse 架构。重点关注两个方面:存储格式的选型,以及查询引擎的选择。
随着高吞吐区块链的不断出现,TRM 的存储需求每年呈指数级增长。为支持更多区块链接入,必须确保存储系统具备良好的性能和成本可控性。
从成本出发,首先明确了需要从 SSD 迁移到对象存储——即便是最昂贵的对象存储,其价格也仅为最便宜 SSD 的四分之一。
在确定采用对象存储后,我们对当前构建数据湖仓最主流的三种表格式进行了评估。

尽管 Delta Lake 在功能和性能上表现不错,但由于不支持分区演进,且在大规模分析与批处理场景中与 Iceberg 重叠较多,最终未被采纳。
随后测试了 Apache Hudi,即使在最佳配置下,查询性能仍比 Iceberg 慢约三倍。
综合考虑性能、生态与兼容性,我们最终选择了 Apache Iceberg:读取效率出色,社区活跃,且能良好适配各种元数据目录与查询引擎。
确定表格存储格式后,我们对多款支持 Iceberg 的开源查询引擎进行了基准测试,最终聚焦评估 Trino、StarRocks 和 DuckDB 三款引擎。测试结果显示,StarRocks 在多个维度上的表现始终优于其他引擎(见下方图 2)。

(图 2,展示了三款查询引擎在 2.57 TB 区块链分析数据集上,执行查找与过滤操作的性能对比。无论配置如何,StarRocks 的响应时间始终优于其他引擎,表现最为稳定出色。)
测试聚焦于两类核心查询场景:带过滤条件的点查(point-lookup)和复杂聚合查询。通过 JMeter 进行负载压测,评估各查询引擎在高并发下的性能稳定性。
图 2 展示了在该类负载下的测试结果:对 2.57 TB 数据集执行点查与范围查找(range lookup)操作,评估查询子集的响应性能。结果如下:

(图 3,在复杂聚合查询场景中,Trino 与 StarRocks 在不同集群配置下的基准测试对比结果。)
在本轮测试中,数据集扩展至 2.85 TB,查询包含 SUM、COUNT、GROUP BY 等聚合操作,并叠加数组与日期范围过滤条件。测试结果如下:
采用 JMeter 对 Trino 与 StarRocks 在高并发场景下进行性能压力测试,结果如下:


(图5,面向用户分析场景的下一代数据平台架构)
在综合评估三种开源表格式及多款查询引擎后,我们最终选定 Apache Iceberg 与 StarRocks 作为核心组件,构建 TRM 的下一代数据平台,既满足多站点部署需求,又显著提升客户侧分析性能。
在本系列的下一篇中,我们将聚焦架构落地实践,包括如何基于对象存储部署 Apache Iceberg,以及如何优化 StarRocks 实现多环境支持(如本地部署等)。
为便于阅读,本文删减了许多原文中对实验细节的详细描述。感兴趣的读者可参考原文了解更多信息:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。