在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;
相关推荐
威联通网络存储11 小时前
基于TS-h3087XU-RP的大型成套空分设备DCS历史趋势数据治理
aws
spider_xcxc14 小时前
MySQL备份实战:从小白到熟练使用Percona XtraBackup
mysql·云计算·运维开发·dba
主机哥哥2 天前
2026年腾讯云秒杀活动抢购攻略
云计算·腾讯云
花千烬2 天前
crictl info 连不上 containerd 怎么办?endpoint、socket 与权限一次查清
云计算
AKAMAI5 天前
每百万 Token 成本砍六成,出海 AI 团队开始重算推理这笔账
人工智能·云计算
A小辣椒15 天前
AWS Clould Support Engineer就职面试题
aws
tiancaijiben18 天前
阿里云Kubernetes集群托管完全指南:从创建到生产级运维
云计算
亚林瓜子18 天前
AWS WAF中如何放行某个触发了托管规则的接口
aws·waf
互联网推荐官18 天前
上海软件定制开发公司推荐:从PaaS工程化路径看D-coding的技术取舍
云原生·云计算·paas·软件开发·开发经验·上海
sbjdhjd18 天前
从零搭建企业级 CI/CD(下):Jenkins+GitLab+Harbor 全链路实战指南
git·servlet·ci/cd·云原生·云计算·gitlab·jenkins