Amazon Redshift를 사용하여 페더레이션 데이터에 액세스할 때의 고려 사항
일부 Amazon Redshift 기능은 연합 데이터에 대한 액세스를 지원하지 않습니다. 다음과 같은 관련 제한 사항 및 고려 사항을 찾을 수 있습니다.
Amazon Redshift에서 연합 쿼리를 사용할 때 제한 사항과 고려 사항은 다음과 같습니다.
연합 쿼리는 외부 데이터 원본에 대한 읽기 액세스를 지원합니다. 외부 데이터 원본에서 데이터베이스 객체를 작성하거나 생성할 수 없습니다.
경우에 따라 Amazon Redshift 이외 AWS 리전에서 Amazon RDS 또는 Aurora DB 클러스터 데이터베이스에 액세스할 수 있습니다. 이러한 경우 일반적으로 AWS 리전 간 데이터 전송에 대한 네트워크 지연 및 청구 요금이 발생합니다. Amazon Redshift 클러스터와 동일한 AWS 리전에 로컬 엔드포인트가 있는 Aurora 글로벌 데이터베이스를 사용하는 것이 좋습니다. Aurora 글로벌 데이터베이스는 두 AWS 리전 간 스토리지 기반 복제에 전용 인프라를 사용하며 일반적인 지연 시간은 1초 미만입니다.
Amazon RDS 또는 Aurora DB 클러스터 액세스 비용을 고려하세요. 예를 들어 이 기능을 사용하여 Aurora DB 클러스터에 액세스할 경우 Aurora DB 클러스터 요금은 IOPS를 기준으로 부과됩니다.
페더레이션 쿼리는 RDS 또는 Aurora DB 클러스터에서 Amazon Redshift에 대한 액세스를 사용하지 않습니다.
페더레이션 쿼리는 Amazon Redshift와 Amazon RDS 또는 Aurora DB 클러스터 둘 다 사용할 수 있는 AWS 리전에서만 사용할 수 있습니다.
연합 쿼리는 현재
ALTER SCHEMA
을(를) 지원하지 않습니다. 스키마를 변경하려면DROP
을(를) 사용한 다음CREATE 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 데이터 유형을 가져올 때 0 값은 NULL로 처리됩니다.
-
Aurora DB 클러스터 데이터베이스 리더 엔드포인트를 사용하는 경우 ‘잘못된 스냅샷’ 오류가 발생할 수 있습니다. 다음 방법 중 하나를 사용하여 이를 방지할 수 있습니다.
Aurora DB 클러스터 엔드포인트를 사용하는 대신 특정 Aurora DB 클러스터 인스턴스 엔드포인트를 사용합니다. 이 메서드는 PostgreSQL 데이터베이스의 결과에 대해 REPEATABLE READ 트랜잭션 격리를 사용합니다.
Aurora DB 클러스터 리더 엔드포인트를 사용하고 세션에 대해
pg_federation_repeatable_read
를 false로 설정합니다. 이 메서드는 PostgreSQL 데이터베이스의 결과에 대해 READ COMMITTED 트랜잭션 격리를 사용합니다. Aurora DB 클러스터 리더 엔드포인트에 대한 자세한 내용은 Amazon Aurora 사용 설명서의 Aurora DB 클러스터 엔드포인트의 유형을 참조하세요.pg_federation_repeatable_read
에 대한 자세한 내용은 pg_federation_repeatable_read 섹션을 참조하십시오.
다음은 PostgreSQL 데이터베이스에 대한 연합 쿼리로 작업할 때 트랜잭션에 대한 고려 사항입니다.
-
쿼리가 연합 테이블로 구성된 경우 리더 노드는 원격 데이터베이스에서 READ ONLY REPEATABLE READ 트랜잭션을 시작합니다. 이 트랜잭션은 Amazon Redshift 트랜잭션 기간 동안 유지됩니다.
리더 노드는
pg_export_snapshot
을(를) 호출하여 원격 데이터베이스의 스냅샷을 생성하고 영향을 받는 테이블에 대한 읽기 잠금을 만듭니다.컴퓨팅 노드는 트랜잭션을 시작하고 리더 노드에서 생성된 스냅샷을 사용하여 원격 데이터베이스에 쿼리를 실행합니다.
지원되는 페더레이션된 데이터베이스 버전
Amazon Redshift 외부 스키마는 외부 RDS PostgreSQL 또는 Aurora PostgreSQL에서 데이터베이스를 참조할 수 있습니다. 이 경우 다음과 같은 제한 사항이 적용됩니다.
Aurora DB 클러스터를 참조하는 외부 스키마를 생성할 때 Aurora PostgreSQL 데이터베이스의 버전은 9.6 이상이어야 합니다.
Amazon RDS를 참조하는 외부 스키마를 생성할 때 Amazon RDS PostgreSQL 데이터베이스의 버전은 9.6 이상이어야 합니다.
Amazon Redshift 외부 스키마는 외부 RDS MySQL 또는 Aurora MySQL에서 데이터베이스를 참조할 수 있습니다. 이 경우 다음과 같은 제한 사항이 적용됩니다.
Aurora DB 클러스터를 참조하는 외부 스키마를 생성할 때 Aurora MySQL 데이터베이스의 버전은 5.6 이상이어야 합니다.
Amazon RDS를 참조하는 외부 스키마를 생성할 때 RDS MySQL 데이터베이스의 버전이 5.6 이상이어야 합니다.