时隔16年Jeff Barr重返10.23-25 QCon上海站,带你看透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:411284

评论

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

七千字的线性回归模型指南,建议收藏!

计算机与AI

数据挖掘 学习 线性回归

架构师第一期作业(第四周)

Cheer

课程作业

区块链赋能医疗产业报告

CECBC

区块链 大数据 医疗

MySql领域经典之作,“不敢自诩为MySql专家,岂敢错过这本神书”

Java架构之路

Java MySQL 程序员 面试 编程语言

Java并发编程-线程基础

程序员 并发编程 java 14 架构师训练

TensorFlow安装

菜鸟小sailor 🐕

学习

某Java程序员在外包公司每天读写删改几年后,发现跳不出来了

Java架构之路

Java 程序员 面试 算法 编程语言

一文搞懂PV、UV、VV、IP及其关系与计算

冰河

多线程 高并发 流量 并发流量

【硬件篇之功耗测试】

良知犹存

硬件

程序员在中国是青春饭?扯!看看阿里资深架构师是怎么说的!

Java架构师迁哥

Java 程序员 面试

开源监控系统open-falcon搭建笔记

卓丁

监控 监控管理平台 Open-Falcon 监控告警

创新者谈

善宝橘

创新

手写SpringIOC

彭阿三

spring源码 sping springioc

2020国庆我花了 7 天给大家撸了一篇云南旅游攻略

程序猿石头

美食 旅行

实用威胁建模指南(二)

亚伦碎语

敏捷 安全 系统安全架构 系统安全 威胁建模

《我想进大厂》之Redis夺命连环11问

艾小仙

Java redis 面试 程序语言

延迟满足

时间是一个人最好的证明

延迟满足感 成功

建议将区块链产业纳入国家“十四五规划”

CECBC

区块链 新基建

论软件工程师的自我修养:角色、重构与质量

华为云开发者联盟

软件 开发 工程师

MySQL-技术专题-连接查询和子查询

码界西柚

阿里巴巴内部“Java成长笔记”,看完才发现自己和阿里大牛的差距真的太远了!

Java架构之路

Java 阿里巴巴 程序员 面试 编程语言

云服务时代,未来怎么样保障自己的核心竞争力?

boshi

个人成长 职业规划 云服务

诺奖以上,真相未满:追捕黑洞二百年

脑极体

系统架构第四周作业「架构师训练营第 1 期」

天天向善

系统架构第四周总结「架构师训练营第 1 期」

天天向善

反射API

彭阿三

反射

手把手教你AspNetCore WebApi:数据验证

AI代笔

ASP.NET Core web api 数据验证

浅析 Java 内存模型 一

朱华

Java JMM

Redis-技术专题-Jedis实战入门

码界西柚

能够让机器狗学会灭火, ModelArts3.0让AI离我们又近一步

华为云开发者联盟

人工智能 AI 机器狗

来碗小面

葱小白

美食 旅行

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