Amazon Redshift 是不是支持扩展 dblink?

Posted

技术标签:

【中文标题】Amazon Redshift 是不是支持扩展 dblink?【英文标题】:Does Amazon Redshift support extension dblink?Amazon Redshift 是否支持扩展 dblink? 【发布时间】:2017-08-04 23:52:16 【问题描述】:
CREATE EXTENSION dblink;

我尝试在 AWS 中创建扩展 dblink,但收到此错误。

错误:“EXTENSION”第 1 行或附近的语法错误:创建扩展 数据库链接;

【问题讨论】:

【参考方案1】:

是和否。

Amazon Redshift 本身不提供 dblink。但是,您可以在不同的 PostgreSQL 服务器上安装 dblink 并使用它连接到 Amazon Redshift。

见:JOIN Amazon Redshift AND Amazon RDS PostgreSQL WITH dblink

【讨论】:

为了完整起见,我补充说 Redshift Spectrum 也支持同样的方式【参考方案2】:

答案是“是”,但您必须通过利用 RDS 的 Dblink 功能将 Amazon RDS 用作“缓存”。这使我们能够将任何 Amazon Redshift 表作为 RDS 中的关系提供,而无需显式复制该数据。 Dblink 处理块级别的数据移动。

我们使用了约翰上面提供的链接中描述的方法。我们在一篇博文“用 Amazon Redshift 吃你的 Postgres 蛋糕并吃掉它”中详细记录了我们是如何做到的。

https://www.intermix.io/blog/using-amazon-redshift-with-amazon-rds/

【讨论】:

【参考方案3】:

虽然 AWS Redshift 基于 Postgresql,但它具有各种增强/更改以集成 AWS 基础设施以及与标准 Postgresql 非常不同的后端。为了创建 DB Link,您不需要(事实上,您不能)加载 DB Link 扩展。

相反,AWS 已将标准 Postgresql CREATE SERVER AND IMPORT FOREIGN SCHEMA 语句替换为其独特的 CREATE EXTERNAL SCHEMA - 这会为您创建数据库链接:

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] local_schema_name
FROM  [ DATA CATALOG ] | HIVE METASTORE | POSTGRES | mysql | KINESIS 
[ DATABASE 'database_name' ]
[ REGION 'aws-region' ]
[ URI 'hive_metastore_uri' [ PORT port_number ] ]
IAM_ROLE  default | 'arn:aws:iam::<AWS account-id>:role/<role-name>' 
[ SECRET_ARN 'ssm-secret-arn' ]          
[ CATALOG_ROLE 'catalog-role-arn-string' ] 
[ CREATE EXTERNAL DATABASE IF NOT EXISTS ]

这在一个语句中完成所有事情。完整的文档可以在here找到。

【讨论】:

以上是关于Amazon Redshift 是不是支持扩展 dblink?的主要内容,如果未能解决你的问题,请参考以下文章

与 Amazon Redshift 同步

Redshift 中的 DAU WAU MAU 错误:[Amazon](500310) 无效操作:由于内部错误,不支持此类关联子查询模式;

Amazon Redshift 是不是有自己的存储后端

使用 Amazon Redshift 进行维度建模是不是可行

Amazon RedShift 中的“复制”命令是不是是原子的?

Amazon Redshift:是不是可以返回多个结果集?