Iceberg-Trino 如何解决链上数据面临的挑战

news2024/11/24 9:52:02

 1.链上数据处理面临的挑战

区块链数据公司,在索引以及处理链上数据时,可能会面临一些挑战,包括:

  • 海量数据。随着区块链上数据量的增加,数据索引将需要扩大规模以处理增加的负载并提供对数据的有效访问。因此,它导致了更高的存储成本;缓慢的指标计算和增加数据库服务器的负载。

  • 复杂的数据生产流程。区块链技术是复杂的,建立一个全面和可靠的数据索引需要对底层数据结构和算法有深刻的理解。这是由区块链实现方式的多样性所决定的。举一个具体的例子,以太坊中的 NFT 通常是在遵循 ERC721 和 ERC1155 格式的智能合约中进行创建的,而像Polkadot 上通常是直接在区块链运行时间内构建的。对于用户来说,不管是任何形式的存在,这些数据应该被视为 NFT 的交易,需要被存储,并且处理为可读状态,方便分析以及进行计算。

  • 集成能力。为了给用户提供最大的价值,区块链索引解决方案可能需要将其数据索引与其他系统集成,如分析平台或 API。这很有挑战性,需要在架构设计上投入大量精力。

随着区块链技术的使用越来越广泛,存储在区块链上的数据量也在增加。这是因为更多的人在使用该技术,而每笔交易都会给区块链增加新的数据。此外,区块链技术的使用已经从简单的资金转移应用,如涉及使用比特币的应用,发展到更复杂的应用,包括智能合约之间的相互调用。这些智能合约可以产生大量的数据,从而造成了区块链数据的复杂性和规模的增加。随着时间的推移,这导致了更大、更复杂的区块链数据。

本文中,我们将以 Footprint Analytics 的技术架构演变作为分析案例,探索 Iceberg-Trino 如何解决链上数据面临的挑战。

Footprint Analytics 拥有最全面的链上数据索引仓库,目前涵盖 22 个公链,17 个 NFT 市场,超过 1900 个 GameFi 项目,以及超过 66 万个 NFT 收藏。当我们谈及 22 条公链底层数据时,不同与其他行业,区块链的数据大部分都是交易数据,而非单纯传统行业的日志数据,22 条公链大概数量级行数大概是 200 亿以上,而这些是经常需要被查询的数据。

在过去几个月中,我们经历了以下三次大的系统版本升级,以满足不断增长的业务需求:

2. 架构 1.0 Bigquery

在 Footprint Analytics 初创阶段,我们使用 Bigquery 作为存储和查询引擎。Bigquery 是一款优秀的产品,它提供的动态算力,和灵活的 UDF 语法帮助我们解决了很多问题。

不过 Bigquery 也存在着一些问题:

  • 数据没有经过压缩,存储费用过高,特别是我们需要存储将近 20 条区块链的原始数据;

  • 并发能力不足:Bigquery 同时运行的 Query 只有 100 条,不能为 Footprint Analytics 提供高并发查询;

  • 非开源产品,绑定 Google 一家供应商。

所以我们决定探索新架构。

3. 架构 2.0 OLAP

我们对最近很火热的 OLAP 产品非常感兴趣,OLAP 让人印象深刻的地方就是其查询反应速度,仅需亚秒级响应时间即可返回海量数据下的查询结果,对高并发的点查询场景也支持比较好。

我们挑选了其中一款 OLAP 数据库,Doris 进行了深入的尝试。

但是很快,我们碰到了以下问题:

  • 不支持 Array JSON 等数据类型

    • 在区块链的数据中,数组 Array  是个很常见的类型,例如 evm logs 中的 topic 字段,无法对 Array 进行计算处理,会影响我们计算很多指标。

  • DBT 支持有限,不支持 merge 语法来 update data

    • DBT 是数据工程师比较典型的处理ETL/ELT 的工具,尤其是Footprint Analytics 团队。merge and update这也是很常见的需求,我们需要对一些新探索的数据进行更新操作。

也就是说,我们无法在 Doris 上完成我们的数据生产流程,所以我们退而求其次,让 OLAP 数据库解决我们的部分问题,作为查询引擎,提供快速且高并发的查询能力。

