队长:胡绍洲
队员:黄光均、刘宏彬、徐高松
由于链上数据的存储特点,只能通过接口方式从链上直接获取,这种方式需要针对智能合约接口编写大量的代码,成本很高;同时从链上读取数据,除过网络开销,还需要进行解码操作,甚至遍历MPT树等,读取性能差;更重要的是,不能直接在链上进行全局数据处理,从而无法满足大数据场景的需求,比如复杂查询、大数据挖掘和分析等。 我们致力于提供一种自动化、智能化的数据导出解决方案,通过不断迭代完善,满足用户基于数据导出的各种诉求。 初步架构如下所示,其目的在于降低获取区块数据的开发门槛,提升数据获取效率,支持大数据处理,用户只需要进行简单配置,就可以把区块数据导出到指定的存储介质上,比如支持复杂的关系查询、大数据挖掘的数据库或大数据平台上。 包括四个模块:区块获取模块、区块处理模块、持久化模块和数据分析模块
- 区块获取模块:根据区块ID获取相应的区块;
- 区块数据处理:解析区块数据、区块交易数据;
- 账户数据处理:解析区块链账户数据;
- 数据分析处理:针对需求自动处理相关消息数据。 在数据管理方面主要采用k8s的TiDB,以一个master和许多的工作节点slaver提高程序的高可用性,减少每个服务器的体量来平摊负载,让我们的程序管理更简洁,k8s 所有的 pod 都被放置在kube-system命名空间下,用命名空间来做权限控制,配合区块链平台设计存储接口,将为我们程序管理的创建、修改及删除资源提供帮助,通过人工修改某个配置项来解决某些管理上的问题。
区块链上数据的存储特点,只能通过接口方式从链上直接获取,这种方式需要针对智能合约接口编写大量的代码,成本很高;同时从链上读取数据,除过网络开销,还需要进行解码操作,甚至遍历MPT树等,读取性能差;更重要的是,不能直接在链上进行全局数据处理,从而无法满足大数据场景的需求,比如复杂查询、大数据挖掘和分析等,因此需要对数据进行挖掘变得很困难。
为了实现区块链数据集的大数据处理功能,并且达到期望所有效果,我们基于TIDB开发了一些模块应用: 数据获取模块:支持将某一链上数据导入导出至k8s的TiDB集群功能 数据分析模块:对导入的数据可以支持一键分析的功能,在TiDB的加持下获取加速获取对应的账户、token以及区块信息