在 redshift 中执行跨数据库联合查询是否可行?
Is it feasible to perform a cross database federated query in redshift?
虽然跨数据库查询(在基于 ra3 节点的集群中)和联合查询单独使用似乎有效,但放在一起似乎无法使用。我很可能遗漏了一些东西,因此出现了这个问题。详情如下:
- RDS Aurora MySQL 有一个数据库说 DB1
- Redshift 集群说 c1 有数据库说 RSDB1 和 RSDB2
- 我可以将 DB1 配置为 RSDB1 中的外部模式,比如 ext_mdb 并且还可以查询,例如:如下所示
select count(1) from ext_mdb.Table2;
select count(1) from RSDB1.ext_mdb.Table2; # this also works
- 我还可以在连接到 RSDB2 时使用跨数据库查询模式 RSDB1.public.Table1。
- 当我尝试从 RSDB2 查询 RSDB1.ext_mdb.Table2 时失败并出现以下错误
select count(1) from RSDB1.ext_mdb.Table2; # this doesn't from RSDB2
ERROR: Relation Table2 does not exist in the database.
从我阅读这篇文章的理解来看,目前 redshift 中的跨数据库查询似乎是一个限制:https://docs.aws.amazon.com/redshift/latest/dg/cross-database_limitation.html
上面写着
Amazon Redshift doesn't support query catalog objects on AWS Glue or federated databases. To query these objects, first create external schemas that refer to those external data sources in each database.
虽然跨数据库查询(在基于 ra3 节点的集群中)和联合查询单独使用似乎有效,但放在一起似乎无法使用。我很可能遗漏了一些东西,因此出现了这个问题。详情如下:
- RDS Aurora MySQL 有一个数据库说 DB1
- Redshift 集群说 c1 有数据库说 RSDB1 和 RSDB2
- 我可以将 DB1 配置为 RSDB1 中的外部模式,比如 ext_mdb 并且还可以查询,例如:如下所示
select count(1) from ext_mdb.Table2;
select count(1) from RSDB1.ext_mdb.Table2; # this also works
- 我还可以在连接到 RSDB2 时使用跨数据库查询模式 RSDB1.public.Table1。
- 当我尝试从 RSDB2 查询 RSDB1.ext_mdb.Table2 时失败并出现以下错误
select count(1) from RSDB1.ext_mdb.Table2; # this doesn't from RSDB2
ERROR: Relation Table2 does not exist in the database.
从我阅读这篇文章的理解来看,目前 redshift 中的跨数据库查询似乎是一个限制:https://docs.aws.amazon.com/redshift/latest/dg/cross-database_limitation.html
上面写着
Amazon Redshift doesn't support query catalog objects on AWS Glue or federated databases. To query these objects, first create external schemas that refer to those external data sources in each database.