《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(上)——三、产品相关概念(中)

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(上)——三、产品相关概念(中)

更多精彩内容,欢迎观看:《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(上)——三、产品相关概念(上):

https://developer.aliyun.com/article/1222912?groupCode=certification


1. 权限管理

 

权限管理支持从实例、数据库、schema到object权限的控制。

 

1) 逻辑结构及其权限关系

 

实例权限:实例连接鉴权。

数据库权限:grant赋予是否允许连接或创造schema的权限和Revoke回收。

 

数据库级别权限包括:

是否允许连接数据库。

 是否允许在数据库中创建schema。

 默认允许public角色连接,即允许任何人连接。

 默认不允许除了超级用户和owner之外的任何人在数据库中创建schema。

 默认会自动创建名为public的schema,且允许任何人在里面创建对象。

 

schema权限:grant赋予允许查询schema中的对象和revoke回收。

 

schema级别权限包括:

 是否允许查看schema中的对象;

 是否允许在schema中创建对象;

 默认情况下新建的schema的权限不会赋予给public角色,因此除了超级用户和owner,任何人都没有权限查看schema中的对象或者在schema中新建对象。

 

object权限:grant赋予和revoke回收。

 

2) 权限管理:授予和撤销权限

 

授予权限的关键字:GRANT

 

GRANT权限ON对象类型对象名TO用户名,如:

 

 GRANT SELECT ON TABLE table TO user1;  --允许 user1 select table

 GRANT SELECT ON TABLE table TO public; --允许所有人 select table

 

撤销权限的关键字:REVOKE

 

REVOKE权限ON对象类型对象名FROM用户名,如:

 

 REVOKE SELECT ON TABLE table FROM user1; --不再允许 user1 select table

 

2. UDF与存储过程

 

1) UDF与存储过程概述

 

在AnalyticDB PostgreSQL中,创建UDF和存储过程都是采用CREATE FUNCTION语法。

不同于ORACLE、MYSQL等数据库,PostgreSQL中并没有专门用于创建存储过程的CREATE PROCEDURE语法。

以SQL过程语言PL/pgSQL用法最为广泛,最为贴近内核。

 

image.png

 

PL/pgSQL的功能特点

 

用于创建函数和触发器过程

为SQL语言增加控制结构

执行复杂的计算

继承所有用户定义类型、函数、操作符

定义为被服务器信任的语言

容易使用

 

2) PL/pgSQL基本结构介绍

 

AnalyticDB PostgreSQL函数通常结构如下:

 

CREATEFUNCTION  --函数名

CREATE FUNCTION somefunc(integer, text) RETURNS integer --返回类型

AS

functionfunction  --参数

function body text  --函数体

functionfunction

LANGUAGE plpgsql; --解释语言

 

3) 块结构介绍

 

PL/pgSQL是一个块结构语言,函数体由块结构组成,定义如下:

BLOCK[<<label>>][DECLARE  declarations]BEGIN  statementsEND [label];

  

注意

块中的每个声明和每条语句都是用一个分号终止。

块结构支持嵌套使用。子块用于逻辑分组,在子块中声明的变量在其范围之内,将屏蔽跟这个子块外部有着同样的名字的变量。

BEGIN之后不要分号。

END之后要分号。最外层的可缺省。

END后的标签要和块开始的标签保持一致。

所有关键字不区分大小写,默认转换成小写,除非被双引号引用。

注释的方法和普通SQL一样。

PL/pgSQL里用于语句块分组的 BEGIN/END 不是开始或者结束事务。

 

块结构示例

CREATE OR REPLACE FUNCTION somefunc()RETURNS integer AS $$
<<outerblack>>
DECLARE
quantity integer:=30;
BEGIN
RAISE NOTICE 'Quantity here is %', quantity;  -- Prints 30
Quantity:= 50;
--
--Create a subblock
--
DECLARE
quantity integer:80
BEGIN
RAISE NOTICE 'Quantity here is %', quantity;  -- Prints 80
RAISE NOTICE 'Outer quantity here is %', outerblock.quantity; --Prints 50
END;
RAISE NOTICE 'Quantity here is %, quantity; --Prints 50
RETURN quantity;
END;
$$LANGUAGE plpgsal;

  

4) 捕获异常

 

PL/pgSQL通过EXCEPTION从句捕获异常。

 

[<<label>>]
[DECLARE
  declarations]
BEGIN
  statements
EXCEPTION
WHEN condition [OR condition ...] THEN
handler_statements
[WHEN condition[OR condition ...] THEN
handler statements
...]
END;

 

注意

condition表示异常类别,参考errcodes:

