返回首页

gbase数据、南大通用产品文档:GBase8s功能概述

更新日期:2024年09月11日

GBase 8s 提供的自主访问控制(Discretionary Access Control, DAC)功能非
常灵活,用户可对不同的数据对象设定不同的访问权限,同时,不同的用户对同一数
据对象也有不同的权限。用户可以将其拥有的访问权限转授给其他用户。自主访问控
制是基于用户的,由数据对象的拥有者决定哪些用户可以对该数据对象进行访问,访
问权限完全由数据对象的拥有者决定。
用户对数据对象的操作权利被称为权限,用户权限是由数据库对象(库、表、字
段等)和操作类型(DDL、DML 等)两个要素组成,对用户权限的定义就是定义该用户
可以对哪些数据库对象进行哪些类型的操作。
该功能不受配置参数控制。

返回expr 的标准方差(standard variance)。这是对标准SQL 的扩展。标准SQL 函
数VAR_POP()可以代替使用。
GBase UP 扩展了GROUP BY 的用法。
在SELECT 表达式中,
用户可以使用或计算
没有出现在GROUP BY 部分中的列,它代表这个组的任何可能的值。用户可以使
用它避免在不必要的分类项目上进行排序和分组,这样会得到更好的性能。
示例

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 572
示例1:
gbase> SELECT C.C_CITY, L.LO_SHIPMODE,L.LO_SUPPLYCOST,MAX(L.LO_SUPPLYCOST) FROM
SSBM.LINEORDER L, SSBM.CUSTOMER C WHERE L.LO_CUSTKEY=C.C_CUSTKEY GROUP BY
L.LO_SHIPMODE;
+------------+----------------------------------------------------+
| C_CITY | LO_SHIPMODE | LO_SUPPLYCOST | MAX(L.LO_SUPPLYCOST) |
+-------+----------------------------------+----------------------+
| SAUDI ARAO | TRUCK | 74711 | 125939 |
| SAUDI ARAO | MAIL | 76638 | 125939 |
| SAUDI ARAO | REG AIR | 99822 | 125939 |
| SAUDI ARAO | AIR | 62047 | 125939 |
| SAUDI ARAO | FOB | 57061 | 125939 |
| RUSSIA 5 | RAIL | 70570 | 125939 |
| EGYPT 9 | SHIP | 88646 | 125939 |
+-------+---------------------------------------------------------+
7 rows in set (4.71 sec)
如果用户在GROUP BY 部分省略的列在分组中不是唯一的,请不要使用这个特性,
否则将得到不可预知的结果。
GROUP BY 优化
使用hint 优化GROUP BY:
drop table if exists users,products,orders;
create table users(u_id int,u_name char(10),birthday datetime,address varchar(10));
create table products(p_id int,p_name char(10),price float,stocks int);

create table orders(o_id int,u_id int,p_id int,amount int);

insert into users values (0,'zhao','1990-12-29 12:00:00','中国.吉林.长春');
insert into users values (1,'qian','1990-12-29 12:00:00','中国.北京');
insert into users values (2,'sun','1990-12-29 12:00:00','中国.上海');
insert into users values (3,'li','1990-12-29 12:00:00','中国.天津');
insert into users values (4,'zhou','1990-12-29 12:00:00','中国.湖北.武汉');
insert into users values (5,'wu','1990-12-29 12:00:00','中国.湖南.长沙');
insert into users values (6,'zheng','1990-12-29 12:00:00','中国.河北.沧州');
insert into users values (7,'wang','1990-12-29 12:00:00','中国.辽宁.沈阳');
insert into users values (8,'zhao','1990-12-29 12:00:00','中国.云南.昆明');
insert into users values (9,'li','1990-12-29 12:00:00','中国.西藏.拉萨');
insert into orders values (600001,1,100010,2500);
insert into orders values (600002,3,100008,3500);
insert into orders values (600003,4,100009,500);
insert into orders values (600004,5,100007,5000);
insert into orders values (600005,9,100003,2510);
insert into orders values (600006,0,100004,10500);

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 573
insert into orders values (600007,3,100002,5500);
insert into orders values (600008,3,100001,6000);
insert into orders values (600009,4,100009,2100);
insert into orders values (600010,5,100001,1300);
insert into orders values (600011,6,100007,8900);
insert into orders values (600012,9,100008,2900);
insert into orders values (600013,2,100009,6900);
insert into orders values (600014,1,100002,3600);
insert into orders values (600015,1,100003,1500);
SELECT /*+ first_groupby */ distinct `users`.u_name , sum(orders.amount) FROM users,
orders WHERE
users.u_id =
orders.u_id
GROUP BY
`users`.u_name
ORDER BY `users`.u_name
limit 3;
上面的sql 会先在orders 表上做group by 之后再去join users。
注意
如果使用命令行工具,在启动命令行工具时需要加 -c 参数。
由于数据库之间的差异,VARIANCE()同oracle VARIANCE()的函数行为不一
致。
OLAP 函数
GBase UP 提供了丰富的OLAP 函数,辅助用户完成一些复杂的查询统计。在使用
这些函数时,请注意以下几点事项:

