返回首页

gbase数据、南大通用产品文档:GBase8a会话管理

更新日期:2024年09月11日

通过本功能您可以对会话信息进行管理,左侧树结构如下图所示:

GBaseDataStudio 管理工具手册
南大通用数据技术股份有限公司
- 97 -
图5- 433 会话管理左侧树
双击打开“会话”界面如下图所示:
图5- 434 会话信息列表
会话信息列表界面,上半部分显示所有会话信息列表,左下显示最新执行的
SQL,右下表显示会话的详细信息。
会话信息列表右键菜单,有“结束会话”

“终止查询”
、刷新等功能,如下图所

GBaseDataStudio 管理工具手册
- 98 -
南大通用数据技术股份有限公司
示:
图5- 435 会话信息列表右键菜单

存储在数据源上的一列数据有一个 SQL 数据类型。
GBase 8s ODBC Driver 将特定于 GBase 8s 的 SQL 数据类型映射为以 ODBC SQL 语法
定义的 ODBC SQL 数据类型。(驱动程序通过 SQLGetTypeInfo 返回这些映射。它还使
用 ODBC SQL 数据类型来描述 SQLColAttributes 和 SQLDescribeCol 中的列和参数的数
据类型)。

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 11 -

每一 SQL 数据类型对应于一个 ODBC C 数据类型。
在缺省情况下,
驱动程序假设存储位
置的 C 数据类型对应于该位置绑定至其的列或参数的 SQL 数据类型。
如果存储位置的 C
数据类型不是缺省的 C 数据类型,则应用程序可以使用 SQLBindCol 的 TargetType、
SQLGetData 的 fCType 参数,
以及 SQLBindParameter 中的 ValueType 参数来指定正确的
C 数据类型。在驱动程序从数据源返回数据之前,它将数据转换为指定的 C 数据类型。
在驱动程序将数据发送至数据源之前,
它将数据从指定的 C 数据类型转换为 SQL 数据类
型。
GBase 8s 数据类型名称不同于 Microsoft™ ODBC 数据类型名称。要获取关于这些差异的
信息,请参阅《GBase 8s ODBC Driver 程序员指南》。

使用gsql 操作密态数据库
步骤1 以操作系统用户gbase 登录数据库主节点。
步骤2 执行以下命令打开密态开关,连接密态数据库。
gsql -p PORT postgres -r -C
步骤3 创建客户端主密钥CMK 和列加密密钥CEK。具体涉及到的新增创建CMK 的语法
参考《GBase 8c V5_3.0.0_SQL 手册》CREATE CLIENT MASTER KEY 章节,创建的CEK
的语法参考《GBase 8c V5_3.0.0_SQL 手册》CREATE COLUMN ENCRYPTION KEY
--创建客户端加密主密钥(CMK)
postgres=# CREATE CLIENT MASTER KEY ImgCMK1 WITH (KEY_STORE = localkms,
KEY_PATH ="key_path_value1", ALGORITHM = RSA_2048);
postgres=# CREATE CLIENT MASTER KEY ImgCMK WITH (KEY_STORE = localkms,
KEY_PATH ="key_path_value2", ALGORITHM = RSA_2048);
postgres=# CREATE COLUMN ENCRYPTION KEY ImgCEK1 WITH VALUES
(CLIENT_MASTER_KEY = ImgCMK1, ALGORITHM =
AEAD_AES_256_CBC_HMAC_SHA256);
CREATE COLUMN ENCRYPTION KEY
查询存储密钥信息的系统表结果如下。
postgres=# SELECT * FROM gs_client_global_keys;
global_key_name | key_namespace | key_owner |
key_acl |
create_date
-----------------+---------------+-----------+---------+----------------------------
imgcmk1
| 2200
|
10
| 2022-06-06 11:04:00.656617
imgcmk
| 2200
|
10
| 2022-06-06 11:04:05.389746
(2 rows)

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
200
postgres=# SELECT column_key_name,column_key_distributed_id ,global_key_id,key_owner
FROM gs_column_keys;
column_key_name | column_key_distributed_id | global_key_id | key_owner
-----------------+---------------------------+---------------+-----------
imgcmk1
|
|
10
|
2022-06-06 11:04:00.656617
imgcmk
|
|
10
|
2022-06-06 11:04:05.389746
(2 rows)
postgres=# SELECT column_key_name,column_key_distributed_id ,global_key_id,key_owner
FROM gs_column_keys;
column_key_name | column_key_distributed_id | global_key_id | key_owner
-----------------+---------------------------+---------------+-----------
imgcek1
|
760411027
|
16392
|
10
imgcek
|
3618369306 |
16398
|
10
(2 rows)
步骤4 创建加密表。
postgres=# CREATE TABLE creditcard_info (id_number
int, name text encrypted with
(column_encryption_key = ImgCEK, encryption_type = DETERMINISTIC), credit_card
varchar(19) encrypted with (column_encryption_key = ImgCEK1, encryption_type =
DETERMINISTIC));
NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'id_number' as the distribution
column by default.
HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column.
CREATE TABLE
查询表的详细信息如下,Modifiers 值为encrypted 则表示该列是加密列。
postgres=# \d creditcard_info
Table "public.creditcard_info" Column
|
Type| Modifiers
-------------+-------------------+------------
id_number | integer
name
| text
credit_card | character varying | encrypted
步骤5 向加密表插入数据并进行等值查询。
postgres=# INSERT INTO creditcard_info VALUES (1,'joe','6217986500001288393');
INSERT 0 1
postgres=# INSERT INTO creditcard_info VALUES (2, 'joy','62199856783491543233');
INSERT 0 1
postgres=# select * from creditcard_info where name = 'joe';
id_number | name |
credit_card
-----------+------+---------------------

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
201
1 | joe | 6217986500001288393
(1 row)
注意:使用非密态客户端查看该加密表数据时是密文
postgres=# select id_number,name from creditcard_info;
id_number | name
-----------+--------------------
1 |
\x011aefabd754ded0a536a96664790622487c4d366d313aecd5839e410a46d29cba96a60e48310
00000ee7905 6a114c9a6c041bb552b78052e912a8b730609142074c63791abebd0d38
2 |
\x011aefabd76853108eb406c0f90e7c773b71648fa6e2b8028cf634b49aec65b4fcfb376f3531000
000f7471c868 6682de215d09aa87113f6fb03884be2031ef4dd967afc6f7901646b
(2 rows)
步骤6 (可选)对加密表进行alter 和update 操作。
postgres=# ALTER TABLE creditcard_info ADD COLUMN age int ENCRYPTED WITH
(COLUMN_ENCRYPTION_KEY = ImgCEK, ENCRYPTION_TYPE = DETERMINISTIC);
ALTER TABLE
postgres=# \d creditcard_info
Table "public.creditcard_info" Column
| Type| Modifiers
-------------+-------------------+------------
id_number | integer
name
| text
credit_card | character varying | encrypted
age
| integer
| encrypted
postgres=# ALTER TABLE creditcard_info DROP COLUMN age;
ALTER TABLE
postgres=# update creditcard_info set credit_card = '154320000011111111' where name = 'joy';
UPDATE 1
postgres=# select * from creditcard_info where name = 'joy';
id_number | name | credit_card
-----------+------+-------------------
2 | joy | 154320000011111111
(1 row)
----结束