亚马逊Redshift数据共享:架构、用例与操作指南
立即解锁
发布时间: 2025-08-31 01:06:13 阅读量: 10 订阅数: 15 AIGC 


Amazon Redshift权威指南
### 亚马逊 Redshift 数据共享:架构、用例与操作指南
#### 1. 多仓库架构搭建
可以设置多仓库架构,为不同类型的工作负载配备单独的消费者数据仓库。这样能提供灵活的计算资源,满足特定工作负载的性价比要求,并可按需以自助服务的方式独立扩展。不过,需要注意的是,亚马逊 Redshift 数据共享在 DC2 节点类型上不可用,因为 DC2 节点未利用 Redshift 托管存储(RMS)。
#### 2. 数据共享用例
数据共享已被证明具有显著的经济效益,拥有数据共享策略的组织表现优于同行。以下是一些常见的数据共享用例:
- **工作负载分离**:当有繁重的 ETL 工作负载时,可通过多仓库架构将 ETL 工作负载与查询工作负载分离。使用一个数据仓库进行数据摄入,另一个用于查询,每个仓库都可针对其预期工作负载进行调优和优化。
- **跨组协作**:公司内不同部门可共享和访问数据,实现更高效的决策。例如,营销团队可利用存储在亚马逊 Redshift 中的数据更好地定位其营销活动,财务团队则可使用相同数据进行收入预测。跨组共享数据的同时隔离工作负载,确保各团队的处理需求不会相互冲突。
- **分析即服务(AaaS)**:AaaS 提供商可从社交媒体、网络分析和 ERP 系统等各种来源收集和聚合数据到数据仓库,并在与订阅者共享之前添加业务洞察转换。例如,教育技术 AaaS 提供商可收集学生出勤和成绩数据,得出如何提高学生成绩的见解,然后通过与教育机构集成的 AWS 数据交换(ADX)以订阅模式共享这些见解,并通过其交易系统对已收集的数据进行货币化。数据生产者还可使用 AWS Clean Rooms 与合作伙伴或其他 AWS 用户协作,而无需共享原始数据。
- **提高软件开发生命周期(SDLC)的敏捷性**:在应用程序开发周期中,大多数组织在开发或质量系统中缺乏用于测试的优质数据。通过数据共享,可将生产数据共享到开发系统,通过验证所有测试用例来提高测试质量,加速应用程序交付。如果有关于在其他环境中共享生产数据的特定安全策略,还可使用亚马逊 Redshift 的动态数据屏蔽(DDM)功能来屏蔽某些个人身份信息(PII)数据。
#### 3. 数据共享的关键概念
- **数据共享单元(Datashare)**:是亚马逊 Redshift 中共享数据的单位,数据所有者可将数据库对象添加到数据共享单元中与订阅者共享。它充当一个容器,用于保存对其他数据库对象的引用。
- **数据生产者(Producer)**:拥有数据并进行数据共享的亚马逊 Redshift 数据仓库。生产者数据仓库管理员和数据库所有者可使用 CREATE DATASHARE 命令创建数据共享单元,并添加数据库对象(如模式、表、视图和 SQL UDF)与消费者共享。
- **数据消费者(Consumer)**:接收来自生产者数据仓库的数据共享单元的亚马逊 Redshift 数据仓库。当生产者授予消费者数据共享单元访问权限时,消费者数据仓库管理员可创建一个引用该数据共享单元的数据库。此数据库只是对数据共享单元的引用,并非消费者端的物理持久存储。管理员随后为消费者数据仓库中的用户和组分配数据库权限,授权用户和组可使用三部分表示法(数据库.模式.对象)查询数据共享单元对象。
- **命名空间(Namespaces)**:用于标识亚马逊 Redshift 预配置或无服务器数据仓库的标识符。每个数据仓库会自动创建并分配一个全局唯一标识符(GUID)和一个亚马逊资源名称(ARN)。在数据共享工作流程中,命名空间 GUID 值和 ARN 用于在 AWS 账户内与其他亚马逊 Redshift 数据仓库共享数据。对于跨账户数据共享,AWS 账户可作为数据共享单元的消费者,每个账户由一个 12 位的 AWS 账户 ID 表示。
#### 4. 如何使用数据共享
##### 4.1 同一账户内的数据共享
以学生学习数据集为例,说明如何在同一账户内共享数据。可使用控制台或 SQL 脚本创建和共享数据共享单元,具体步骤如下:
- **创建数据共享单元**:
```sql
-- Creating a datashare (producer)
CREATE DATASHARE learnshare SET PUBLICACCESSIBLE TRUE;
```
在上述语句中,learnshare 是数据共享单元的名称,该名称在命名空间中必须唯一。SET PUBLICACCESSIBLE 子句指定数据共享单元是否可共享到可公开访问的数据仓库,默认值为 FALSE。
- **向数据共享单元添加对象**:
```sql
-- Add schema to datashare
ALTER DATASHARE learnshare
ADD SCHEMA openlearn;
-- Add openlearn materialized view to datshares.
ALTER DATASHARE learnshare
ADD TABLE openlearnm.mv_student_lmsactivities_and_score;
-- View shared objects
SHOW DATASHARES;
SELECT * FROM SVV_DATASHARE_OBJECTS;
```
若要添加模式中的所有表,可使用以下语法:
```sql
ALTER DATASHARE learnshare ADD ALL TAB
```
0
0
复制全文
相关推荐









