openGauss学习笔记-123 openGauss 数据库管理-设置账本数据库-账本数据库概述

news2024/11/25 2:42:31

文章目录

    • openGauss学习笔记-123 openGauss 数据库管理-设置账本数据库-账本数据库概述
      • 123.1 背景信息
      • 123.2 操作步骤

openGauss学习笔记-123 openGauss 数据库管理-设置账本数据库-账本数据库概述

123.1 背景信息

账本数据库融合了区块链思想,将用户操作记录至两种历史表中:用户历史表和全局区块表。当用户创建防篡改用户表时,系统将自动为该表添加一个hash列来保存每行数据的hash摘要信息,同时在blockchain模式下会创建一张用户历史表来记录对应用户表中每条数据的变更行为;而用户对防篡改用户表的一次修改行为将记录至全局区块表中。由于历史表具有只可追加不可修改的特点,因此历史表记录串联起来便形成了用户对防篡改用户表的修改历史。

用户历史表命名和结构如下:

表 1 用户历史表blockchain.__hist所包含的字段

字段名类型描述
rec_numbigint行级修改操作在历史表中的执行序号。
hash_inshash16INSERT或UPDATE操作插入的数据行的hash值。
hash_delhash16DELETE或UPDATE操作删除的数据行的hash值。
pre_hashhash32当前用户历史表的数据整体摘要。

表 2 hash_ins与hash_del场景对应关系

-hash_inshash_del
INSERT(√) 插入行的hash值
DELETE(√) 删除行的hash值。
UPDATE(√) 新插入数据的hash值(√) 删除前该行的hash值。

123.2 操作步骤

1.创建防篡改模式。

例如,创建防篡改模式ledgernsp。

openGauss=# CREATE SCHEMA ledgernsp WITH BLOCKCHAIN;

2.在防篡改模式下创建防篡改用户表。

例如,创建防篡改用户表ledgernsp.usertable。

openGauss=# CREATE TABLE ledgernsp.usertable(id int, name text);

查看防篡改用户表结构及其对应的用户历史表结构。

openGauss=# \d+ ledgernsp.usertable;
openGauss=# \d+ blockchain.ledgernsp_usertable_hist;

执行结果如下:

openGauss=# \d+ ledgernsp.usertable;
                     Table "ledgernsp.usertable"
 Column |  Type   | Modifiers | Storage  | Stats target | Description
--------+---------+-----------+----------+--------------+-------------
 id     | integer |           | plain    |              |
 name   | text    |           | extended |              |
 hash   | hash16  |           | plain    |              |
Has OIDs: no
Options: orientation=row, compression=no
History table name: ledgernsp_usertable_hist

openGauss=# \d+ blockchain.ledgernsp_usertable_hist;
             Table "blockchain.ledgernsp_usertable_hist"
  Column  |  Type  | Modifiers | Storage | Stats target | Description
----------+--------+-----------+---------+--------------+-------------
 rec_num  | bigint |           | plain   |              |
 hash_ins | hash16 |           | plain   |              |
 hash_del | hash16 |           | plain   |              |
 pre_hash | hash32 |           | plain   |              |
Indexes:
    "gs_hist_16388_index" PRIMARY KEY, btree (rec_num int4_ops) TABLESPACE pg_default
Has OIDs: no
Options: internal_mask=263

img 说明:

  • 防篡改表不支持非行存表、临时表、外表、unlog表、非行存表均无防篡改属性。
  • 防篡改表在创建时会自动增加一个名为hash的系统列,所以防篡改表单表最大列数为1599。

img 警告:

  • dbe_perf和snapshot两个模式不能ALTER为blockchain属性,如:ALTER SCHEMA dbe_perf WITH BLOCKCHAIN;。
  • 系统模式不能 ALTER 为blockchain属性,如:ALTER SCHEMA pg_catalog WITH BLOCKCHAIN;。
  • 包含表的SCHEMA不能通过ALTER SCHEMA语句修改属性为blockchain。

3.修改防篡改用户表数据。

