写点什么

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

评论

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

AI算法 | 睡岗识别冠军方案解读(姿态估计)

极小新

人工智能 计算机视觉 算法竞赛 目标检测算法 人体姿态估计

用知识图谱重构电商测试用例:精准覆盖业务场景的实践

测试人

人工智能

CST软件如何计算半导体的光电生成速率_达索官方授权

思茂信息

cst CST软件 CST Studio Suite

人工智能与气候模拟:如何用AI模拟和预测气候变化影响?

天津汇柏科技有限公司

人工智能 AI

关于我的第一个产品!

Immerse

五一假期放肆嗨,ROG电竞显示器高刷臻品畅玩游戏!

新消费日报

告别手动填参数!Apipost黑科技让接口调试效率翻倍

数据追梦人

五一出行看科技,高速巡检无人机 AI 算法开启智慧新篇

极小新

人工智能 目标检测算法 视觉智能 智能巡检

python 实现消费者优先级队列

天翼云开发者社区

rython 堆队列算法

开源鸿蒙,给机器人带来了什么?

脑极体

AI 操作系统

从 Java 到 Go:面向对象的巨人与云原生的轻骑兵

京东科技开发者

淘宝/天猫订单同步实战:用API打通电商“任督二脉”

代码忍者

淘宝API接口

免费教程!【20小时通关工业级RAG】变现千万的RAG优化经验!

商汤万象开发者

人工智能 大模型 LLM rag 免费课程

如何检测 Sliver C2 框架活动

天翼云开发者社区

sliver

告别重复繁琐!Apipost参数描述库让API开发效率飙升!

数据追梦人

使用 gt-checksum 分析迁移对象

GreatSQL

AI重构鞋服品牌「增长基因」:数据驱动的商品力革命已至

第七在线

《Operating System Concepts》阅读笔记:p778-p793

codists

操作系统

秒送LBS场景下的C端SOA服务容灾建设之-数据备份篇

京东科技开发者

面对开源大模型浪潮,基础模型公司如何持续盈利?

Baihai IDP

开源 AI 商业模式 基础模型 LLM

从 Java 到 Go:面向对象的巨人与云原生的轻骑兵

京东科技开发者

我的内存去哪儿了?

TiDB 社区干货传送门

监控 TiKV 底层架构

PingCAP “一号员工”唐刘:回顾我与 TiDB 的十年成长之旅

TiDB 社区干货传送门

数智化转型进阶之路:从数据底座到业务增长,企业需要怎样的数据库支撑?

TiDB 社区干货传送门

数据库架构选型

TiDB 企业管理器:TEM v3.0.0 体验

TiDB 社区干货传送门

RapidFS 为昆仑芯 3 万卡集群加速,国产化平台 TiB 级吞吐让数据随叫随到

Baidu AICLOUD

分布式缓存 JuiceFS #存储加速

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