Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save raspberry-hu/3c4063581a7fde1d8906b53b9625b045 to your computer and use it in GitHub Desktop.

Select an option

Save raspberry-hu/3c4063581a7fde1d8906b53b9625b045 to your computer and use it in GitHub Desktop.
TIDB Hackathon 2022 RFC Template

TiDB区块链数据集导入应用

神禹团队

队长:胡绍洲

队员:黄光均、刘宏彬、徐高松

项目介绍

由于链上数据的存储特点,只能通过接口方式从链上直接获取,这种方式需要针对智能合约接口编写大量的代码,成本很高;同时从链上读取数据,除过网络开销,还需要进行解码操作,甚至遍历MPT树等,读取性能差;更重要的是,不能直接在链上进行全局数据处理,从而无法满足大数据场景的需求,比如复杂查询、大数据挖掘和分析等。 我们致力于提供一种自动化、智能化的数据导出解决方案,通过不断迭代完善,满足用户基于数据导出的各种诉求。 初步架构如下所示,其目的在于降低获取区块数据的开发门槛,提升数据获取效率,支持大数据处理,用户只需要进行简单配置,就可以把区块数据导出到指定的存储介质上,比如支持复杂的关系查询、大数据挖掘的数据库或大数据平台上。 包括四个模块:区块获取模块、区块处理模块、持久化模块和数据分析模块

  • 区块获取模块:根据区块ID获取相应的区块;
  • 区块数据处理:解析区块数据、区块交易数据;
  • 账户数据处理:解析区块链账户数据;
  • 数据分析处理:针对需求自动处理相关消息数据。 在数据管理方面主要采用k8s的TiDB,以一个master和许多的工作节点slaver提高程序的高可用性,减少每个服务器的体量来平摊负载,让我们的程序管理更简洁,k8s 所有的 pod 都被放置在kube-system命名空间下,用命名空间来做权限控制,配合区块链平台设计存储接口,将为我们程序管理的创建、修改及删除资源提供帮助,通过人工修改某个配置项来解决某些管理上的问题。

背景&动机

区块链上数据的存储特点,只能通过接口方式从链上直接获取,这种方式需要针对智能合约接口编写大量的代码,成本很高;同时从链上读取数据,除过网络开销,还需要进行解码操作,甚至遍历MPT树等,读取性能差;更重要的是,不能直接在链上进行全局数据处理,从而无法满足大数据场景的需求,比如复杂查询、大数据挖掘和分析等,因此需要对数据进行挖掘变得很困难。

项目设计

为了实现区块链数据集的大数据处理功能,并且达到期望所有效果,我们基于TIDB开发了一些模块应用: 数据获取模块:支持将某一链上数据导入导出至k8s的TiDB集群功能 数据分析模块:对导入的数据可以支持一键分析的功能,在TiDB的加持下获取加速获取对应的账户、token以及区块信息

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment