Scry.info技术分享——ScryDB简介

来源:互联网 发布:网络作家收入 编辑:程序博客网 时间:2024/06/05 04:25

ScryDB的主要目的是将点的数据存放在eth链以外的地方(毕竟现在eth链的数据增长已经很大了).

相关关系如下图:


可以看到ScryDB是为上层提供服务,封装了相关数据操作具体实现.

有个子实现:IPFSScry DB Chain.

IPFS: 一个值得信奈的去中心化的数据存储网络(此前已ICO成功), 此处不再赘述可自行查阅相关资料.目前我们对数据的存取在IPFS上进行的.

Scry DB Chain: scryInfo系统存储了大量的真实数据,有数据就会有查询.IPFS是不提供(组合)查询功能的,它目前只能通过hash获取指定的内容.这是无法满足更多业务需要的.所以我们针对此需求计划设计一个新的chain,来满足有查询需求的数据存取(类似关系型数据库).该功能计划于第四阶段(2018年年底前)开始实施更多详细介绍请参阅白皮书.

由于Scry DB Chain要到第四阶段才开始实施,那现在我们的ScryInfo就不能提供查询了吗答案肯定是能支持查询现阶段我们基于IPFS实现了一个简易的结构来满足对查询的基本需求,如下图所示:


ScryDBFactory: 一个工厂类,外层调用主要用到此类的Create方法,返回的是ScryDBBase类型的对象它负责返回某个ScryDBBase的子类对象.

 

ScryDBBase: db操作抽象基础类.定义了几个重要的方法:

connect(): 连接到数据源(IPFSScry DB Chain都被设计为需要连接再操作).

get(): 获取指定的单个数据.IPFS可以通过一个hash获取到具体数据内容ScryDBChain被设计为也能存取单个值.

set(): 保存指定数据到IPFSScry DB Chain.

exec(): 设计为可以执行一条SQL语句来达到查询数据的目的.  1个参数就是SQL语句,2个参数就是结果回调.


ScryDBIPFS: 具体的针对IPFS的实现,它主要实现了get()set()方法,来达到在IPFS上存取数据的目的.



ScryDBChain: 计划为对Scry DB Chain的实现计划在第4阶段开始实现.


ScryDBIPFSTable: 这是ScryDBIPFS的子类,它主要负责实现了exec()方法.通过名称看的出它是按照类似数据库中表的形式来存储数据的这样就可以通过模拟SQL的方式来对数据进行CRUD. 额外的还提供了create tabledrop table.


通过以上几个类,我们就在ScryInfo中实现了一个基于IPFS的简易的数据操作基础模块,就能为上层特别是SQS系统提供数据业务查询提供基础服务.


示例:

创建表:


插入数据:


查询:


输出结果为:




原创粉丝点击