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

本文涉及的产品
PolarDB Agent Express,2核4GB
云数据库 PolarDB MySQL 版,列存表分析加速 4核8GB
简介: 《阿里云认证的解析与实战-数据仓库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

相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
人工智能 关系型数据库 OLAP
光云科技 X AnalyticDB:构建 AI 时代下的云原生企业级数仓
AnalyticDB承载了光云海量数据的实时在线分析,为各个业务线的商家提供了丝滑的数据服务,实时物化视图、租户资源隔离、冷热分离等企业级特性,很好的解决了SaaS场景下的业务痛点,也平衡了成本。同时也基于通义+AnalyticDB研发了企业级智能客服、智能导购等行业解决方案,借助大模型和云计算为商家赋能。
975 17
|
7月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
8月前
|
存储 人工智能 关系型数据库
阿里云AnalyticDB for PostgreSQL 入选VLDB 2025:统一架构破局HTAP,Beam+Laser引擎赋能Data+AI融合新范式
在数据驱动与人工智能深度融合的时代,企业对数据仓库的需求早已超越“查得快”这一基础能力。面对传统数仓挑战,阿里云瑶池数据库AnalyticDB for PostgreSQL(简称ADB-PG)创新性地构建了统一架构下的Shared-Nothing与Shared-Storage双模融合体系,并自主研发Beam混合存储引擎与Laser向量化执行引擎,全面解决HTAP场景下性能、弹性、成本与实时性的矛盾。 近日,相关研究成果发表于在英国伦敦召开的数据库领域顶级会议 VLDB 2025,标志着中国自研云数仓技术再次登上国际舞台。
962 1
|
12月前
|
存储 缓存 分布式计算
StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践
本文将深入探讨基于 StarRocks 和 Iceberg 构建的云原生湖仓分析技术,详细解析两者结合如何实现高效的查询性能优化。内容涵盖 StarRocks Lakehouse 架构、与 Iceberg 的性能协同、最佳实践应用以及未来的发展规划,为您提供全面的技术解读。 作者:杨关锁,北京镜舟科技研发工程师
StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践
|
11月前
|
监控 关系型数据库 MySQL
DTS实时同步进阶:MySQL到AnalyticDB毫秒级ETL管道搭建
本方案采用“Binlog解析-数据清洗-批量写入”三级流水线架构,实现MySQL到AnalyticDB的高效同步。通过状态机解析、内存格式转换与向量化写入技术,保障毫秒级延迟(P99&lt;300ms)、50万+ TPS吞吐及99.99%数据一致性,支持高并发、低延迟的数据实时处理场景。
340 10
|
Cloud Native 安全 Serverless
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
|
存储 分布式计算 大数据
大数据揭秘:从数据湖到数据仓库的全面解析
大数据揭秘:从数据湖到数据仓库的全面解析
447 19
|
人工智能 关系型数据库 MySQL
AnalyticDB MySQL版:云原生离在线一体化数据仓库支持实时业务决策
AnalyticDB MySQL版是阿里云推出的云原生离在线一体化数据仓库,支持实时业务决策。产品定位为兼具数据库应用性和大数据处理能力的数仓,适用于大规模数据分析场景。核心技术包括混合负载、异构加速、智能弹性与硬件优化及AI集成,支持流批一体架构和物化视图等功能,帮助用户实现高效、低成本的数据处理与分析。通过存算分离和智能调度,AnalyticDB MySQL可在复杂查询和突发流量下提供卓越性能,并结合AI技术提升数据价值挖掘能力。
512 16
|
弹性计算 运维 网络安全
阿里云轻量应用服务器产品解析与搭建个人博客网站教程参考
轻量应用服务器(Simple Application Server)作为阿里云面向单机应用场景推出的云服务器产品,以其一键部署、一站式管理、高性价比等特性,深受个人开发者、中小企业及入门级用户的喜爱。本文将全面解析阿里云轻量应用服务器的产品优势、应用场景、使用须知,以及使用轻量应用服务器搭建个人博客网站的详细教程,帮助用户更好地了解和使用这一产品。

推荐镜像

更多