很遗憾的是,该方案 无法将 Bigquery 作为 Data Source替换掉,我们必须把不断地把 Bigquery 上的数据进行同步,同步程序的不稳定性给我们带来了非常多的麻烦,因为在使用存算分离的架构,当其查询压力过大时,也会影响写入程序的速度,造成写入数据堆积,同步无法继续进行吗,我们需要有固定的人员来处理这些同步问题。

我们意识到,OLAP 可以解决我们所面临的几个问题,但不能成为 Footprint Analytics 的全套解决方案,特别是在数据处理以及生产方面。我们的问题更大更复杂,我们可以说,OLAP 作为一个查询引擎对我们来说是不够的。

4. 架构 3.0 Iceberg + Trino

在 Footprint Analytics 架构 3.0 的升级中,我们从头开始重新设计了整个架构,将数据的存储、计算和查询分成三个不同的部分。从 Footprint Analytics 早期的两个架构中吸取教训,并从其他成功的大数据项目中学习经验,如 Uber、Netflix 和 Databricks。

4.1. 数据湖的引入

我们首先把注意力转向了数据湖,这是一种新型的结构化和非结构化数据的存储方式。数据湖非常适合链上数据的存储,因为链上数据的格式范围很广,从非结构化的原始数据到结构化的抽象数据,都是 Footprint Analytics 特色亮点。我们期望用数据湖来解决数据存储的问题,最好还能支持主流的计算引擎,如 Spark 和 Flink,这样随着 Footprint Analytics的发展,与不同类型的处理引擎整合起来能更容易,更具备拓展性。

Iceberg 可以与 Spark,Flink,Trino 等计算引擎都有着非常良好的集成,我们可以为我们的每一个指标选择最合适的计算方式。例如:

  • 需要复杂计算逻辑的,选择 Spark;

  • 需要实时计算的,选择 Flink;

  • 使用 SQL 就能胜任的简单 ETL 任务,选择 Trino。

4.2. 查询引擎

有了 Iceberg 解决了存储和计算的问题,我们接下来就要思考,如何选择查询引擎。实际上可以选的方案不多,备选的有:

  • Trino: SQL Query Engine

  • Presto: SQL Query Engine

  • Kyuubi​:Serverless Spark SQL

在深度使用之前,我们考虑最多的是,未来的查询引擎必须要兼容我们当前的架构。

  • 要支持将 Bigquery 作为 Data Source

  • 要支持 DBT,我们要很多指标是依赖 DBT 完成生产的

  • 要支持 BI 工具 metabase

基于以上个点,我们选择了 Trino,Trino 对 Iceberg 的支持非常完善,而且团队执行力非常强,我们提了一个 BUG,在第二天就被修复,并且在第二周就发布到了最新版本中。这对同样要求高执行响应速度的 Footprint Analytics 团队,无疑是最佳选择。

4.3 性能测试

选定了方向之后,我们对 Trino+Iceberg 这个组合做了个性能测试,以确定其性能是否能满足我们的需求,结果出乎我们依赖,查询速度不可思议地快。

要知道,在各大 OLAP 的宣传文章中,Presto + Hive 可是常年作为最差的对比项存在的,Trino + Iceberg 的组合完全刷新了我们的认知。

下面是我们的测试结果:

case 1: join  big table

一个 800 GB 的 table1 join 另一个 50 GB 的 table2 并做复杂业务计算

case2: 大单表做 distinct 查询

测试用的 sql : select distinct(address) from table group by day 

相同配置下,Trino+Iceberg 组合速度大约是 Doris 的 3 倍。

除此之前,还有一个惊喜,因为 Iceberg 底层可以使用 Parquet、ORC 等 data format,会对数据进行压缩存储,Icberg 的 table 存储空间只需要其他数据仓库的 1/5 左右。

同样一个 table,在三个数据库中的存储大小分别是:

注:以上测试都是我们实际生产中碰到的个别业务例子,结论不严谨,仅供参考。

4.4 升级效果

