使用 Amazon Redshift 访问联合数据时的注意事项 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon Redshift 访问联合数据时的注意事项

某些 Amazon Redshift 功能不支持对联合数据进行访问。您可以在下面找到相关的限制和注意事项。

以下是将联合查询与 Amazon Redshift 结合使用时的限制和注意事项:

  • 联合查询支持对外部数据源进行读取访问。无法在外部数据源中写入或创建数据库对象。

  • 在某些情况下,您可能访问与 Amazon Redshift 不同的 Amazon 区域中的 Amazon RDS 或 Aurora 数据库。在这些情况下,您通常会因跨 Amazon 地区传输数据而产生网络延迟和计费费用。我们建议您将 Aurora 全局数据库用于与 Amazon Redshift 集群位于同一 Amazon 区域的本地端点。Aurora 全局数据库使用专用基础设施在任意两个 Amazon 区域间进行基于存储的复制,典型延迟不到 1 秒。

  • 考虑访问 Amazon RDS 或 Aurora 的成本。例如,使用此功能访问 Aurora 时,Aurora 费用基于 IOPS。

  • 联合查询不允许从 RDS 或 Aurora 访问 Amazon Redshift。

  • 联合查询仅在同时提供 Amazon Redshift 和 Amazon RDS 或 Aurora 的 Amazon 区域中可用。

  • 联合查询当前不支持 ALTER SCHEMA。要更改 schema,请依次使用 DROPCREATE EXTERNAL SCHEMA

  • 联合查询不适用于并发扩展。

  • 联合查询当前不支持通过 PostgreSQL 外部数据包装程序进行访问。

  • 对 RDS MySQL 或 Aurora MySQL 的联合查询支持在 READ COMMITTED 级别的事务隔离。

  • 如果未指定,Amazon Redshift 会在端口 3306 上连接到 RDS for MySQL 或 Aurora MySQL。在为 MySQL 创建外部架构之前,请确认 MySQL 端口号。

  • 如果未指定,Amazon Redshift 会在 5432 端口上连接到 RDS PostgreSQL 或 Aurora PostgreSQL。在为 PostgreSQL 创建外部架构之前,请确认 PostgreSQL 端口号。

  • 从 MySQL 中获取 TIMESTAMP 和 DATE 数据类型时,零值被视为 NULL。

  • 如果使用 Aurora 数据库读取器端点,则可能会出现“快照无效”错误。采用以下方法之一可以避免这种情况:

    • 使用特定的 Aurora 实例端点(而不是使用 Aurora 集群端点)。此方法对来自 PostgreSQL 数据库的结果使用 REPEATABLE READ 事务隔离。

    • 使用 Aurora 读取器端点并将会话的 pg_federation_repeatable_read 设置为 false。此方法对来自 PostgreSQL 数据库的结果使用 READ COMMITTED 事务隔离。有关 Aurora 读取器端点的更多信息,请参阅《Amazon Aurora 用户指南》中的 Aurora 端点类型。有关 pg_federation_repeatable_read 的信息,请参阅pg_federation_repeatable_read

以下是使用对 PostgreSQL 数据库的联合查询时事务的注意事项:

  • 如果查询由联合表组成,则领导节点会在远程数据库上启动 READ ONLY REPEATABLE READ 事务。此事务在 Amazon Redshift 事务的持续时间内保留。

  • 领导节点通过调用 pg_export_snapshot 创建远程数据库快照,并对受影响的表进行读锁定。

  • 计算节点启动事务,并使用在领导节点上创建的快照来向远程数据库发出查询。

支持的联合数据库版本

Amazon Redshift 外部 schema 可以引用外部 RDS PostgreSQL 或 Aurora PostgreSQL 中的数据库。当它这样做时,以下限制将适用:

  • 创建引用 Aurora 的外部 schema 时,Aurora PostgreSQL 数据库必须为版本 9.6 或更高版本。

  • 创建引用 Amazon RDS 的外部 schema 时,Amazon RDS PostgreSQL 数据库必须为版本 9.6 或更高版本。

Amazon Redshift 外部 schema 可以引用外部 RDS MySQL 或 Aurora MySQL 中的数据库。当它这样做时,以下限制将适用:

  • 创建引用 Aurora 的外部 schema 时,Aurora MySQL 数据库必须为版本 5.6 或更高版本。

  • 创建引用 Amazon RDS 的外部 schema 时,RDS MySQL 数据库必须为版本 5.6 或更高版本。