写点什么

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

评论

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

面试常问的高并发系统设计,我们到底该怎么学?

程序员小毕

程序员 面试 后端 高并发 架构设计

阿里云祝顺民:生而为云,连接增长

云布道师

阿里云 云网络

携程全球合作伙伴峰会商旅分论坛:以五大中心构建“人数智”服务能力体系

携程商旅

架构实战营-模块一作业

氢原子

#架构实战营

面试官:小伙子你说一下分布分表

Java全栈架构师

程序员 程序人生 后端 架构师 分布分表

结合RocketMQ源码说说并发编程的三大神器

程序员小毕

源码 程序员 RocketMQ 后端 架构师

架构训练模块1

KING

SCRM是什么,SCRM和CRM区别?

优秀

CRM scrm

数据库到底应该如何存储密码?

Java永远的神

数据库 程序员 程序人生 后端 架构师

架构训练营模块一作业

现在不学习马上变垃圾

#架构实战营

极客时间-架构训练营-作业一

devilyaos

架构训练营 架构训练营10期

百亿节点、毫秒级延迟,携程金融基于 NebulaGraph 的大规模图应用实践

NebulaGraph

风控 风控模型 电商风控

设计原则

Lemoon Can

面向对象设计原则 设计原则

【沙丘大会回顾】九科信息研发中心自动化负责人郑文茂分享央企数字员工实践案例

九科Ninetech

ChatGPT 加图数据库 NebulaGraph 预测 2022 世界杯冠军球队

NebulaGraph

图数据库 世界杯 AI预测

主数据管理实施四部曲概论

用友BIP

无刷直流电机最强科普(收藏版)

元器件秋姐

发展史 电机 BLDC应用 电子工程师 无刷直流电机

提供多种数据看板,瓴羊Quick BI全面提升企业可视化分析能力

小偏执o

架构实战营模块一_作业

原城

架构实战营 #架构实战营 架构师实战营 「架构实战营」

AI技术实践|用腾讯云录音文件识别让无字幕视频自动生成字幕

牵着蜗牛去散步

人工智能 腾讯云 腾讯 语音识别

【中国信通院|低代码·无代码应用沙龙】低代码平台在云智慧的实践探索

云智慧AIOps社区

大前端 低代码 数据可视化 无代码 可视化大屏

微信业务架构图 & 学生系统技术架构图

白杨

重写事件抛发接收机制原理

千锋IT教育

架构--模块七 作业

李某人

架构训练营

Flink架构与应用漫聊

数新网络官方账号

模块一作业

unique

看场景、重实操,实时数仓不是“纸上谈兵”

阿里云大数据AI技术

大数据 实时数仓 12 月 PK 榜

掌握高并发系统设计,面试弯道超车

小小怪下士

Java 面试 系统设计 后端 高并发

flex弹性盒子中flex-grow与flex的区别

千锋IT教育

架构实战 1 - 微信业务架构图-学生管理系统技术选型

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

如何通过“推送文案的千人千面”有效提升用户转化和留存

极光JIGUANG

极光推送 用户运营

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