性能测试报告给了我们足够的性能,我们团队使用了大概 2 个月时间来完成迁移,这个是我们升级之后的架构图:

  • 丰富的计算引擎让我们可以应对各种计算需求;

  • Trino 可以直接查询 Iceberg,我们再也不用处理数据同步问题;

  • Trino + Iceberg 让人惊艳的性能,让我们可以开放所有 Bronze 数据给到用户。

总结

自2021年8月推出以来,Footprint Analytics 团队在不到一年半的时间里完成了三次架构升级,这得益于其为加密货币用户带来最佳数据库技术优势的强烈愿望和决心,以及在实施和升级其底层基础设施和架构方面的扎实执行。

  • Footprint Analytics 架构升级3.0为其用户买到了全新的体验,让来自不同背景的用户在更多样化的使用和应用中获得洞察力。

  • 与 Metabase 商业智能工具一起构建的 Footprint 便于分析师获得已解析的链上数据,完全自由地选择工具(无代码或编写代码 )进行探索,查询整个历史,交叉检查数据集,在短时间内获得洞察力。

  • 整合链上和链下的数据,在 web2 和 web3 之间进行分析。

  • 通过在 Footprint 的业务抽象之上建立/查询指标,分析师或开发人员可以节省80% 的重复性数据处理工作的时间,并专注于有意义的指标,研究和基于其业务的产品解决方案。

  • 从Footprint Web 到 REST API 调用的无缝体验,都是基于 SQL 的。

  • 对关键信号进行实时提醒和可操作的通知,以支持投资决策。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/115547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

应用层概述(计算机网络-应用层)

目录 网络应用 网络应用程序体系结构 客户/服务器体系结构 P2P对等体系结构 网络应用程序体系结构 应用层协议 网络应用 网络应用是计算机网络体系结构的最上层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分 我们以一些经典的…

如何选择一个合适的Web存储方案

Web客户端存储是一个现代Web应用必不可少的功能,常见的有Cookie、WebStorage和IndexedDB等,如何选择一个合适的Web存储方案呢? 一. Cookie 1. 为什么要有Cookie? HTTP协议是无状态的,即一次请求和响应就是一次完整地HTTP通信&…

Oracle监听报错相关问题汇总

监听服务报错问题汇总: 1.Windows 2008系统下oracle 11g监听异常死机,无法连接 **C:\Users\administrator>lsnrctl status LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 16-9月 -2020 10:09:26 Copyright (c) 1991, 2010, Orac…

(十六).net学习之SOA-WebService

SOA-WebService一、SOA的思想,分布式服务1.SOA2.优势3.数据总线二、建立webservice1.关于webservice2.具体实现三、WCF多宿主协议1、自托管宿主2、windows service宿主3、IIS宿主4、WAS宿主一、SOA的思想,分布式服务 1.SOA SOA:面向服务架构&#xff0…

一个umi4的项目适配到FireFox60.7.1esr版本上的从头到尾

项目场景: 一个使用umi4创建的大屏项目,用户的浏览器使用的是火狐60.7.1的稳定版。然后就报错了!!! 为什么不让用户换谷歌嘞,咱也不知道。那咱就搞兼容吧~~ 贴个浏览器的版本图片: 问题历程 …

【springboot】从解决@valid失效问题 到根据判断放行的更灵活替代方案 再到优雅的打日志

文章目录前言valid失效问题替代方案前言 valid 可以帮助我们节省很多代码 比较方便 但操作失误时 可能会失效 达不到我们预期效果; valid会有个问题 因为注解过于方便 反而会导致拦截后 错误日志的收集会比较麻烦 ,以及在面对有时需要拦截 有时不需要拦截…

机器学习中的模型选择和评估

机器学习中的模型选择和评估1. 介绍2. 模型拟合效果2.1欠拟合与过拟合表现方式2.2 避免欠拟合与过拟合的方法3.实例分析3.1鸢尾花数据集3.2 对鸢尾花数据进行聚类1. 介绍 在机器学习系统中,如何训练出更好的模型、如何判断模型的效果,以及模型是否过拟合…

【内存对齐】一篇文章带你看懂内存对齐(万字详细介绍+代码样例)