https://help.aliyun.com/document_detail/205012.html

特殊的异常类别OTHERS,可以匹配所有类别的异常。

块中包含EXCEPTION从句,则能够形成一个子事务,并且能够在不影响外部事务的前提下回滚。

 

示例

 

CREATE OR REPLACE FUNCTION f_block_exception()
RETURNS integer
LANGUAGEplpgsql
AS Sfunction$
DECLARE
x integer:= 0;
y integer:= 0;
BEGIN
SELECT COUNT(*) INTO x FROM mytab WHERE lastname='zhang';
INSERT INTO mytab(firstname, lastname) VALUES('san','zhang);
DECLARE
msg text;
BEGIN
UPDATEmytab sET firstname: three'WHERElastnamzhang;
x:=x+1;
y:=x/0;  --Exception occurs
EXCEPTION WHEN OTHERS THEN
GET STACKED DIAGNOSTICS msg := MESSAGE_TEXT;
RAISE NOTICE 'Caught exception:%',msg;
RETURN x;
END;
END;
$function$;


 

image.png

 

5) UDF示例

 

创建表student,插入3条记录

 

create table student(name varchar(30), score float4);
insert into student values('张三',88),('李四,99),('王五,92);


创建函数将student记录转换成json格式

 

create or replace function f_student_to json(student)
returns json
language plpgsql
strict
as function$
declare
    stu alias for $1;
begin
    return row_to_json(stu);
end;
$function$;

 

创建操作符>!<使用f_student_to_json函数

 

create operator>!<(procedure=f_student_to_json,
leftarg=student);

 

使用操作符>!<遍历student表

selects>!<from students;


 更多精彩内容,欢迎观看:《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(上)——三、产品相关概念(下):

https://developer.aliyun.com/article/1222910?groupCode=certification

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
16天前
|
SQL 分布式计算 大数据
大数据新视界 --大数据大厂之Hive与大数据融合:构建强大数据仓库实战指南
本文深入介绍 Hive 与大数据融合构建强大数据仓库的实战指南。涵盖 Hive 简介、优势、安装配置、数据处理、性能优化及安全管理等内容,并通过互联网广告和物流行业案例分析,展示其实际应用。具有专业性、可操作性和参考价值。
大数据新视界 --大数据大厂之Hive与大数据融合:构建强大数据仓库实战指南
|
9天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 4 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
阿里云微服务引擎 MSE 及 API 网关 2025 年 4 月产品动态
|
20天前
|
人工智能 运维 监控
阿里云携手神州灵云打造云内网络性能监测标杆 斩获中国信通院高质量数字化转型十大案例——金保信“云内网络可观测”方案树立云原生运维新范式
2025年,金保信社保卡有限公司联合阿里云与神州灵云申报的《云内网络性能可观测解决方案》入选高质量数字化转型典型案例。该方案基于阿里云飞天企业版,融合云原生引流技术和流量“染色”专利,解决云内运维难题,实现主动预警和精准观测,将故障排查时间从数小时缩短至15分钟,助力企业降本增效,形成可跨行业复制的数字化转型方法论。
|
1月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
138 12
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2025 年 3 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
2月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2025 年 2 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
549 10
阿里云微服务引擎 MSE 及 云原生 API 网关 2025 年 2 月产品动态
|
2月前
|
负载均衡 容灾 Cloud Native
云原生应用网关进阶:阿里云网络ALB Ingress 全面增强
云原生应用网关进阶:阿里云网络ALB Ingress 全面增强
|
2月前
|
边缘计算 Cloud Native 调度
感谢认可!阿里云云原生大规模云边协同技术荣获浙江省科学技术进步奖一等奖
感谢认可!阿里云云原生大规模云边协同技术荣获浙江省科学技术进步奖一等奖
|
3月前
|
存储 分布式计算 物联网
美的楼宇科技基于阿里云 EMR Serverless Spark 构建 LakeHouse 湖仓数据平台
美的楼宇科技基于阿里云 EMR Serverless Spark 建设 IoT 数据平台,实现了数据与 AI 技术的有效融合,解决了美的楼宇科技设备数据量庞大且持续增长、数据半结构化、数据价值缺乏深度挖掘的痛点问题。并结合 EMR Serverless StarRocks 搭建了 Lakehouse 平台,最终实现不同场景下整体性能提升50%以上,同时综合成本下降30%。
372 58
|
3月前
|
SQL 存储 OLAP
阿里云 EMR Serverless StarRocks3.x,极速统一的湖仓新范式
阿里云 EMR Serverless StarRocks3.x,极速统一的湖仓新范式

热门文章

最新文章