Data+AI时代,如何打造下一代数智平台? 了解详情
写点什么

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:411044

评论

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

2021年Java大厂面试分享,漫谈设计模式在Spring框架中的良好实践

Java 程序员 后端

2021年华为Java面经,【面试必备】

Java 程序员 后端

Activity重启引起的重复发送消息Bug分析

轻口味

android 10月月更

2021Java高级面试题汇总解答,Java开发新手入门教程

Java 程序员 后端

2021Java高级面试题,极客时间vip年卡,看懂这些帮你轻松解决就业问题

Java 程序员 后端

2021一位Java中级程序员的跳槽面经,最全的BAT大厂面试题整理

Java 程序员 后端

阿里亿级长连网关的云原生演进之路

阿里巴巴终端技术

云原生 架构设计 网关 客户端开发

2021年京东Java岗面试必问,Java中级程序员面试题

Java 程序员 后端

2021年大厂Java面经,Java高并发编程详解pdf下载

Java 程序员 后端

2021年是意义非凡的一年,差点挂在第四面

Java 程序员 后端

2021Java面试笔试总结,jdk使用教程,Java高级工程师必备知识

Java 程序员 后端

2021年Java开发者跳槽指南,2021年我们程序员该如何进阶和规划

Java 程序员 后端

2021年大厂Java高级面试题分享,Java高并发秒杀面试题

Java 程序员 后端

2021年春招Java面试题,2021最新腾讯Java面试分享

Java 程序员 后端

2021Java面试心得,shiro框架视频尚硅谷,最新Java开发进阶

Java 程序员 后端

2021大厂Java开发面试总结+解答,Java基础笔试题大全带答案

Java 程序员 后端

2021年Java面试心得,从理论到实践!

Java 程序员 后端

2021年上半年最接地气的Java面经,2021年Java常见面试题目

Java 程序员 后端

谈一谈最小二叉堆的几种操作

Regan Yue

算法 10月月更

2021Java进阶者的新篇章,Java全栈知识体系

Java 程序员 后端

2021年Java常见面试题目,图灵学院诸葛,阿里P7大牛整理

Java 程序员 后端

2021大厂Java面试真题集锦,京东健康Java面试

Java 程序员 后端

【AI 全栈 SOTA 综述 】这些你都不知道,怎么敢说会 AI?【语音识别原理 + 实战】

声网

AI 算法 音视频

2021大厂Java面试经历,Java技术面试常见问题

Java 程序员 后端

2021大厂Java开发面试总结+解答,【一步教学,一步到位】

Java 程序员 后端

2021年华为Java面经,顺利收获Offer

Java 程序员 后端

2021年字节跳动74道高级程序员面试,2021Java面试真题精选干货整理

Java 程序员 后端

2021年Java岗位BAT大厂面试题知识点小结,挥泪整理面经

Java 程序员 后端

2021Java高级面试题总结,kafka面试常见问题

Java 程序员 后端

2021大厂Java社招最全面试题,2021年Java开发者常见面试题

Java 程序员 后端

2021Java高级进阶学习资料,字节跳动Java高级工程师

Java 程序员 后端

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