`

eos multi_index

    博客分类:
  • EOS
 
阅读更多
EOS的数据库就是chainbase,而调用数据库服务的C++的API是由eosio::multi_index负责的

eosio::multi_index是基于boost::multi_index库改进的,它提供了针对不同类型索引对象的迭代器Multi-Index Iterators.
1.每一个multi_index的表对象都必须包含一个uint64类型的主键,同时每张表都必须包含一个常量函数primary_key()用于获得主键
2.multi_index支持额外16个二级索引,这些二级索引的类型可以是uint64,uint128,uint256,double或long double

一个multi_index的表需要三个参数
1.表名
2.表内存储数据类型(包括数据结构,都可以自定义,要包含主键)
3.索引(指的是二级索引,同样定义在对象数据中,并且包含get该索引的函数)

API
1.multi_index(uint64_t code,uint64_t scope):构建一个multi_index表的实例
2.get_code():获取code成员值,当前table的拥有者
3.get_scope():获取scope成员值,当前table的接收者范围
4.begin()/end(),iterator,const_iterator:返回当前table最小(大)主键对应的值,即最前对象(end批向最后对象的后一个位置,如果=end(),则证明在迭代器对象中不存在目标对象)
5.cbegin()/cend(),const_iterator:无条件返回一个常量迭代器对象
6.cbegin()/cend(),const reverse iterator:返回常量倒转迭代器对象
7.rbegin()/rend(),reverse iterator:返回倒转迭代器对象
8.lower_bound(uint64_t primary):设置主键(或二级索引)最小边界值,返回大于或等于该值的迭代器.若未查到则返回-1
9.upper_bound(uint64_t primary):设置最大值,存在则返回小于或等于该值的迭代器,查找不存在则返回大于该值的迭代器,如果在最后则返回-1
10.available_primary_key():返回一个可用主键,当table新增一条数据时,需要设置主键的值,通过该函数返回一个自增的主键id,不可重复
11.get_index<N(secondary indexName>():返回一个二级索引,可通过名字类型指定某个二级索引
12.iterator_to(const T & obj):返回一个给定对象引用的迭代器
13.emplace(uint64_t payer,Lambda && constructor):table新增一条数据.第一个参数是为新增数据的空间资源及其他开销的付费者;第二个参数为新增数据的对象内容,是一个当场初始化创建一个对象的Lambda函数
a.在multi_index中创建一个新对象,对象指定一个唯一主键,对象被序列化写入table,如果不存在,则先创建表
b.二级索引更新引用新添加的对象,如果不存在,则先创建二级索引,返回一个主键迭代器指向新创建的对象
14.Modify(const_iterator itr,uint64_ payer,Lambda && updater):修改table中的一条对象数据.第一个参数是指向需要更新的对象迭代器,第二个参数是开销付费者,第三个参数是目标对象内容的Lambda函数
a.修改后的对象会替代现有的
b.二级索引会更新,主键不发生更新
c.如果原对象的付款者与更新对象的付款者是同一个账户,则仅向差异化开销付费;如果更新后所占空间变小,则还会退款
d.如果付款者不同,则退还空间开销到原对象的付款账户
15.get(uint64_t primary):返回一个常量,包含特定主键对应table中的对象的引用.除根据主键查找外,还可以通过指定二级索引进行查找
16.find(uint64_t primary):返回一个迭代器,包含与传入值相等的主键的对象.除根据主键查找外,还可以通过指定二级索引进行查找
17.erase(const_iterator itr):传入一个迭代器,指向待删除的对象.通过该对象的主键从table中删除对象.
a.对象从表中删除,所有相关存储资源被回收
b.表中二级索引会更新
c.原对象付款者会被退还空间开销
分享到:
评论

相关推荐

    EOS.rar_EOS_普元_普元EOS_普元EOS教程

    **EOS - 普元企业服务总线** EOS(Enterprise Service Bus),由普元公司研发,是一款高效、灵活的企业服务总线系统。它在SOA(Service-Oriented Architecture,面向服务架构)环境中扮演着核心角色,为企业提供了...

    EOS_Platform_7.6_Enterprise_Edition_Linux

    "EOS Platform 7.6 Enterprise Edition Linux" 是一个专为Linux环境设计的企业级软件平台,主要服务于系统运维和服务器管理领域。这个版本的EOS(可能是Enterprise Operating System或类似含义的缩写)着重于提供...

    EOS.rar_EOS业务_以太网 SDH EOS

    **EOS(Ethernet Over SDH)业务** EOS,即以太网在SDH(Synchronous Digital Hierarchy,同步数字体系)上的承载,是一种将以太网数据流映射到SDH通道的技术,它允许以太网业务在SDH网络中高效、透明地传输。这种...

    EOS_Platform_7.0基础开发教程

    《EOS Platform 7.0基础开发教程》是一份详尽的指南,旨在帮助开发者们掌握EOS区块链平台的最新版本——EOS Platform 7.0的基础知识和应用开发技能。该教程结合了理论与实践,提供了丰富的实例,使得学习过程更加...

    EOS错误代码集

    在区块链开发领域,EOS作为一种新兴的高性能区块链平台,其智能合约和链上操作涉及到大量的技术细节和状态检查。为了确保操作的正确性,EOS提供了丰富的错误代码以帮助开发者识别和定位问题。本文集整理了EOS区块链...

    gas_PVT.rar_EOS_EOS gas_GAs matlab_equation of state_pvt

    equation of state (EOS) of gas

    RK_EOS.rar_EOS RK_EOS状态方程_密度 压力_气体_状态方程

    属于真实气体状态方程,可用于计算气体温度、压力和密度。

    Primeton EOS 5_3产品安装指南.pdf

    根据提供的文件信息,我们可以深入探讨Primeton EOS 5.3产品的安装流程与注意事项。这份文档主要涉及四个不同版本的产品——开发版、专业版、社区版和企业版,并且提供了两种安装方式:界面交互安装和哑安装。下面将...

    17 EOS6_报表教程.rar

    00 EOS文档使用指南.chm :00 EOS文档使用指南.chm EOS全部资料合集(包括例子) 01 EOS系统概述.chm :01 EOS系统概述.chm 02 EOS示例与教程.chm :02 EOS示例与教程.chm 03 EOS基础开发指南.chm :03 EOS基础开发...

    DH_IPC-HX4XXX-Eos4_Chn_PN_Stream3_V2.680.0000000.2.R.190410.bin

    运动高手秀的摄像头,默认是不支持乐橙云的,升级这个固件可以支持乐橙云,在自己的手机上面观看,实现随时随地的查看自己的摄像头,之所以提供给大家是因为我自己使用后感觉非常方便。这是冒着摄像头被杀死的风险...

    Python库 | eosfactory_tokenika-3.0.0-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:eosfactory_tokenika-3.0.0-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Siemens PLM_EOS Medical_ZLT.pdf

    【EOS公司与增材制造】 EOS(Electro Optical Systems)是一家全球领先的电子制造解决方案提供商,尤其在医疗领域的应用上有着显著的地位。该公司成立于1989年,由Dr. Hans Langer博士创立,至今已有超过25年的历史...

    佳能单反SDK最新版 Canon_EOS_ED-SDK_v3.6.10

    Canon_EOS_ED-SDK_v3.6.1.rar ,含EDSDK、EDSDK_64、文档Document、范例Sample。 Supports models beginning from the EOS 1D Mark III in 2007. The following models are supported as of March 2010. EOS-1D ...

    EOSWebcamUtilityBeta-WIN0.9.0_webcam_EOS_beta_

    **EOS Webcam Utility Beta - 转变你的EOS相机为网络摄像头** 标题中的“EOS Webcam Utility Beta”是一款由佳能(Canon)开发的应用程序,专为Windows操作系统设计,版本号为0.9.0。该软件的主要功能是将支持的EOS...

    佳能EOS_60d操作手册

    佳能EOS_60d操作手册 详细介绍 佳能EOS_60d操作手册 具体的操作说明书 希望对您有所帮助

    eos开发中的联合主键使用

    EOS提供两种类型的主键:`uint64_t`(单主键)和`multi_index`(多主键,包括联合主键)。在这里,我们使用`multi_index`来设置联合主键: ```cpp EOSIO_TABLE(Account, id) { uint64_t id; name username; ...

    EOS_Platform_7.0扩展开发教程

    《EOS Platform 7.0 扩展开发教程》是一份专为开发者设计的详细指南,旨在帮助他们深入了解EOS区块链平台的第七个主要版本,并掌握如何进行扩展开发。EOS平台以其高性能、可扩展性和去中心化的特性,成为区块链应用...

    普元EOS7.5基础教程(官网版)

    **普元EOS7.5基础教程(官网版)** 普元EOS是一款国内知名的中间件平台,专注于企业级服务总线(Enterprise Service Bus, ESB)和应用服务器领域。EOS7.5版本是其一个重要的迭代,提供了更强大的功能和优化的性能。本...

Global site tag (gtag.js) - Google Analytics