OLAP 函数中的PARTITION BY 和ORDER BY 的括号内不再支持使用别名。
SELECT a AS e ,RANK() OVER(ORDER BY e) FROM t1; -- a AS e 后OVER(ORDER
BY e)引用了别名e,不支持此种别名引用。

OLAP 函数中的PARTITION
BY 和ORDER
BY 的括号内的整型数值不是用于指定查
询结果列的索引。
SELECT a, RANK() OVER(ORDER BY 1) FROM t1;在这个查询语句中,ORDER BY
括号里的1 不是用于指定引用查询结果列的索引的含义,即不是指代a 列,而
是当作常量1 来处理。
GROUP BY 类函数
演示所用的表及数据。
DROP TABLE IF EXISTS t3;
CREATE TABLE t3 (color_type varchar(20),color_count int, in_date date);
插入演示数据。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 574
INSERT INTO t3 (color_type,in_date,color_count) VALUES('black','2010-09-11',18),('b
lack','2010-10-05',18),('black','2010-10-13',31),('blue','2010-09-21',23),('blue','
2010-09-30',15),('blue','2010-10-11',62),('red','2010-09-12',41),('red','2010-10-01
',12),('red','2010-10-05',11);

设置文件权限安全策略
背景信息
数据库在安装过程中,会自动对其文件权限(包括运行过程中生成的文件,如日志文件
等)进行设置。其权限规则如下:

数据库程序目录的权限为0750。

数据库数据文件目录的权限为0700。
数据库部署时通过创建xml 配置文件中的tmpMppdbPath 参数指定目录(若未指定,则
默认创建/tmp/$USER_mppdb 目录)来存放“.s.PGSQL.*”文件,该目录
和文件权限
设置为0700。

数据库的数据文件、审计日志和其他数据库程序生成的数据文件的权限为0600,运行
日志的权限默认不高于0640。

普通操作系统用户不允许修改和删除数据库文件和日志文件。
数据库程序目录及文件权限
数据库安装后,部分程序目录及文件权限如表7-18 所示。
表7-18 文件及目录权限
文件/目录
父目录
权限
bin
-
0700
lib
-
0700
share
-
0700
data
(数据库节点/数据库主节
点)
-
0700
base
实例数据目录
0700
global
实例数据目录
0700
pg_audit
实例数据目录(可配置)
0700

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
198
pg_log
实例数据目录(可配置)
0700
pg_xlog
实例数据目录
0700
postgresql.conf
实例数据目录
0600
pg_hba.conf
实例数据目录
0600
postmaster.opts
实例数据目录
0600
pg_ident.conf
实例数据目录
0600
gs_initdb
bin
0700
gs_dump
bin
0700
gs_ctl
bin
0700
gs_guc
bin
0700
gsql
bin
0700
archive_status
pg_xlog
0700
libpq.so.5.5
lib
0600
建议
数据库在安装过程中,会自动对其文件权限(包括运行过程中生成的文件,如日志文件
等)进行设置,适合大多数情况下的权限要求。如果用户产品对相关权限有特殊要求,建议
用户安装后定期检查相关权限设置,确保完全符合产品要求。