配置分布式存储
分布式存储支持多种存储引擎,根据业务需求和部署环境灵活选择,可以配置为不同的存储引擎。
区块链的区块、交易等基础数据采用库表结构保存,状态数据的存储方式可配为库表结构或 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”);
查询数据
插入数据
更新数据
删除数据
本文转载自 FISCO 金链盟公众号。
原文链接:https://mp.weixin.qq.com/s/08MLbE9CohjCZDagpBOk9Q
评论