例如,对防篡改用户表执行INSERT/UPDATE/DELETE。

openGauss=# INSERT INTO ledgernsp.usertable VALUES(1, 'alex'), (2, 'bob'), (3, 'peter');
INSERT 0 3
openGauss=# SELECT *, hash FROM ledgernsp.usertable ORDER BY id;
 id | name  |       hash
----+-------+------------------
  1 | alex  | 1f2e543c580cb8c5
  2 | bob   | 8fcd74a8a6a4b484
  3 | peter | f51b4b1b12d0354b
(3 rows)

openGauss=# UPDATE ledgernsp.usertable SET name = 'bob2' WHERE id = 2;
UPDATE 1
openGauss=# SELECT *, hash FROM ledgernsp.usertable ORDER BY id;
 id | name  |       hash
----+-------+------------------
  1 | alex  | 1f2e543c580cb8c5
  2 | bob2  | 437761affbb7c605
  3 | peter | f51b4b1b12d0354b
(3 rows)


openGauss=# DELETE FROM ledgernsp.usertable WHERE id = 3;
DELETE 1
openGauss=# SELECT *, hash FROM ledgernsp.usertable ORDER BY id;
 id | name |       hash
----+------+------------------
  1 | alex | 1f2e543c580cb8c5
  2 | bob2 | 437761affbb7c605
(2 rows)

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1214076.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务号转订阅号如何操作

服务号和订阅号有什么区别?服务号转为订阅号有哪些作用?一、文章推送的篇数不同服务号在文章的推送篇数上是有所限制的(每月推4次)订阅号则每天可推送一篇文章。二、定义不同服务号主要是为关注用户提供服务使用的;订阅…

【仿真动画】ABB IRB 8700 机器人搬运(ruckig在线轨迹生成)动画欣赏

场景 动画 一、IRB 8700简介 二、动画脚本重点分析 2.1 sim.moveToPose 通过在两个 poses 之间执行插值,使用 Ruckig 在线轨迹生成器生成对象运动数据。该函数可以通过处理 4 个运动变量(x、y、z 和两个姿势之间的角度)或单个运动变量&#…

服务器数据恢复—VMware虚拟化下误操作导致服务器崩溃的数据恢复案例

服务器故障&分析: VMware虚拟化,vmfs文件系统,共3块磁盘。工作人员误操作将VMware虚拟化重装系统,服务器崩溃。 正常情况下,重装系统会导致文件系统元文件被覆盖。要恢复数据须找到重装系统前的文件系统残留信息并…

操作系统(二 )| 进程控制 进程状态 进程描述 进程控制 进程同步互斥

文章目录 1 进程和程序区别2 进程状态2.1 进程的5种基本状态2.2 进程状态之间转换2.3 七状态模型 3 进程描述3.1 进程控制块 PCB3.2 进程块组织方式 4 进程控制5 进程同步 互斥5.1 区分进程互斥和同步5.2 核心方案5.3 其他方案方案1 设置锁变量方案2 严格轮转法方案3 Peterson解…

003.文件描述符、重定向

