EOS合约开发第十五章-数据表设计

本文详细介绍了EOS合约开发中的数据表设计,包括如何创建和使用多索引表,以及表设计示例——汽车维护跟踪器,涵盖了创建记录、更新、查询等操作,同时展示了车辆维护服务跟踪表和客户跟踪表的结构与索引设计。
摘要由CSDN通过智能技术生成

数据表设计

一、概述

eos在执行一个action之前,会为该action设置一个干净的运行环境,也就是说每个action是完全独立的环境中运行的,目前在action之间传输数据的唯一方式是持久化数据到eos数据库和从eos数据库读取数据。

eos标准库中multi_index api提供了一个访问eos数据库的C++接口,这个API提供了一个对象存储的模型,支持多种检索方式、支持不同排序方式的多索引、支持访问权限控制。其使用便利性等同于传统表、行、列、索引数据库,其API类似于boost multi-index容器api,因为其设计就是基于boost multi_index容器而来。

mulit_index从概念上可以被视为传统数据库中的表格,其中行是容器中单个对象,列是容器中对象的成员属性,索引是对象的某个成员属性,通过这个键值可以快速查找对象。

传统数据库表允许索引是表中某些列的用户自定义函数,multi_index容器提供了类似的功能,允许索引是用户自定义函数,但返回值类型必须是数据库键支持的数据类型。

传统数据库表通常有一个唯一的主键,它允许明确标识表中的特定行,并为表中的行提供排序,multi_index也支持类似的语义,但multi_index容器中对象的主键必须是唯一的无符号64位整数,multi_index容器中的对象按主键索引进行升序排序。

multi_index是eosio持久性服务的关键实现,可以定义一个主键和最多可以定义16个二级索引,multi_index也支持C++的迭代器。

二、如何创建表

以下是使用eos创建多索引表的步骤:

1. 定义对象类型struct/class,每个对象都将位于创建的multi_index表中

2. 在对象类型中定义一个成员函数primary_key,返回uint64_t作为主键值

3. 确定二级索引,最多支持16个二级索引,二级索引支持以下列出的几种数据类型:

  idx64

  idx128

  idx256

  idx_double

  idx_long_double

4. 为每个二级索引定义一个键提取器,用于从索引表中获取键值。

三、使用表

1. 实例化多索引表

2. 根据合约要求,添加(emplace)、修改(modify)、删除(erase)对象

3. 查询对象(get/find)、迭代器操作

四、表设计示例

在以下示例中,介绍如何使用eos的multi_index API实现汽车维护跟踪器,跟踪器将保存车辆维护活动记录。

该跟踪器的目标用户是车辆维护服务机构以及客户即车辆拥有人,一旦车辆维护服务工作完成,服务工人会将该维护活动记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值