写点什么

FISCO BCOS 2.0 使用教程:分布式存储体验

  • 2020-04-19
  • 本文字数:1312 字

    阅读完需:约 4 分钟

FISCO BCOS 2.0使用教程:分布式存储体验

配置分布式存储

分布式存储支持多种存储引擎,根据业务需求和部署环境灵活选择,可以配置为不同的存储引擎。


区块链的区块、交易等基础数据采用库表结构保存,状态数据的存储方式可配为库表结构或 MPT,满足不同场景的需求。


分布式存储的配置项位于群组的配置文件中,各个群组可以使用单独的存储策略,群组配置文件位于区块链节点中名为 conf/group.[群组号].genesis 的路径下,如 group.1.genesis,一旦群组启动,该群组的分布式存储的相关配置不能再改变。


分布式存储配置项示例如下:


[storage]


type=LevelDB:分布式存储的 DB 引擎类型,支持”LevelDB”和“External”(rc2 版本)


[state]


type=storage:state 类型,目前支持 storage state 和 MPT state,默认为 storage state


推荐使用 storage state ,除非必须使用 MPT 来追溯全局历史状态,不建议使用 MPT State。

使用 CRUD 智能合约开发

分布式存储提供了专用的 CRUD 接口,支持合约直接访问底层的存储表。


访问 CRUD 需要引用分布式存储专用的智能合约 Table.sol 接口,该接口是数据库合约,可以创建表,并对表进行增删改查操作。


引用 Table.sol


import “./Table.sol”;


Table.sol 的接口包括:


  • createTable //创建表

  • select(string, Condition) //查询数据

  • insert(string, Entry) //插入数据

  • update(string, Entry, Condition) //更新数据

  • remove(string, Condition) //删除数据


每个接口的用法如下:


创建表


// TableFactory 的地址固定为 0x1001


TableFactory tf = TableFactory(0x1001);


// 创建 t_test 表,表的 key_field 为 name,value_field 为 item_id,item_name


// key_field 表示分布式存储主 key value_field 表示表中的列,可以有多列,以逗号分隔


int count = tf.createTable(“t_test”, “name”, “item_id,item_name”);


查询数据


TableFactory tf = TableFactory(0x1001);Table table = tf.openTable("t_test");        // 条件为空表示不筛选 也可以根据需要使用条件筛选Condition condition = table.newCondition();
Entries entries = table.select(name, condition);
复制代码


插入数据


TableFactory tf = TableFactory(0x1001);Table table = tf.openTable("t_test");        Entry entry = table.newEntry();entry.set("name", name);entry.set("item_id", item_id);entry.set("item_name", item_name);        int count = table.insert(name, entry);
复制代码


更新数据


TableFactory tf = TableFactory(0x1001);Table table = tf.openTable("t_test");        Entry entry = table.newEntry();entry.set("item_name", item_name);        Condition condition = table.newCondition();condition.EQ("name", name);condition.EQ("item_id", item_id);        int count = table.update(name, entry, condition);
复制代码


删除数据


TableFactory tf = TableFactory(0x1001);Table table = tf.openTable("t_test");        Condition condition = table.newCondition();condition.EQ("name", name);condition.EQ("item_id", item_id);        int count = table.remove(name, condition);
复制代码


本文转载自 FISCO 金链盟公众号。


原文链接:https://mp.weixin.qq.com/s/08MLbE9CohjCZDagpBOk9Q


2020-04-19 17:411436

评论

发布
暂无评论
发现更多内容

分析微信朋友圈高性能复杂度

二手攻城师

架构师实战营

架构实战营-模块二

Aha hello xzy

架构实战营 「架构实战营」

2020Android开发架构思考及经验总结,深入理解kotlin协程pdf

android 程序员 移动开发

2020Android面经,历时一个半月,斩获3个大厂offer,kotlin语法大全

android 程序员 移动开发

模块二的命题作业

月影之臣

架构实战营

2019届应届毕业生Android秋招总结,已成功入职网易云音乐

android 程序员 移动开发

模块二作业

心怀架构

2014-2020分享我在Android开发中走的一些弯路,Android开发者必看避坑指南!

android 程序员 移动开发

2017-2020挑选出来最具代表性的(Java,网络相关(1),面试真题解析

android 程序员 移动开发

2019届应届毕业生Android秋招总结,已成功入职网易云音乐(1)

android 程序员 移动开发

2019年末阿里、百度等大厂技术面试题汇总(附答案,实战篇

android 程序员 移动开发

2020-字节跳动,网易,华为,android开发艺术探索pdf

android 程序员 移动开发

00后已经进入网易,下一步定位阿里,年轻人这么拼,android开发艺术探索电子

android 程序员 移动开发

16 个好用的 Code Review 工具,绝对干货

android 程序员 移动开发

架构实战营 - 第三期 - 模块二作业

岚哲

极客时间 架构 架构实战营

文本序号添加/移除工具

入门小站

工具

2017-2020挑选出来最具代表性的(Java,网络相关,2021年字节跳动74道高级程序员面试

android 程序员 移动开发

就因为把int改成Integer,第2天被辞了

Tom弹架构

Java 架构 设计模式

2019-年赚钱最多的-13-个技术岗位,轻松入门flutter

android 程序员 移动开发

架构训练营-模块三

Geek_9de3de

架构实战营

用脱口秀大会来讲「观察者模式」

悟空聊架构

设计模式 悟空聊架构 11月日更

2020Android大厂高频面试题(字节跳动+阿里,android原生开发技术

android 程序员 移动开发

2018年Android面试题整理,flutter下拉加载

android 程序员 移动开发

2019最新中级Android面试题目,有着几篇就够了,androidwifi开发教程下载

android 程序员 移动开发

2020Android大厂面试(五)插件化,字节Android面试必问

android 程序员 移动开发

18—19年BAT大厂Android高级多套面试专题整理集合(面试资料专题包分享

android 程序员 移动开发

一点思考

williamcai

车联网 网关

2020Android-目前最稳定和高效的UI适配方案!你头秃都没想到还能这样吧!

android 程序员 移动开发

HW2 - 微信朋友圈高性能复杂度分析

WWH

架构实战营

01、泛型是什么?,flutterplugin修改

android 程序员 移动开发

2019,一位Android中级程序员成功跳槽的面经,android屏幕适配和性能优化

android 程序员 移动开发

FISCO BCOS 2.0使用教程:分布式存储体验_文化 & 方法_FISCO金链盟_InfoQ精选文章