1、文件描述符 文件描述符是与输入和输出流相关联的整数。最广为人知的文件描述符是stdin、stdout和stderr。我们可以将某个文件描述符的内容重定向到另一个文件描述符中。 在编写脚本的时候会频繁用到标准输入(stdin)、标准输出(stdout&am…

图像分类:弥合像素和理解之间的差距

一、介绍 在人工智能的广阔领域中,图像分类作为一种关键应用脱颖而出,它无缝地融合了计算机视觉和机器学习的复杂性。图像分类的核心是训练机器对数字图像中的对象或场景进行识别和分类。这项技术有着广泛的应用,从自动驾驶汽车和医疗诊断到社…

Spring-Spring之AOP底层源码解析(下)

ProxyFactory选择cglib或jdk动态代理原理 ProxyFactory在生成代理对象之前需要决定到底是使用JDK动态代理还是CGLIB技术: // config就是ProxyFactory对象// optimize为true,或proxyTargetClass为true,或用户没有给ProxyFactory对象添加interface if (config.isOpt…

CNVD-2021-09650:锐捷NBR路由器(guestIsUp.php)RCE漏洞复现 [附POC]

文章目录 锐捷NBR路由器guestIsUp.php远程命令执行漏洞(CNVD-2021-09650)复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 锐捷NBR路由器guestIsUp.php远程命令执行漏洞(CNVD-2021-09650)复现 [附POC] 0x01 前言 免…

解决 requests 库上传大文件速度慢的问题:从问题原因到解决方案

提要:本文将 深入探讨 requests 库上传大文件速度慢的问题,并提出相应的解决方案。 通过本文,您可以了解到 requests 库上传大文件的原理,了解问题的原因并找到解决方案。 最后,我们将 探讨如何优化上传大文件的处理速…

每日一题 2656. K 个元素的最大和(简单)

感觉每日一题除了困难之外很久没有做到有营养的题了 class Solution:def maximizeSum(self, nums: List[int], k: int) -> int:return (2 * max(nums) k - 1) * k // 2

二叉树(进阶)

文章目录 1.内容安排说明2. 二叉搜索树2.1二叉搜索树的概念2.2二叉搜索树的实现2.3二叉树的性能: 搜索二叉树的应用k 模型kv模型 1.内容安排说明 二叉树在前面c数据结构阶段;已经讲过了;本节取名二叉树进阶的原因是: 1.map和set特…

阿里云99元ECS云服务器老用户也能买,续费同价!

阿里云近日宣布了2023年的服务器优惠活动,令用户们振奋不已。最引人瞩目的消息是,阿里云放开了老用户的购买资格,99元服务器也可以供老用户购买,并且享受续费的99元优惠。此外,阿里云还推出了ECS经济型e实例&#xff0…

单片机实验(一)

前言 实验一:用单片机控制多只数码管(屏)分别左、右滚动显示自己完整的学号; 实验二:用单片机控制LED1616点阵交替正序、逆序显示自己的中文姓名。 参考链接: LED数码管的静态显示与动态显示(KeilProteus&#xff0…

城市智慧排水监测系统,实时守护城市水脉

城市智慧排水监测系统,通过新一代信息技术与排水技术的完美融合,让数据价值得以充分发掘,实现智慧排水监测系统的控制智能化、数据资源化、管理精确化、决策智慧化。它如同城市的守护者,时刻关注着城市排水系统的运行状态&#xf…

算法-二分查找-简单-搜索插入位置

记录一下算法题的学习3 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入: nums [1,3,5,6], …

Windows server 2012 R2系统服务器远程桌面服务激活服务器RD授权分享

Windows server 2012 R2系统服务器远程桌面服务激活服务器RD授权 二、激活服务器,获取许可证服务器ID和许可证密钥包ID三、激活终端服务器四、配置远程桌面会话主机授权服务器 上期我分享了Windows server 2012 R2系统服务器远程桌面服务的安装教程,若是…

基于模拟退火算法的TSP问题建模求解(Python)

基于模拟退火算法的TSP问题建模求解(Python) 一、模拟退火算法(Simulated Annealing Algorithm,SAA)工程背景模拟退火算法用于优化问题求解原理 二、旅行商问题(Travelling salesman problem,TS…

Sentinel 流控规则

Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 SpringbootDubboNacos 集成 Sentinel&…

【机器学习7】优化算法

1 有监督学习的损失函数 1.1 分类问题 对二分类问题, Y{1,−1}, 我们希望sign f(xi,θ)yi, 最自然的损失函数是0-1损失, 函数定义特点0-1损失函数非凸、非光滑,很难直接对该函数进行优化Hinge损失函数当fy≥1时&…

机器学习中的偏差漂移:挑战与缓解

一、介绍 机器学习算法已在各个行业得到广泛采用,在自动化流程、制定数据驱动决策和提高效率方面发挥着关键作用。然而,他们也面临着挑战,其中一个重要的问题是偏见。机器学习模型中的偏差可能会导致不公平和歧视性的结果,并对现实…