作者:Nikhil Bhintade 编译:Cointime.com 237
随着区块链技术的进一步普及,企业正在寻求从中提取有意义的见解。要从区块链数据中提取这些见解,就必须开发一个专门设计用于此目的的强大的 ETL(Extract, Transform, Load)数据处理流水线。
然而,构建这样一个 ETL 流水线,无论是涉及多个区块链还是单个区块链的数据,都面临着自己独特的挑战
在本文中,我们深入探讨了构建区块链 ETL 流水线时遇到的关键挑战。通过了解这些挑战,您可以制定克服它们的策略。
区块链 ETL 的挑战
任何构建区块链 ETL 流水线的人都需要了解这些挑战,以更好地应对处理区块链数据的复杂性并优化 ETL 流水线。区块链 ETL 面临的挑战涵盖了从数据挑战到构建 ETL 流水线所需工具的可用性。
让我们详细了解每个挑战。
数据索引
对区块链数据进行索引是一个耗时的过程,可能需要几周或几个月,这取决于区块链的大小。例如,以太坊的区块链大小约为 14.5TB。像这样对区块链进行索引意味着处理和组织 14.5TB 的数据,根据您的要求,这将需要一段时间。
数据需求的不断变化和索引过程中的任何问题可能需要重新索引,这是一项资源密集型任务,涉及重新处理整个区块链。根据您的需求,创建一个索引服务每年将花费您从 1700 美元到 43800 美元不等的费用。例如,以下是运行图协议节点所需的硬件要求:
数据索引在 ETL 流水线中起着至关重要的作用,可以实现快速高效的数据访问。通过实施强大的错误处理和数据验证技术,可以最大程度地减少重新索引的需求。此外,对索引数据进行定期监控和维护有助于及早发现和解决潜在问题。
数据量和可扩展性
处理和管理区块链生成的大量数据是区块链 ETL 的主要挑战之一。随着数据量的增加,存储和处理需求也随之增加。
例如,截至 2023 年 6 月,以太坊区块链的大小为 14.5TB,并且每天平均增加 13-14GB的数据。
可扩展性对于确保 ETL 流水线能够处理区块链网络的高吞吐量至关重要。像 Solana 这样的区块链网络,其每秒交易处理速率在 2-4k 之间,与以太坊或比特币在将其集成到 ETL 流水线中时需要采用不同的方法。
一种有效的 ETL 解决方案必须能够随着不断增长的数据量而进行扩展,实现对一个或多个区块链的数据的无缝处理和存储。
区块链网络的持续演进
区块链网络经常进行升级和重组,这对于 ETL 流水线构成了挑战。升级会对共识算法、功能和错误修复等方面进行更改。以下是 Go-Ethereum 客户端发布的示例。正如您所看到的,这些发布频率非常高,因此 ETL 系统必须无缝地适应这些变化,确保准确处理数据。
在区块链中的链重组过程中,之前被认为是正确的区块可能会发生变化。链重组在区块链中经常发生。以下是由于链重组而从以太坊中排除的区块的示例。您可以看到这些重组发生的频率多高。
有时候社区可能会分裂并创建一个链的分叉,比如以太坊和以太经典,或者比特币和比特币现金。例如,正如我们在以太经典 51% 攻击的博客文章中讨论的那样,以太经典经历了一个显著的分叉。这些情况很少见,但根据区块链网络的当前共识更新 ETL 流水线中的数据非常重要,以确保处理数据的准确性。
数据结构和复杂性
处理来自不同区块链的不同数据结构在构建 ETL 流水线时面临着独特的挑战。让我们看一下比特币、Solana 和以太坊中交易的差异。
比特币使用 UTXO 模型,跟踪输入和输出以确定网络中的余额。
在 Solana 中,交易可以包含多个指令,这些指令是程序中的小型执行逻辑单元(在其他区块链上也称为“智能合约”)。
在以太坊的账户模型中,网络跟踪账户,这些账户可以代表个人、组织或智能合约。每个账户都有自己的地址和关联的余额。
这些交易结构的差异使得构建 ETL 流水线变得具有挑战性。将多个区块链集成到一个流水线中增加了复杂性,因为您需要处理各种不同的数据结构。
数据质量挑战
保持高数据质量是区块链 ETL 流水线的关键方面之一。
在处理大量数据时,区块链 ETL 流水线可能会出现缺失或重复的数据。缺失或重复的数据可能由于网络问题或数据源中的间隙等原因而发生。实施强大的数据验证技术和错误处理机制对于将缺失或重复的数据对整体流水线的影响降至最低是至关重要的。
区块链数据可能非常复杂,并且需要仔细解释。数据工程师需要理解区块链网络的复杂性,例如不同的交易类型、智能合约和代币标准。错误解读或误传数据可能导致错误的分析和决策。确保数据工程师对区块链概念和协议有深入的理解对于准确解释数据至关重要。
在区块链领域雇佣熟练的数据工程师可能会很昂贵。对具有区块链技术和 ETL 流程专业知识的经验丰富专业人员的需求往往推高了平均工资水平。
通过实施强大的数据验证技术和去重机制,并投资于熟练的数据工程师,组织可以克服这些挑战,确保他们的区块链 ETL 流水线的可靠性和准确性。
开源ETL软件
在构建区块链 ETL 流水线时,您有两个选择:构建定制解决方案或使用现有的开源工具。定制解决方案需要很多时间,容易出错,并且可能不易扩展。
另一方面,开源 ETL 软件提供预构建的功能和更快的实施速度。找到适用于比特币和以太坊等热门区块链的 ETL 软件非常简单。其中一个针对以太坊网络的热门开源 ETL 软件是ethereum-etl,在下图中可以看到它多年来一直得到维护:
然而,对于某些区块链来说,寻找开源解决方案可能是具有挑战性的,并且可能没有每个开源解决方案的活跃社区支持。对于某些区块链,您会发现它们是开源的,但它们可能没有得到维护以跟上网络中的变化。以下是 Solana、EOS 和 Tezos 的开源解决方案。
对于其他链,比如 Algorand、Flow、Harmony 等,并没有提供开源的替代方案。
公开可用的区块链数据集
有一些由 Google BigQuery 和 AWS 等平台提供的不同区块链的公共数据集,为 ETL 流水线提供了方便的访问。
然而,值得注意的是,像 Google BigQuery 和 AWS 这样的平台上的公共数据集存在一定的限制。这些数据集可能存在数据延迟和模式约束,并且仅提供有限数量的区块链网络的数据。
这些数据集的限制包括区块链产品的数量和更新频率。这些数据集通常每天更新一次,而不是实时更新。因此,如果您的 ETL 流水线完全依赖这些公共数据集,它可能会落后于最新数据高达一天。
虽然这些公共可用的数据集提供了基本的信息,如交易、区块和跟踪,但它们可能无法提供特定用例的全面数据,例如合约调用或去中心化金融(DeFi)交易数据。重要的是要考虑这些限制,并评估是否需要额外的数据源或替代方法来满足您的特定数据需求。
节点依赖
在使用区块链节点消耗区块链数据时,考虑到依赖区块链节点可能存在的问题是很重要的。区块链节点可能面临技术问题、停机时间或提供不一致的数据。
例如,如果一个节点遇到技术问题或下线,它可能导致数据提取延迟和不完整,从而导致数据集中出现间断。
一个强大的 ETL 流水线应该利用多个节点使系统具备冗余性,并最小化依赖单个节点可能引发的问题。
实时数据挑战
实时数据处理对区块链 ETL 带来了重大挑战。由于区块链的持续运作和频繁更新,不同节点可能对当前状态有不同的观点。
在区块链网络中,当多个区块生成时,网络通过共识机制确定哪个区块被视为有效,并将其添加为链中的最新区块。这种共识机制确保网络中的所有参与者对区块链的当前状态达成一致意见,并添加所选的区块以维护一致且准确的交易记录。因此,同一高度的其他区块被丢弃,可能消除了未连接到链中最新区块的多个分支。
由于共识机制的存在,实现明确和一致的状态需要时间。ETL 流程必须有效地适应这些不断变化的网络状态,确保数据同步、一致性和可靠性,尽管可能存在延迟。
Bitquery 如何解决这些问题?
Bitquery 通过提供针对索引化区块链数据的不同解决方案来解决这些问题。如果您正在构建区块链 ETL 流程,Bitquery 的 Streaming APIs 和 Data in Cloud 产品将解决我们上面讨论的大部分挑战。
借助 Bitquery 的 Streaming APIs,您可以访问实时和即时数据,确保您的 ETL 流程具有准确和最新的信息。这些 API 旨在为 Ethereum、BSC 和 Arbitrum 网络提供可靠和及时的数据,并将很快添加更多网络的支持。
Bitquery 的 Data in Cloud 产品非常适合消耗 Ethereum 数据的 ETL流程。它提供了来自Ethereum 主网的全面数据集,包括原始数据和后处理数据。这使得处理和分析变得高效,帮助您构建针对 Ethereum 定制的强大而有效的 ETL 流程。
结论:是否应该构建整个 ETL 流程?
在考虑是自己构建整个 ETL 流程还是将某些部分外包给服务提供商时,需要考虑多个因素。
如果您的 ETL 流程用于非时间敏感目的或仅涉及有限数量的区块链,那么构建自己的解决方案或使用免费可用的数据可能是可行的选择,因为涉及的复杂性较低。
然而,对于时间敏感的 ETL 流程或涉及多个区块链的情况,将某些方面(如数据索引)外包给像 Bitquery 这样的专业服务提供商可能更为实际。这可以利用他们的专业知识和现有基础设施,节省时间并减少与维护整个流程相关的成本。
最终,构建还是购买的决策取决于项目的具体要求,需要平衡复杂性、时间敏感性和相关成本。
所有评论