在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

评论

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

软件测试|手把手教你用Python来模拟绘制自由落体运动过程中的抛物线

霍格沃兹测试开发学社

Docker安装mysql

软件测试|Python高手教你玩转 Excel 自动化

霍格沃兹测试开发学社

Easysearch Chart 0.2.0都有哪些变化

极限实验室

Helm easysearch

FaceFusion:探索无限创意,创造独一无二的面孔融合艺术!

汀丶人工智能

人工智能 深度学习 计算机视觉 图像生成

与创新者同行!Apache Doris 首届线下峰会即将开启,最新议程公开!|即刻预约

SelectDB

数据库 大数据 数据仓库 数据分析 实时数仓

ACK 云原生 AI 套件:云原生 AI 工程化落地最优路径

阿里巴巴云原生

阿里云 AI 容器 云原生 ACK

为什么你的企业需要一个海外服务器?

一只扑棱蛾子

服务器 海外服务器

软件测试|f-string格式化输出的这些用法,90%的Pythoner不知道

霍格沃兹测试开发学社

软件测试|神操作!用 Python 操作 xmind 绘制思维导图

霍格沃兹测试开发学社

AIGC | LLM 提示工程 -- 如何向ChatGPT提问

极光GPTBots-极光推送

人工智能 AIGC ChatGPT LLM

企业一张网,数字雨林生长时

脑极体

软件测试|PC端应用自动化最佳解决方案——Pywinauto

霍格沃兹测试开发学社

KDD 2023 | 蚂蚁“优化器三部曲”之 WSAM

AI Infra

人工智能 开发者 算法 优化器 KDD

软件测试|教你轻松玩转Python日期时间

霍格沃兹测试开发学社

软件测试|最全的Python for循环和while循环使用介绍

霍格沃兹测试开发学社

X2RTC正式上线!抢先体验已开启

X2Rtc

开源 音视频 RTC

Generative AI 新世界 | 文生图领域动手实践:预训练模型的微调

亚马逊云科技 (Amazon Web Services)

机器学习 开源 #人工智能 生成式人工智能 Amazon SageMaker

软件测试|Python删除列表元素的3种方法,你都会吗?

霍格沃兹测试开发学社

Programming abstractions in C阅读笔记:p176-p178

codists

软件测试|pip命令,你真的会了吗?

霍格沃兹测试开发学社

深度学习在语音识别中的应用及挑战

数据堂

软件测试|Python实用炫酷技能——推导式

霍格沃兹测试开发学社

软件测试|一步到位教会你Python字典操作(一)

霍格沃兹测试开发学社

操作系统的概述

芯动大师

软件测试|教你如何用Python获取昨天今天明天的日期

霍格沃兹测试开发学社

软件测试|Python神器logging,你真的了解吗?

霍格沃兹测试开发学社

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