在AWS Redshift 中使用数据共享 Data sharing

目录

    • [1️⃣ 前言](#1️⃣ 前言)
    • [2️⃣ 分享者集群操作](#2️⃣ 分享者集群操作)
      • [2.1 连接数据库](#2.1 连接数据库)
      • [2.2 创建Datashare](#2.2 创建Datashare)
    • [3️⃣ 使用者集群操作](#3️⃣ 使用者集群操作)
      • [3.1 创建数据库](#3.1 创建数据库)
      • [3.2 使用共享数据](#3.2 使用共享数据)

1️⃣ 前言

使用 Amazon Redshift 数据共享,您可以在 Amazon Redshift 集群、工作组、AWS 账户和 AWS 区域之间安全地共享对实时数据的访问权限,而无需手动移动或复制数据。由于数据是实时的,只要进行了更新,所有用户就都可以在 Amazon Redshift 中看到最新、最一致的信息。

  • 性能:对共享数据的查询性能取决于使用者集群的计算容量,即用共享数据时并不会使用分享者集群的资源。

利用AWS Redshift数据分享,我们可以实现数据实时接入(zero-etl)和跑批任务分离,互不影响,而且使用Serverless版本时可以降低成本。

  • 分享者集群:本文中指源集群,即提供分享数据的集群。
  • 使用者集群:本文中指使用分享数据的集群。

2️⃣ 分享者集群操作

2.1 连接数据库

在Redshift Namespace下找到Datashares,点击连接数据库,填写分享者集群。

需要先在AWS Secrets Manager创建好

2.2 创建Datashare

可以在页面创建,也可以使用SQL创建

创建测试表

sql 复制代码
SELECT * FROM sales_test;
CREATE TABLE IF NOT EXISTS sales_test (
    sale_id INT PRIMARY KEY,          
    sale_date DATE NOT NULL,          
    product_id VARCHAR(50) NOT NULL,  
    amount DECIMAL(10,2) NOT NULL,    
    region VARCHAR(20),               
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO sales_test (sale_id, sale_date, product_id, amount, region)
VALUES
    (1, '2026-01-01', 'P001', 199.99, 'west'),
    (2, '2026-01-01', 'P002', 299.50, 'west'),
    (3, '2026-01-02', 'P001', 199.99, 'west'),
    (4, '2026-01-03', 'P003', 499.00, 'west'),
    (5, '2026-01-03', 'P002', 299.50, 'west');

创建数据分享

sql 复制代码
-- 注意在要数据分享的数据库创建
CREATE DATASHARE dev_share set PUBLICACCESSIBLE TRUE;
ALTER DATASHARE dev_share ADD SCHEMA public;
-- ALTER DATASHARE dev_share OWNER TO "IAM:max"; 
ALTER DATASHARE dev_share ADD ALL TABLES IN SCHEMA public;
GRANT USAGE ON DATASHARE dev_share TO NAMESPACE '填使用者集群Namespace ID'; 
-- GRANT SELECT ON ALL TABLES IN SCHEMA public TO DATASHARE dev_share;

如果有新增表,需要加进去

sql 复制代码
ALTER DATASHARE dev_share ADD ALL TABLES IN SCHEMA public;

3️⃣ 使用者集群操作

3.1 创建数据库

sql 复制代码
SHOW DATASHARES LIKE '%share';
-- CREATE DATABASE dev_share WITH PERMISSIONS FROM DATASHARE dev_share OF NAMESPACE '填分享者集群Namespace ID'; 配置更细粒度权限
CREATE DATABASE dev_share FROM DATASHARE dev_share OF NAMESPACE '填分享者集群Namespace ID';
GRANT USAGE ON DATABASE dev_share TO xx_user;
GRANT USAGE ON DATABASE dev_share TO group xx_group;

3.2 使用共享数据

sql 复制代码
select * from dev_share.public.sales_test;
相关推荐
Maynor9961 天前
免费 Cloudflare 只有 10 个 D1?满了之后的「穷鬼打法」:表前缀复用同一个库
数据库·后端·云计算·cloudflare
A-刘晨阳1 天前
【云原生】nerdctl 部署及使用指南
运维·docker·kubernetes·云计算·1024程序员节·nerdctl
我是高手高手高高手2 天前
安装宝塔,阿里云(有系统和数据两个盘)
阿里云·云计算
FY@-@3 天前
VMware ESXi 7.0 实验全记录:嵌套安装 → 网络配置 → 存储 → Windows 10 虚拟机部署
运维·网络·windows·云计算
DolitD3 天前
国产信创+实时云渲染:数字孪生智慧矿山UE5流畅推流
3d·信息可视化·云计算·图形渲染·数据可视化
做运维的阿瑞3 天前
Terraform 模块版本管理:约束语法、源类型与升级策略
云原生·云计算·terraform
做运维的阿瑞3 天前
Terraform 模块组合:VPC、安全组、EC2 的输出传递与依赖编排
云原生·云计算·terraform
FY@-@3 天前
云计算基础(下):虚拟化原理与 DAS/NAS/SAN 存储
运维·服务器·云计算
做运维的阿瑞3 天前
Terraform 敏感信息管理:sensitive 标记、外部密钥源与 state 加密
云原生·云计算·terraform
mengge.cloud3 天前
1022小白入门教程(番外筑基)— nerdctl 容器基本功 + K8s 资源编写
linux·网络·云原生·容器·kubernetes·云计算·k8s