写点什么

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

评论

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

Mac代码管理软件:SnippetsLab for mac v2.6激活版

理理

火山引擎VeDI在AI+BI领域的演进与实践

字节跳动数据平台

Eudic欧路词典 for Mac(英语词典翻译查询工具)

Mac相关知识分享

TiKV Raft Store 内存管理的原理与实现丨TiKV 源码解读(二十三)

PingCAP

数据库 分布式 TiDB

选择好的数据产品应当避免的六大坑|StartDT Talk

奇点云

大数据

即时通讯技术文集(第44期):微信、QQ技术精华合集(Part1) [共14篇]

JackJiang

即时通讯;IM;网络编程

如何使用PHP开发一个购物网站?

科普小能手

php 电商 系统开发 购物 PHP开发

开放创新,释放云上生产力 | 2024华为云开源开发者论坛盛大开启,邀您相约上海

华为云开发者联盟

开源 大会

Milvus×Florence:一文读懂如何构建多任务视觉模型

Zilliz

微软 计算机视觉 Milvus 向量数据库 Florence

新技术架构给集团企业身份管理体系带来的挑战

芯盾时代

身份安全 iam 数字化经济

FlowJo 10 for Mac(mac流式细胞分析软件)

Mac相关知识分享

PHP 互斥锁:如何确保代码的线程安全?

左诗右码

Transmit 5 for Mac(功能丰富的 FTP 客户端软件)

Mac相关知识分享

Mimestream for Mac 管理和使用Gmail邮箱 v1.5.0激活版

理理

Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践

阿里云大数据AI技术

人工智能 最佳实践 PAI Qwen2.5-Coder

软件测试丨Pytest生命周期与数据驱动

测试人

软件测试

MAMP PRO for Mac(专业的Web开发环境)

Mac相关知识分享

一站式视频处理软件 VideoProc Converter 4K for mac v6.6中文免激活版

理理

GreatSQL 自动开启复制导致同步报错

GreatSQL

How to Choose the Right Wi-Fi Chip: IPQ4019 vs. IPQ4029 vs. IPQ4018

wallyslilly

IPQ4019 ipq4029 IPQ4018

探索淘宝天猫API:解锁商品详情与关键词搜索的高效之道

代码忍者

API 接口 pinduoduo API

API 之旅的三个阶段

NGINX开源社区

读书笔记 最佳实践 API

如何降低大模型训练与推理计算成本,以确保它们在软件研发中的有效应用?

思码逸研发效能

DevOps 研发效能 大模型 AI 基础设施 思码逸

昆仑万维「天工大模型4.0」o1版(Skywork o1)正式启动邀请测试

新消费日报

基于Sermant实现xDS服务网格,获取15+倍更高性能和更低成本

华为云开源

开源 微服务治理

揭秘可观测利器:腾讯云 APM 深度融合 OpenTelemetry 和 Prometheus,助力高效指标采集与处理

腾讯云可观测平台

Easy Data Transform for mac 智能数据转换与整合

理理

RAG搭建中,如何选择最合适的向量索引?

Zilliz

向量数据库 rag 向量索引

如何评估测试工时?

老张

项目管理 软件测试 需求管理

TiDB 助力北京电信夯实电信账务系统的数据底座

PingCAP

数据库 TiDB

西双版纳有等保测评机构吗?在哪里?

行云管家

等保 等保测评

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