当前位置: 首页 > news >正文

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

文章目录

    • 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)

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

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

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

图片

相关文章:

  • QT QSplashScreen
  • 4、创建第一个鸿蒙应用
  • [文件读取]lanproxy 文件读取 (CVE-2021-3019)
  • 33.算术运算符
  • K8S知识点(十)
  • arcgis--NoData数据处理
  • 迅为iTOPRK3588开发板系统定制(无法联网)
  • IDEA 使用Reset Current Branch to Here 进行git 版本控制,图文操作
  • uniapp发行web页面在老版本浏览器打开一片空白
  • Interactive Analysis of CNN Robustness
  • 通过顶顶通呼叫中心中间件玩转FreeSWITCH媒体流
  • 人工智能与充电技术:携手共创智能充电新时代
  • junit写搜索树测试
  • 赛宁网安入选国家工业信息安全漏洞库(CICSVD)2023年度技术组成员单
  • OpenCV+计算摄影
  • 深度探究深度学习常见数据类型INT8 FP32 FP16的区别即优缺点
  • 数据分析实战 | 多元回归——广告收入数据分析
  • [Kettle] 记录处理
  • 【广州华锐视点】海外制片人VR虚拟情景教学带来全新的学习体验
  • 【 云原生 | K8S 】kubectl 详解
  • 浙江省委金融办原副主任潘广恩被“双开”
  • 李伟任山东省委常委、省纪委书记
  • 魔都眼|锦江乐园摩天轮“换代”开拆,新摩天轮暂定118米
  • 国务院关税税则委员会关于调整对原产于美国的进口商品加征关税措施的公告
  • 硅料收储挺价“小作文”发酵光伏板块罕见大涨,知情人士:确实在谈
  • 学习教育期间违规吃喝,李献林、叶金广等人被通报