AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

评论

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

数字经济时代下,区块链如何助力数字产业发展?

旺链科技

区块链 分布式存储 数字经济

互操作性和去信任化的两难困境,到底需要治标还是治本?

CECBC

图计算之开局女朋友跑了

Zhuan

图算法 图计算 networkX GraphScope

Python OpenCV 图像的双线性插值算法,全网最细致的算法说明

梦想橡皮擦

Python 7月日更

大数据精准营销APP系统开发源码搭建

获客I3O6O643Z97

大数据 抖音霸屏

架构实战营模块2课后作业

hello

架构实战营

回帖送大奖 『和AI在一起』

百度大脑

人工智能 活动 大奖

Go语言:参数传递中,值、引用及指针之间的区别

微客鸟窝

Go 语言

从京东零售云走出来的3D数字人正在触动未来的互动世界

网络攻防学习笔记 Day82

穿过生命散发芬芳

网络攻防 7月日更

Vue进阶(七十九):应用 postMessage 实现父子跨域通信

No Silver Bullet

Vue 跨域 7月日更 跨域通信

Pandas高级教程之:自定义选项

程序那些事

Python 数据挖掘 数据分析 pandas 程序那些事

Vue进阶(九十五):addEventListener() 监听事件

No Silver Bullet

Vue 事件监听 7月日更

华为云MVP程云:知识化转型,最终要赋能一线

华为云开发者联盟

人工智能 自然语言处理 机器学习 华为云 智能问答机器人

BSC币安智能链挖矿模式开发

获客I3O6O643Z97

分布式存储 币安智能链

JAVA语言异步非阻塞设计模式(应用篇)

有道技术团队

后端 网易有道

PancakeSwap交易所市值管理机器人开发

Geek_23f0c3

市值管理机器人开发 PancakeSwap交易所 交易所机器人

支持60+数据传输链路,华为云DRS链路商用大盘点

华为云开发者联盟

华为云 DRS

鉴释首席运营官赵科林:质量第一思维模式

鉴释

代码 安全编码

大数据获取客户系统软件开发源码

获客I3O6O643Z97

大数据

Camtasia入门技巧之视频剪辑

淋雨

视频剪辑 Camtasia 录屏软件

深度分享|金融行业模型管理效能提升的规划与思考

索信达控股

大数据 金融科技 金融 风险管理 营销管理

音视频的这些功能你知道吗?

anyRTC开发者

音视频 屏幕共享 智能降噪

鉴释陈新中:源代码安全在物联网时代的重要性

鉴释

物联网 源代码

handler内存泄露,已成功拿下字节、腾讯、脉脉offer

欢喜学安卓

android 程序员 面试 移动开发

小程序开发教程,2021Android开发现状分析

欢喜学安卓

android 程序员 面试 移动开发

关于单元测试的那些事儿,Mockito 都能帮你解决

华为云开发者联盟

测试 Mockito Mock Java 开发 模拟测试框架

Rust从0到1-面向对象编程-Trait 对象

rust oop 面向对象编程 Trait Objects Trait 对象

痛苦调优10小时,我把 Spark 脚本运行时间从15小时缩短到12分钟!

小拍Piper

scala spark 计算机 spark-shell spark-env

浪潮云说丨如何对多云进行统一运营

云计算

flutter开发工具,细数Android开发者的艰辛历程

欢喜学安卓

android 程序员 面试 移动开发

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