写点什么

将存储过程迁移到 Amazon Redshift(二)

  • 2020-01-02
  • 本文字数:2171 字

    阅读完需:约 7 分钟

将存储过程迁移到 Amazon Redshift(二)

在 Amazon Redshift 中使用存储过程的最佳实践

以下是一些使用存储过程的最佳实践。

确保已在源代码控制工具中捕获了存储过程。

如果您计划将存储过程用作数据处理的关键元素,那么还需建立一套实践,将所有存储过程更改都提交给源代码控制系统。


您还可以考虑定义特定用户(即重要存储过程的拥有者),并实现存储过程创建和修改过程自动化。


您可以使用以下命令检索现有存储过程的源代码:


SHOW procedure_name;

考虑每个存储过程的安全范围和调用者

默认情况下,存储过程运行需要存储过程调用者用户的权限。使用 SECURITY DEFINER 属性可以让存储过程使用其他权限运行。例如,从重要的表中显式撤消对 DELETE 的访问权限,然后定义一个存储过程。该存储过程用于在检查安全列表后执行删除操作。


使用 SECURITY DEFINER 时,请注意以下事项:


  • 请将用于执行存储过程的 EXECUTE 权限授予特定用户,而非授予 PUBLIC。这样可以确保存储过程不会被一般用户误用。

  • 如果可能,请使用架构名称限制存储过程访问的所有数据库对象。例如,使用 myschema.mytable,而非 mytable

  • 请在使用 SET 选项创建存储过程时设置 search_path。这样可以防止其他架构中的同名对象受到重要存储过程的影响。

使用基于集合的逻辑,避免手动循环大型数据集

在存储过程中操作数据时,请尽可能继续使用基于集合的常规 SQL 命令,例如 INSERTUPDATEDELETE


存储过程提供了新的控制结构,例如 FORWHILE 循环。这些控制结构在迭代少量项目(例如表列表)时很有用。但是,应避免使用循环结构替换基于集合的 SQL 操作。例如,通过迭代数百万个值以逐一更新这些值,这种做法低效且缓慢。

注意 REFCURSOR 限制,使用临时表处理较大的结果集

结果集从存储过程返回时,可以作为 REFCURSOR 返回或者使用临时表返回。 REFCURSOR 是内存中的数据结构,在许多情况下它是最简单的选择。


但是,每个存储过程最多只能有一个 REFCURSOR。有时您需要返回多个结果集,或者与多个子过程的结果进行交互,或者返回数百万(或更多)个结果行。在这些情况下,建议您将结果定向到临时表,并返回对临时表的引用作为存储过程的输出。

简化存储过程,对复杂流程进行嵌套处理

请尝试使每个存储过程的逻辑尽可能简单。通过简化,您可以最大限度地提高灵活性,并使存储过程更加易于理解。


当您优化和改进存储过程的代码时,代码可能会变得复杂化。当遇到冗长而复杂的存储过程时,通常可以简化操作,方法是将子元素移到从原始过程调用的单独过程。

使用 AWS Schema Conversion Tool 迁移存储过程

在 Amazon Redshift 宣布支持存储过程后,AWS 还改进了 AWS Schema Conversion Tool,此工具现可将旧数据仓库存储过程转换为 Amazon Redshift 存储过程。


AWS SCT 现已支持将 Microsoft SQL Server 数据仓库存储过程转换为 Amazon Redshift 存储过程。


版本 627 之后,AWS SCT 现在可以将 Microsoft SQL Server 数据仓库存储过程转换为 Amazon Redshift 存储过程。以下是 AWS SCT 中的操作步骤


  1. 新建一个 OLAP 项目,用于将 SQL Server 数据仓库 (DW) 转换到 Amazon Redshift。

  2. 连接 SQL Server DW 和 Amazon Redshift 终端节点。

  3. 取消选中源树中的所有节点。

  4. 打开架构的上下文菜单(右键菜单)。

  5. 打开存储过程节点的上下文菜单(右键菜单),然后选择转换脚本(操作类似转换数据库对象)。

  6. (可选)您也可以选择查看评估报告并应用转换。


以下是 SQL Server DW 存储过程转换的示例:



小结

Amazon Redshift 存储过程支持功能现已在所有 AWS 区域正式发布。我们希望您和我们一样对于能够在 Amazon Redshift 中运行存储过程感到兴奋。


借助 Amazon Redshift 和 AWS Schema Conversion Tool 对存储过程的支持,您现在可以将存储过程迁移到 Amazon Redshift,无需使用其他语言或框架进行编码。这一功能减少了迁移的工作量。我们希望更多本地客户可以利用 Amazon Redshift 并迁移到云中,以实现数据库自由




作者介绍:


