基于MetaID的分布式储存方案

1. 简介

在大区块的背景下,数据将越来越大,很多人对应对大区块还是有很多疑问,基于此我们设计实现了ShowMANDB数据分布式存储来应对大数据时代。

事实上将来数据量变得足够大的时候,远端单点数据获取和处理将变得困难,庞大的数据量导致业务处理会变得越来越慢,分布式储存和处理变得越来越有必要。今天我们就介绍一下基于MetaID的分布式储存方案,ShowMANDB,AppMANDB和LocalMANDB。

2. ShowMANDB

ShowMAN是ShowPay MetaID Accessing & Networking,目的是方便第三方开发者快速开展基于MetaID的开发同时也是分布式数据节点。

ShowMANDB 存储的本质上是MetaID的Tx集合,并且对外提供聚合服务。

ShowMANDB 提供了MetaID的基本服务,应用可以通过ShowMANDB很方便的获取到用户的MetaID用户信息,Protocols节点信息等基本的MetaID服务,同时我们也提供了Metanet的基本请求接口,包括metanet tree的获取,父节点/子节点,已经metanet node信息等。

应用可以通过ShowMANDB很方便的获取数据,同时配合MetaIDjs/ShowAppjs,完成MetaID的读写,从而可以将精力放在应用业务上,更容易产出更优质的应用。

3. AppMANDB 和 LocalMANDB

首先AppMANDB和LocalMANDB在数据存储和预置的接口上是大致一样的,他们在数据筛选上有所区别。

我们注意到如同ShowMANDB在Metanet数据中只过滤存储了MetaID的数据,对应大部分应用来说,也只需要专注自己感兴趣的数据,并且存储和处理就完全足够了,一方面数据存储将变少,操作效率也将变快,于是我们在ShowMANDB的基础上分离出来AppMAN,将来开源之后用户将很方便的构建AppMANDB,甚至在这个基础上处理自己的数据。

同样对于用户来说,无论是将来点对点,或者离线处理需要,数据也可以存储在用户设备本地,以后新的拓展也方便,比如在ShowApp上我们也集成了轻量级的LocalMANDB。

BSV-Data
ShowMANDB
ShowMANDB2
APPMANDB1
APPMANDB2
User1
LocalManDB1
User3
User4
User2
LocalManDB2
User6
User7
User8
User5
APPMANDB3

3.1 AppMANDB

AppMANDB 可以配置从ShowMANDB上获取数据,通过订阅模式从ShowMANDB上获取自己感兴趣的数据。应用可以构建只包含自己数据集的APPMANDB,从showmandb中订阅获取属于自己的tx集合再进行数据分析和处理,可以拓展showmandb数据接口方便赋予自己应用更多的功能,同时也从showmandb同步获取原始数据,showmandb服务数据。

appmandb localmandb都将提供基础的和showmandb一样接口服务,同时也提供了数据存储结构,应用方/用户可以很方便的基于数据构建属于自己的附加数据服务。提供的接口包括:

1.获取metaid基础信息getMetaIDInfo

2.获取节点信息getNode

3.获取MetaID节点parts信息

4.获取根节点

5.获取子节点

6.获取节点树

7.根据address获取节点

等。

比如Showbuzz AppMANDB 订阅了showbuzz协议metanote协议。

这样Showbuzz 只需要从showbuzz-AppMANDB上获取数据,一方面减少ShowMANDB服务的负载,另一方面也将大大加快数据获取速度,也可以在这个基础上添加自己需要的功能,比如Tag数据赛选等。

在这里插入图片描述

3.2 LocalMANDB

应用客户端(web or phone)进一步将属于数据变小存储在自己设备中,数据获取和处理速度进一步变快,为以后的点对点通道提供数据基础。

这样的ChainData -> ShowMANDB -> AppMANDB -> localMANDB 数据层层分布式存储,不仅在所有权上用户自己拥有自己数据,也可以花最小代价自己存储数据,事实上我们在设计这个模型的时候已经在产品中使用了,目前Show APP中已经初步完成了localmandb的雏形, metaidjs 中我们也存储了用户信息等基本信息,后续会将protocalsdata也存储,进一步优化用户使用体验。

这样最终ShowMANDB 拥有MetaID所有数据,AppMANDB储存应用相关的数据,LocalMANDB储存用户自己的数据,数据分布式存储,可以保证业务在大数据时候正常运行。这样设计也让应用和用户的MetaID数据不单独依赖任何服务方,保证数据在全球范围是真正分布式存储。

目前ShowMANDB已经对外提供服务,可以通过API-query直接查询,LocalMANDB和AppMANDB已经在Show等应用中实践测试,这两个程序我们开发工程师正在加紧优化,争取早日开源。

猜你喜欢

转载自blog.csdn.net/percyWangcn/article/details/109292943