1. 主键和二级索引

1.1 multi_index的主键

必须是唯一的,且类型是uint64_t,且须实现primary_key()方法返回主键字段。

  • eosio::multi_index支持类似的语义,但是该对象的主键在eosio::multi_index容器必须是唯一的无符号64位整数。
  • eosio::multi_index中的对象容器按主键索引按无符号64位整数主键的升序排序。

1.2 二级索引

  • Multi-Index表最多可以使用16个二级索引,可以通过多索引进行排序;

  • 得为每个二级索引定义一个函数,用于从Multi-Index表的函数中获取键,这个函数会被indexed_by()使用。

1.2.1 二级索引的数据类型

  • uint64_t:64位无符号整型键
  • uint128_t:128位无符号整型键
  • eosio::checksum256:256位固定大小字典键
  • double:双精度浮点键
  • long double

2. EOS智能合约与EOS数据库的数据交互

智能合约无法直接操作存储在硬盘中的数据表,而是需要使用multi_index作为中间工具(或者叫容器),每个multi_index实例都与一个特定账户的特定数据表进行交互(取决于实例化时的参数)

3. 动作上下文 action context

包含内容

  • 当前交易数据 the Current Transaction Data.
  • 交易头 transaction header
  • 交易中所有原始操作的动作有序vector
  • 交易中上下文无关操作的向量
  • 由实现契约的代码定义的可修剪上下文无关数据集(作为blob向量提供)以及blob向量的完整索引。
    a prunable set of context free data (provided as a vector of blobs) defined by the code that implements the contract, and a full index to the vector of blobs.

在操作处理之前,EOSIO会为该操作设置一个干净的工作内存,用以存储动作的工作内存变量。

一个动作的工作内存仅对该动作可用,甚至对同一事务中的动作也是如此。

当执行另一个操作时可能设置的变量在另一个操作的上下文中不可用。在操作之间传递状态的唯一方法是将其持久化并从EOSIO数据库中检索。

3.1 一个动作的其他功能

-在EOSIO持久存储中保持更改状态

-将当前交易通知收件人

-向新接收方发送内联操作请求

-生成新(递延)交易记录

-取消现有(正在进行的)延迟事务(即取消已提交的延迟事务请求)

多索引表 (2)基本概念相关推荐

  1. SQL Server Insert 操作效率(堆表 VS 聚集索引表)

    "SQL Server的Insert操作在堆表或者聚集索引表的时候,哪个效率更高?为什么高?" 之前有同事问过我这个问题,为了确保日志库的记录效率,于是我做了简单测试了,首先要先强 ...

  2. Lucene倒排索引简述 之索引表

    文章目录 一.前言 二.理论 三.Lucene的实现 四.Lucene索引文件初印象 五. 什么是Terms Index 1. Burst-Trie 2. FST 六.什么是Terms Diction ...

  3. Phonenix4.9 (添加二级索引,新版本本地索引表变更) hbase1.25的集成测试

    1.安装habse 1.25 2.下载并且解压  Phonenix 4.9  (所有节点) 我用的是:apache-phoenix-4.9.0-HBase-1.2-bin.tar.gz 3. 将Pho ...

  4. HBase 索引表结构

    1. 索引表的结构 在HBase中,表格的Rowkey按照字典排序,Region按照RowKey设置split point进行shard,通过这种方式实现的全局.分布式索引,成为了其成功的最大的砝码 ...

  5. 重新理解SQL Server的聚集索引表与堆表

    目录 目录 简述SQL Server表的类型 如何区分聚集索引表与堆表 聚集索引表与堆表的正确使用 参考资料 简述SQL Server表的类型 由于当前关系型数据库(RDBMS)种类繁多,存在对标准S ...

  6. postgresql 查看数据库,表,索引,表空间以及大小

    为什么80%的码农都做不了架构师?>>>    postgresql 查看数据库,表,索引,表空间以及大小 1.查看数据库 #psql -U postgres //\加上字母l,相当 ...

  7. 数据结构-串操作应用之词索引表

    为书库创建查询索引表 建立词索引表基本步骤: 1.从书目文件中读入一个书目单. 2.从书目单中提取所有关键字插入词表. 3.对词表中的每一个关键字在索引表中进行查找并作相应的插入操作. 详细操作: 1 ...

  8. [性能] SAP销售订单取数逻辑优化---索引表

    我也分享了许多篇性能优化的帖子,主要集中在sql.语法及合理的索引方面.我们在表上加索引确实能大幅提升性能,但是索引的数量.所需字段及利用率都是我们在新建索引时需要考虑的,对于大多数abaper而言, ...

  9. [翻译] 聚集索引表 VS 堆表

    前言: 本文对这篇博客Clustered Tables vs Heap Tables 的翻译, 如有翻译不对或不好的地方,敬请指出,大家一起学习进步. 问题描述 创建一个新表时,一个非常重要的设计原则 ...

  10. Service Team在索引表CRMD_ORDER_INDEX中的存储设计

    本文介绍Service Team在索引表CRMD_ORDER_INDEX中的存储设计 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

最新文章

  1. python-requests官网_requests使用心得
  2. QPS和并发数,这次给你说清楚
  3. 同济大学计算机学院徐老师,第十八届同济大学程序设计竞赛暨高校网络友谊赛圆满落幕...
  4. 成功解决无法连接到YLMF-201404228CG,在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败
  5. linux 下oracle启动步骤
  6. printf不能直接输出string类型
  7. Linux 实例常用内核网络参数介绍与常见问题处理
  8. 通用技术和信息技术合格考知识点_高二信息与通用技术会考知识点
  9. 【工具】Notepad++的一些常用配置
  10. Linux命令kill和signal
  11. 【rocketMQ】1、搭建MQ服务器,生产一个订单与消费一个订单
  12. ext4 关闭延迟分配
  13. libSVM + VS2013 + C++使用介绍
  14. H5 微信分享显示标题和图标
  15. 【保姆级入门系列】阿ken教你学 Python(五) ——函数
  16. Matisse图片选择
  17. Java多线程基础(下)
  18. 实现移动端查看控制台
  19. 使用FastDeploy在英特尔CPU和独立显卡上端到端高效部署AI模型
  20. Toast类实现消息提示框

热门文章

  1. 工厂方法模式和简单工厂模式的区别
  2. 中国数据中心市场时评—简析全国数据中心布局情况
  3. 如何优化UPS的工作模式为数据中心节省运营成本
  4. 首批49个国家绿色数据中心名单公布
  5. azure mysql 配置,微软Azure云MySQL in-app 的配置,简化PHP内容管理系统配置
  6. BigData:大数据开发的简介、核心知识(linux基础+Java/Python编程语言+Hadoop{HDFS、HBase、Hive}+Docker)、经典场景应用之详细攻略
  7. DL之Attention:Attention注意力机制的简介、应用领域之详细攻略
  8. Crawler:利用Beautifulsoup库+find_all方法实现下载在线书架小说《星祖的电影世界》
  9. 导数,微积分,牛顿运动学制作创意地图
  10. eclipse打可运行的jar