写点什么

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

评论

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

随机数在区块链中的应用

CECBC

🔎【Java源码探索】深入浅出的分析 ThreadPoolExecutor

码界西柚

Java 线程池工作原理 ThreadPoolExecutor 5月日更 Worker

使用 Quarkus 和 MicroProfile 实现微服务特性

张晓辉

Kubernetes 云原生 Quarkus Microprofile

大型系统中的证书管理

张俭

微服务 TLS PaaS

21岁就走了“狗屎运”(4面拿字节跳动offer Java岗)

Java架构师迁哥

架构师实战营模块五

ifc177

☕【JVM 技术之旅】深入JVM回收器之Parallel Scavenge(上篇)

码界西柚

JVM GC 垃圾收集 5月日更 Parallel Scavenge

Java也太卷了,应届生找工作都需要准备这些知识点了!

Java架构师迁哥

女裤裤兜如何影响工业设计?

脑极体

架构师实战营 模块五总结

代廉洁

架构实战营

架构实战-模块5作业

大师兄

限时分享:Alibaba技术官整理出来的Java零基础学习笔记

Java架构师迁哥

Nginx利用resolver实现动态upstream

运维研习社

nginx 运维 5月日更 动态负载均衡

如何成为一名拖垮整个团队的产品经理?

冰河

深度思考 产品经理 自我思考 产品经历 技能提升

When others give us advice

escray

学习 极客时间 5月日更

通过混沌测试发现 HTTP/2 缺陷

卫智雄

消息队列并不能解耦

Xargin

架构之:并发和并行

程序那些事

架构 软件架构 架构师 程序那些事

开箱即用的 Prometheus 告警规则集

张晓辉

监控 Prometheus 告警

原来真的有外卖员转行学Java,还三面“拿下”拼多多offer!

Java架构师迁哥

Spark如何进行动态资源分配

数据社

spark 5月日更

架构师实战营 模块五作业(设计微博评论的高性能高可用计算架构)

代廉洁

架构实战营

网络攻防学习笔记 Day30

穿过生命散发芬芳

5月日更 网络攻防

Dubbo Admin 部署

青年IT男

dubbo

小王毕业两年转行学Java,现在过得比科班生过得还好?

Java架构师迁哥

交叉验证

Qien Z.

5月日更 交叉验证

Spring XML Schema扩展机制源码解读

Hex

Java spring 后端 Java EE

已经成功拿到字节offer,阿里内部二十三万字 Java 面试题总结

Java 程序员 架构 面试

java.net.BindException: Address already in use: JVM_Bind解决方案

咿呀呀

IDEA javaWeb

业务架构训练营,模块5作业,微博评论高性能架构

好吃不贵

业务架构

ubuntu64 位搭建 OpenVINO 系统(下篇)

IT蜗壳-Tango

5月日更

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