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?的主要内容,如果未能解决你的问题,请参考以下文章
Redshift 中的 DAU WAU MAU 错误:[Amazon](500310) 无效操作:由于内部错误,不支持此类关联子查询模式;
使用 Amazon Redshift 进行维度建模是不是可行