【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

评论

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

工业互联网平台赋能需充分挖掘数据价值

浪潮云

翻译:谁将在AI中赚钱?by Simon Greenman John 易筋 ARTS 打卡 Week 48

John(易筋)

ARTS 打卡计划

Mac电脑:安装cnpm(补充步骤)

三掌柜

5月日更

Flink的分布式缓存

大数据技术指南

flink 5月日更

多线程 VS 多进程(三)

若尘

多线程 Python编程 5月日更

kube-controller-manager之PV Cotroller源码分析

良凯尔

Kubernetes 源码分析 Ceph CSI

.Net Core Excel导入导出神器Npoi.Mapper

yi念之间

C# .net core npoi

WebContainers介绍:如何在浏览器运行原生的Nodejs

代码先生

大前端 webassembly 技术创新 WebContainers StackBlitz.com

架构学习笔记:架构设计3原则

风翱

架构 5月日更

【LeetCode】增长的内存泄露Java题解

Albert

算法 LeetCode 5月日更

区块链专家与媒体面对面 | “区块链让数据产生价值”

CECBC

“产学合作,协同育人”——安谋中国集成电路人才发展趋势沙龙圆满举行

脑极体

Docker 入门

飞跃

Docker 镜像和容器

飞跃

Docker 520 单身福利

打破固有思维(十六)

Changing Lin

5月日更

520有感而发

yu

520 单身福利

学习笔记之:05 | 数组:一秒钟,定义 1000 个变量

Nydia

学习

华仔训练营模块4作业

方堃

Node.js使用数据库LevelDB:超高性能kv存储引擎

devpoint

nodejs leveldb

聊聊一个普通程序员在520这天的心态

后台技术汇

520 单身福利

人工智能--野人过河

空城机

Java 算法 5月日更 大学笔记

内卷是必然

ES_her0

5月日更

关于爱情的碎碎念

穿过生命散发芬芳

520单身福利

设计千万级学生管理系统的考试试卷存储方案

贯通

架构实战营

分布式锁

邱学喆

分布式锁 redis分布式锁 zookeeper分布式锁

NLog整合Exceptionless

yi念之间

.net core exceptionless nlog

数据仓库如何确定主题域?

数据社

数据仓库 5月日更

C#常用特性和快捷键

fox

520单身福利

可以学习一下安全方面的知识

escray

学习 极客时间 安全 5月日更 安全攻防技能30讲

活性炭能去甲醛吗?

小天同学

科普 5月日更 活性炭

分布式锁中的王者方案 - Redisson

悟空聊架构

redis 分布式 分布式锁 redisson

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