Joe Harris 是 AWS 的高级 Redshift 数据库工程师,专注于 Redshift 性能问题研究他从事各种平台数据分析和数据仓库构建工作已有二十年之久。在加入 AWS 之前,自 2013 年 Redshift 发布时,他就一直是 Redshift 客户,同时也是 Redshift 论坛中的杰出贡献者


Abhinav Singh 是 AWS 的一名数据库工程师。他负责数据库迁移项目的设计和开发工作,并就数据库迁移项目为客户提供指导和技术帮助,助力客户使用 AWS 提高解决方案的价值。


Entong Shen 在 Amazon Redshift 查询处理团队担任高级软件工程师。他从事 MPP 数据库相关工作已 7 年有余,专注于查询优化、统计信息和 SQL 语言功能研究。业余时间,他喜欢听着各种流派的音乐在花园中当一名快乐的园丁。


Vinay 是 Amazon Web Services 的 Amazon Redshift 首席产品经理。此前,他曾在 Teradata 担任过产品部门高级总监,在 Hortonworks 担任过产品总监。在 Hortonworks,他推出了 Data Science、Spark、Zeppelin 和 Security 领域的产品。工作之余,Vinay 喜欢做瑜伽或外出远足。


**



Sushim Mitra 是 Amazon Redshift 查询处理团队的一名软件开发工程师。**他主要负责处理查询优化问题、SQL 语言功能和数据库安全性。工作之余,他喜欢阅读世界各地的小说。


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/big-data-bringing-your-stored-procedures-to-amazon-redshift/


2020-01-02 14:43883

评论

发布
暂无评论
发现更多内容

5月上海线下 · CSPO认证周末班【提前报名特惠】“价值交付课程”CST导师亲授

ShineScrum

分布式政企应用如何快速实现云原生的微服务架构改造

华为云开源

微服务 云原生

明道云技术路径选择及与LCDP的比较

明道云

Ample Sound Ample Bass Upright III Mac(虚拟立式低音乐器)

理理

不动产行业国产化加速,明源云上榜《中国信创500强》

科技热闻

大咖说丨云计算:数字世界的“中枢神经”

天翼云开发者社区

GaussDB(DWS)云原生数仓技术解析

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

最新版本 Stable Diffusion 开源 AI 绘画工具之使用篇

江户川亮仔

人工智能 图文生成 AI绘画 Stable Diffusion

重磅消息 | 2023年腾讯云从业者课程全面升级

科技热闻

如何通过Java代码将添加页码到PDF文档?

在下毛毛雨

Java PDF 添加页码

打破软件开发“不可能三角” 只需一个低代码方案

力软低代码开发平台

MobTech MobLink|无码邀请是怎么处理的

MobTech袤博科技

算云融合促发展,天翼云以领先云网算力助推数字中国建设!

天翼云开发者社区

安全可信| 天翼云算力调度平台通过信通院首批可信算力云服务评估!

天翼云开发者社区

智改数转:这个制造业的必答题该如何作答?

加入高科技仿生人

低代码 数字化 制造业 智能化 智改数转

软件测试/测试开发丨如何高效使用 Requests 做接口自动化测试

测试人

软件测试 自动化测试 接口测试 测试开发 requests

联合解决方案|亚信科技AntDB携手蓝凌软件,助推企业数字化办公转型升级

亚信AntDB数据库

AntDB AntDB数据库 企业号 4 月 PK 榜

社区分享 | Orillusion 引擎入门系列 —— 如何创建一个简单的 3D 示例

Orillusion

WebGL 元宇宙 web3d #WebGPU #开源

5月上海线下 · CSM认证周末班【提前报名特惠】“全球金牌课程”CST导师亲授

ShineScrum

Springfox与SpringDoc——swagger如何选择(SpringDoc入门)

天翼云开发者社区

从“卖船”到提供建造“航母” 的基础设施,用友BIP有底气

用友BIP

SketchUp Pro(草图大师2023)中文版 Mac/win

理理

SketchUp Pro 2023 SketchUp Pro中文版 草图大师2023下载

软件测试/测试开发丨两个步骤轻松搞定测试环境问题

测试人

软件测试 自动化测试 测试开发

保证高效写入查询的情况下,如何实现 CPU 资源和磁盘 IO 的最低开销?

TDengine

大数据 tdengine 数据处理 时序数据库 资源消耗

喜讯!天翼云荣获国际AI顶会ABAW季军

天翼云开发者社区

5月在线 · A-CSM认证周末班【提前报名特惠】“敏捷教练必修课程”CST导师亲授

ShineScrum

基于SpringBoot实现单元测试的多种情境/方法(二)

天翼云开发者社区

国营单位工作4年转行网络安全,成功上岸安全开发!

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

架构训练营模块二作业

请叫我馒头哥丶

架构实战营

软件测试/测试开发丨通用 api 封装实战,带你深入理解 PO

测试人

软件测试 自动化测试 测试开发

将存储过程迁移到 Amazon Redshift(二)_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章