返回首页

gbase数据、南大通用产品文档:GBase8a数据加密概述

更新日期:2024年09月11日

GBase 8a MPP Cluster 数据加密提供对数据库落地数据的软加密功能,用来满足用
户的安全需求,提高系统的安全性。数据加密按照数据文件中的DC 为最小单位进
行,可以实现表级或者列级不同粒度的加密要求。数据库中所有加密数据都使用同
一个密钥,系统启动时会自动读取已创建的密钥文件内容。数据使用密钥文件内容

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
450
加解密后,密钥文件内容就不能再改变。
数据加密支持的操作如下:

支持加密关键字encrypt 建表;

支持表级或者列级不同粒度的加密要求;

支持表加密属性的查询;

支持密钥证书管理包括密钥证书的创建、打开、关闭、口令修改、密钥转换
操作;

支持密钥类型转换,即从明文密钥转换到密文密钥,或从密文密钥转换到明
文密钥:

明文密钥:无须用户口令,可随机生成也可手动输入;

密文密钥:须用户输入口令,根据口令对随机生成的密钥加密存储;

支持查询当前密钥证书状态;

支持行存列加密。

下列 SPL 例程使用 IF - ELIF - ELSE 结构来比较该例程接受的两个参数。
图: 比较两个参数的 IF - ELIF - ELSE 结构。
CREATE FUNCTION str_compare( str1 CHAR(20), str2 CHAR(20))
RETURNING INTEGER;

DEFINE result INTEGER;

IF str1 > str2 THEN
LET result = 1;
ELIF str2 > str1 THEN
LET result = -1;
ELSE
LET result = 0;
END IF
RETURN result;
END FUNCTION;
假设您以下图所示的列定义名为 manager 的表。
图: 定义 manager 表。
CREATE TABLE manager
(
mgr_name VARCHAR(30),
department VARCHAR(12),
dept_no SMALLINT,
direct_reports SET( VARCHAR(30) NOT NULL ),
projects LIST( ROW ( pro_name VARCHAR(15),
pro_members SET( VARCHAR(20) NOT NULL ) )

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 290 -
NOT NULL),
salary INTEGER,
);
下列 SPL 例程使用 IF - ELIF - ELSE 结构来检查 direct_reports 列中 SET 中元素的数目,
并基于该结果来调用不同的外部例程。
图: 检查 SET 中元素数的 IF - ELIF - ELSE 结构。
CREATE FUNCTION checklist( d SMALLINT )
RETURNING VARCHAR(30), VARCHAR(12), INTEGER;

DEFINE name VARCHAR(30);
DEFINE dept VARCHAR(12);
DEFINE num INTEGER;

SELECT mgr_name, department,
CARDINALITY(direct_reports)
FROM manager INTO name, dept, num
WHERE dept_no = d;
IF num > 20 THEN
EXECUTE FUNCTION add_mgr(dept);
ELIF num = 0 THEN
EXECUTE FUNCTION del_mgr(dept);
ELSE
RETURN name, dept, num;
END IF;

END FUNCTION;
cardinality() 函数计数集合包含的元素数。要获取更多信息,请参阅 基数函数。
SPL 例程中的 IF - ELIF - ELSE 结构有至多下列四个部分:

IF THEN 条件
如果跟在 IF 语句之后的该条件为 TRUE,则例程执行 IF 块中的语句。如果该条
件为假,则例程对 ELIF 条件求值。
IF 语句中的表达式可为任何有效的条件,
如 GBase 8s SQL 指南:
语法 的 Condition
段描述的那样。
要了解 IF 语句的完整语法和详细的讨论,
请参阅
《GBase 8s SQL 指
南:语法》。

一个或多个 ELIF 条件(可选的)

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 291 -
仅当 IF 条件为假时,例程才对 ELIF 条件求值。如果 ELIF 条件为真,则例程执
行 ELIF 块中的语句。如果 ELIF 条件为假,则例程或对下一个 ELIF 块求值,或
执行 ELSE 语句。

ELSE 条件(可选的)
如果 IF 条件和所有 ELIF 条件都为假,则例程执行 ELSE 块中的语句。

END IF 语句
END IF 语句结束该语句块。

bar_server 表在安装中列出数据库服务器。该表用于确保备份对象在恢复期间返回到它们
的正确位置。
表 1. bar_server 表列

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 112 -

列名
类型
解释
srv_name
VARCHAR(128,0)
sqlhosts 文件中的 dbservername 条目指定的
dbservername 值。
数据库服务器名称最多可有 128 个字符。
srv_node
CHAR(256)
数据库服务器驻留的计算机的主机名。
主机名最多可有 256 个字符。
srv_synctime
INTEGER
onsmsync 运行的时间。