You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建跨不同服务器Redshift数据库的视图 可否使用所有权链实现?

Redshift跨独立集群构建联合视图解决方案

所有权链方案可行性判断

所有权链完全无法实现该需求。Redshift的所有权链是同一集群内部的权限传递机制,仅支持同集群下不同数据库、schema、表之间的权限继承,不支持跨独立服务器(即跨不同Redshift集群)的场景。

替代高成本dump导入的优选方案

以下方案均无需做全量数据迁移,操作成本远低于dump导入方案:

  • 方案1:跨集群数据共享(官方原生最优方案)
    该方案是Redshift官方原生支持的跨集群访问能力,无需数据同步,访问实时性高:
    1. 在存储GA数据的源集群上创建数据共享,将需要用到的GA相关schema、表授权给存储Facebook数据的目标集群
    2. 在目标集群挂载该数据共享,创建对应的外部映射数据库
    3. 直接在目标集群编写视图,同时关联本地Facebook表和跨集群共享的GA表即可
      核心操作代码示例:
      源集群(GA数据侧)执行:
    -- 创建数据共享
    CREATE DATASHARE ga_data_share;
    -- 授权给目标集群
    GRANT USAGE ON DATASHARE ga_data_share TO NAMESPACE '<目标集群命名空间ID>';
    -- 添加要共享的对象
    ALTER DATASHARE ga_data_share ADD SCHEMA ga_raw;
    ALTER DATASHARE ga_data_share ADD ALL TABLES IN SCHEMA ga_raw;
    
    目标集群(Facebook数据侧)执行:
    -- 挂载共享数据创建映射数据库
    CREATE DATABASE ga_shared FROM DATASHARE ga_data_share OF NAMESPACE '<源集群命名空间ID>';
    -- 构建跨源视图
    CREATE VIEW ads_channel_agg_view AS
    SELECT 
      COALESCE(t1.event_date, t2.report_date) AS stat_date,
      t1.uv,
      t2.impression,
      t2.click_cnt
    FROM ga_shared.ga_raw.session_daily t1
    FULL OUTER JOIN fb_raw.ad_report_daily t2 
    ON t1.event_date = t2.report_date;
    
    适用条件:两个Redshift集群在同一AWS区域,同账号或已完成跨账号授权配置。
  • 方案2:Redshift Spectrum联合查询
    若两个集群不在同一区域/账号,可将两个集群需要用到的业务表定期UNLOAD到S3对象存储,在任意一个集群上通过Redshift Spectrum创建外部表映射S3上的两份数据,再构建联合视图。该方案支持增量同步,无需全量数据迁移,存储和计算成本较低。
  • 方案3:联邦查询
    若仅需低频访问跨集群数据,不需要高实时性,可通过Redshift联邦查询功能直接对接另一个Redshift集群的查询接口,在视图中嵌入联邦查询语句拉取所需数据,无需做任何数据同步操作。

内容的提问来源于stack exchange,提问作者loyala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 21:30:00