目录 为什么需要内存对齐 性能 范围 原子性 结论 数据模型 C 的内存对齐 具名要求 平凡类 标准布局类 平凡类与标准布局类总结 标准布局类的内存对齐 普通的标准布局类 带有位域的标准布局类 手动指定对齐大小的标准布局类 非标准布局类的内存对齐 GLSLang 的…

分布式事务(3):AT模式实战-Seata

1 介绍 Seata(Simple Extensible Autonomous Transaction Architecture,简单可扩展自治事务框架)是 2019 年 1 月份蚂蚁金服和阿里巴巴共同开源的分布式事务解决方案。Seata 开源半年左右,目前已经有接近一万 star,社…

信息系统项目管理师考试总结

1、结果展示 从结果上看,论文刚刚过,案例分析差两份,选择题差五分。 问题一:案例分析中,计算题可以拿到分,提高案例分析的通过率。计算题比较客观。可以在下一次考试中多准备准备。 问题二:客观…

QUIC的诞生

背景 自1999年HTTP/1.1被提出以来,它已经稳定地被使用超过了20个年头。不过经典并不意味着完美,HTTP/1.1中一个连接同一时刻只能处理一个HTTP请求,如果当前的请求没有结束之前,其他的请求只能处于阻塞状 态。这一“对头阻塞”问题…

权限管理的配置思路

1.在main.js中引入permission.js 2.permission.js中通过vuex中getters.access_token进行路由的重定向 直接import ‘.permission’

MSF基本使用和控制台命令

前言 ● Msfconsole使用接口 ○ 最流行的用户接口 ○ 几乎可以使用全部MSF功能 ○ 控制台命令支持TAB自动补全 ○ 支持外部命令的执行(系统命令等) ○ 点击鼠标启动 / msfconsole -h -q -r -v / exit ○ help / ? / help vulns 控制台命令 …

【Python】利用Python实现精准三点定位(经纬度坐标与平面坐标转换法求解)

【Python】利用Python实现精准三点定位(经纬度坐标与平面坐标转换法求解) 众所周知,如果已知三个点的坐标,到一个未知点的距离,则可以利用以距离为半径画圆的方式来求得未知点坐标。 如果只有两个已知点,则…

【Array数组】面试前基础知识点深度记忆总结

写本篇博客的原因是发现有人遇到了以下误区, 1、在我面试别人的过程中,我想让他说一下数组的一些内置方法和含义,然后他条例思路不太清晰,跳动着说,所以遗漏了很多,或许按照es5到es6是一个指导顺序&#xf…

51单片机——独立按键实验,小白讲解,相互学习

按键介绍: 按键是一种电子开关,使用时轻轻按开关按钮就可式开关接通,当松手时,开关断开。开发板上使用的按键及内部简易图如下图: 按键管脚两端距离长的表示默认是导通状态,距离短的默认是断开状态&#xf…

Pandas-根据数据表1中的字段a,筛选出数据表2中也包含字段a的数据

前言 本文是该专栏的第18篇,后面会持续分享python的数据分析知识,记得关注。 假设现在有个数据分析的需求,如下: 数据表1中有几十万条数据,数据表2中有几万条数据,两张数据表1和2有两个相同的字段phone,现在需要将数据表1和数据表2中,phone字段存在相同的行,保留下来…

redis集群操作

Redis集群1 集群2 集群架构图3 集群细节4 集群搭建4.1.创建集群4.2.查看集群状态4.3.添加主节点4.4.添加从节点4.5.删除副本节点4.6.集群在线分片1 集群 Redis在3.0后开始支持Cluster(模式)模式,目前redis的集群支持节点的自动发现,支持slave-master选举…

Nmap系统扫描实战

今天继续给大家介绍渗透测试相关知识,本文主要内容是Nmap系统扫描实战。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授权设备…

解决Win系统cad激活安装失败问题,AutoCad 2022 中文/英文正式详细安装教程

Autodesk AutoCAD 2022简称“cad 2022”是一款功能强大的CAD三维绘图辅助设计软件。autocad 2022适用于二维绘图、详细绘制、设计文档和基本三维设计,广泛应用于机械设计、工业制图、工程制图、土木建筑、装饰装潢、服装加工等多个行业领域。CAD2022新特征&#xff…