

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# Amazon Redshift 및 PostgreSQL
<a name="c_redshift-and-postgres-sql"></a>

**Topics**
+ [Amazon Redshift와 PostgreSQL JDBC 및 ODBC](c_redshift-postgres-jdbc.md)
+ [다르게 구현되는 기능](c_redshift-sql-implementated-differently.md)
+ [지원되지 않는 PostgreSQL 기능](c_unsupported-postgresql-features.md)
+ [지원되지 않는 PostgreSQL 데이터 유형](c_unsupported-postgresql-datatypes.md)
+ [지원되지 않는 PostgreSQL 함수](c_unsupported-postgresql-functions.md)

Amazon Redshift는 PostgreSQL을 기반으로 합니다. Amazon Redshift와 PostgreSQL은 데이터웨어 하우스 애플리케이션을 설계하고 개발할 때 숙지해야 할 몇 가지 매우 중요한 차이점이 있습니다.

Amazon Redshift는 대용량 데이터 집합을 대상으로 복잡한 쿼리가 필요한 온라인 분석 처리(OLAP) 또는 비즈니스 인텔리전스(BI) 애플리케이션 전용으로 설계되었습니다. 해결하는 요건도 매우 다양하기 때문에 Amazon Redshift의 전용 데이터 스토리지 스키마 및 쿼리 실행 엔진도 PostgreSQL 구현체와 완전히 다릅니다. 예를 들어 OLTP(온라인 트랜잭션 처리) 애플리케이션이 일반적으로 데이터를 행에 저장하는 반면 Amazon Redshift는 최적의 메모리 사용 및 디스크 I/O를 위한 특수 데이터 압축 인코딩을 사용하여 데이터를 열에 저장합니다. 보조 인덱스 및 효율적인 단일 행 데이터 조작 작업과 같이 소규모 OLTP 처리에 적합한 일부 PostgreSQL 기능은 성능 향상을 위해 생략되었습니다.

Amazon Redshift 데이터 웨어하우스 시스템 아키텍처에 대한 자세한 내용은 [Amazon Redshift 아키텍처](c_redshift_system_overview.md) 섹션을 참조하세요.

PostgreSQL 9.x에는 Amazon Redshift에서 지원되지 않는 기능이 일부 포함되어 있습니다. 그 밖에도 Amazon Redshift SQL과 PostgreSQL 사이에는 반드시 알고 있어야 할 중요한 차이점들이 있습니다. 이번 섹션에서는 Amazon Redshift와 PostgreSQL의 차이점에 대해 살펴보고, Amazon Redshift SQL 구현체를 최대한 이용하여 데이터 웨어하우스를 개발할 수 있는 지침까지 제공합니다.

# Amazon Redshift와 PostgreSQL JDBC 및 ODBC
<a name="c_redshift-postgres-jdbc"></a>

 Amazon Redshift는 PostgreSQL을 기반으로 하기 때문에 이전에는 JDBC4 Postgresql 드라이버 버전 8.4.703 및 psqlODBC 버전 9.x 드라이버 사용이 권장되었습니다. 현재 이러한 드라이버를 사용하는 경우 앞으로 새로운 Amazon Redshift 전용 드라이버로 옮기는 것이 좋습니다. 드라이버 및 연결 구성에 대한 자세한 내용은 *Amazon Redshift 관리 가이드*의 [Amazon Redshift JDBC 또는 ODBC 드라이버](https://docs.aws.amazon.com/redshift/latest/mgmt/configuring-connections.html#connecting-drivers) 섹션을 참조하세요.

JDBC를 사용하여 대용량 데이터 세트를 가져올 때 클라이언트 측 메모리 부족 오류를 방지하려면 클라이언트에서 JDBC fetch size 파라미터를 설정하여 데이터를 일괄적으로 가져올 수 있습니다. 자세한 내용은 [JDBC Fetch Size 파라미터 설정](set-the-JDBC-fetch-size-parameter.md) 섹션을 참조하세요.

Amazon Redshift는 JDBC maxRows 파라미터를 인식하지 못합니다. 따라서 결과 집합을 제한할 때는 [LIMIT](r_ORDER_BY_clause.md#order-by-clause-limit) 절을 지정하세요. 또한 [OFFSET](r_ORDER_BY_clause.md#order-by-clause-offset) 절을 사용하여 결과 집합에서 특정 시작점으로 건너뛸 수도 있습니다.

# 다르게 구현되는 기능
<a name="c_redshift-sql-implementated-differently"></a>

Amazon Redshift SQL 언어 요소는 서로 성능 특성이 다를 뿐만 아니라 상응하는 PostgreSQL 구현체와 완전히 다른 구문과 의미를 사용합니다.

**중요**  
Amazon Redshift와 PostgreSQL의 공통 요소라고 해서 의미가 동일할 것이라고 미리 짐작해서는 안 됩니다. 반드시 *Amazon Redshift 개발자 안내서 * [SQL 명령](c_SQL_commands.md) 섹션을 참조하여 미묘한 차이가 무엇인지 확인하세요.

한 가지 특정한 예가 테이블을 정리하여 재구성할 때 사용되는 [VACUUM](r_VACUUM_command.md) 명령입니다. VACUUM은 PostgreSQL 버전과 다르게 동작할 뿐만 아니라 사용하는 파라미터 집합도 다릅니다. Amazon Redshift에서 VACUUM 사용에 대한 자세한 내용은 [테이블 Vacuum](t_Reclaiming_storage_space202.md) 섹션을 참조하세요.

종종 데이터베이스 관리 및 운영 기능과 도구도 다릅니다. 예를 들어 Amazon Redshift는 시스템 작동 방식에 대한 정보가 저장되어 있는 시스템 테이블 및 뷰가 많습니다. 자세한 정보는 [SYS 모니터링 뷰](serverless_views-monitoring.md)을 참조하세요.

다음은 Amazon Redshift에서 다르게 구현되는 SQL 기능 중 몇 가지 예입니다.
+  [CREATE TABLE](r_CREATE_TABLE_NEW.md) 

  Amazon Redshift는 테이블스페이스, 테이블 분할, 상속 및 일부 제약 조건을 지원하지 않습니다. CREATE TABLE 기능을 Amazon Redshift에서 구현하면 테이블을 정렬 및 분산 알고리즘을 정의하여 병렬 처리를 최적화할 수 있습니다.

  Amazon Redshift Spectrum은 [CREATE EXTERNAL TABLE](r_CREATE_EXTERNAL_TABLE.md) 명령을 사용하여 테이블 파티셔닝을 지원합니다.
+  [ALTER TABLE](r_ALTER_TABLE.md) 

  ALTER COLUMN 작업의 하위 집합만 지원됩니다.

  ADD COLUMN은 각 ALTER TABLE 문마다 열을 하나만 추가할 수 있도록 지원합니다.
+  [COPY](r_COPY.md) 

  Amazon Redshift COPY 명령은 Amazon S3 버킷 및 Amazon DynamoDB 테이블에서 데이터를 로드하여 자동 압축을 지원할 수 있도록 고도로 특화되었습니다. 자세한 내용은 [Amazon Redshift에서 데이터 로드](t_Loading_data.md) 및 COPY 명령 참조를 참조하세요.
+  [VACUUM](r_VACUUM_command.md) 

  VACUUM 파라미터는 완전히 다릅니다. 예를 들어 PostgreSQL에서는 기본적으로 VACUUM 작업이 스페이스를 재사용할 수 있도록 회수하는 데 그치는 반면 Amazon Redshift에서는 VACUUM FULL이 기본 VACUUM 작업으로서 디스크 스페이스를 회수한 후 모든 행을 재정렬합니다.
+ 문자열 값을 서로 비교할 때 VARCHAR 값의 후행 공백은 무시됩니다. 자세한 내용은 [후행 공백의 중요성](r_Character_types.md#r_Character_types-significance-of-trailing-blanks) 섹션을 참조하세요.

# 지원되지 않는 PostgreSQL 기능
<a name="c_unsupported-postgresql-features"></a>

다음 PostgreSQL 기능은 Amazon Redshift에서 지원되지 않습니다.

**중요**  
Amazon Redshift와 PostgreSQL의 공통 요소라고 해서 의미가 동일할 것이라고 미리 짐작해서는 안 됩니다. 반드시 *Amazon Redshift 개발자 안내서 * [SQL 명령](c_SQL_commands.md) 섹션을 참조하여 미묘한 차이가 무엇인지 확인하세요.
+ 쿼리 도구 psql은** 지원되지 않습니다. [Amazon Redshift RSQL](https://docs.aws.amazon.com/redshift/latest/mgmt/rsql-query-tool.html) 클라이언트가 지원됩니다.
+ 테이블 분할(범위 및 목록 분할)
+ 테이블스페이스
+ 제약 조건
  + 고유
  + 외래 키
  + 프라이머리 키
  + 제약 조건 확인
  + 예외 제약 조건

  고유성, 기본 키 및 외래 키 제약 조건은 허용되지만 오직 참고용입니다. 따라서 시스템에서 적용되지는 않지만 쿼리 플래너에서 사용할 수는 있습니다.
+ 상속
+ PostgreSQL 시스템 열

  Amazon Redshift SQL은 시스템 열을 묵시적으로 정의하지 않습니다. 하지만 다음 PostgreSQL 시스템 열 이름은 사용자 정의 열인 `oid`, `tableoid`, `xmin`, `cmin`, `xmax`, `cmax`, `ctid`의 이름으로 사용할 수 없습니다. 자세한 내용은 [https://www.postgresql.org/docs/8.0/static/ddl-system-columns.html](https://www.postgresql.org/docs/8.0/static/ddl-system-columns.html)에서 확인할 수 있습니다.
+ 인덱스
+ 창 함수의 NULLS 절
+ 콜레이션

  Amazon Redshift는 로케일 또는 사용자 정의 데이터 정렬 순서를 지원하지 않습니다. [콜레이션 시퀀스](c_collation_sequences.md)을(를) 참조하세요.
+ 값 표현식
  + 구독 표현식
  + 배열 생성자
  + 행 생성자
+ 트리거
+ 외부 데이터 관리(SQL/MED)
+ 테이블 함수
+ 상수 테이블로 사용되는 VALUES 목록
+ 시퀀스
+ 시퀀스
+ RULE 및 TRIGGER 권한

  Amazon Redshift는 GRANT ALL 또는 REVOKE ALL를 실행할 때 이러한 권한을 부여하거나 취소하지만, RULE 및 TRIGGER 권한의 유무는 피부여자의 액세스 권한에 어떤 식으로든 영향을 미치지 않습니다.

# 지원되지 않는 PostgreSQL 데이터 유형
<a name="c_unsupported-postgresql-datatypes"></a>

일반적으로 쿼리가 명시적 또는 묵시적 변환을 포함하여 지원되지 않는 데이터 형식을 사용하려고 하면 오류가 반환됩니다. 하지만 지원되지 않는 데이터 형식을 사용하는 쿼리 중에는 컴퓨팅 노드가 아닌 리더 노드에서 실행되는 쿼리도 있습니다. [리더 노드에서 지원되는 SQL 함수](c_sql-functions-leader-node.md)을(를) 참조하세요.

 지원되는 데이터 형식의 전체 목록은 [데이터 타입](c_Supported_data_types.md) 섹션을 참조하세요.

다음 PostgreSQL 데이터 형식은 Amazon Redshift에서 지원되지 않습니다.
+ 배열
+ BIT, BIT VARYING
+ BYTEA
+ 복합 형식
+ 열거 형식
+ 기하학적 유형(기하학적 유형의 Amazon Redshift 구현은 PostgreSQL과 다름)
+ HSTORE
+ JSON
+ 네트워크 주소 형식
+ 숫자형
  + SERIAL, BIGSERIAL, SMALLSERIAL
  + MONEY
+ 객체 식별자 형식
+ 의사 형식
+ 범위 형식
+ 특수 문자 유형
  + "char" - 단일 바이트 내부 유형(여기서 char라는 데이터 형식은 인용 부호로 묶입니다).
  + 이름 - 객체 이름의 내부 형식.

  이러한 유형에 대한 자세한 내용은 PostgreSQL 설명서의 [Special Character Types](https://www.postgresql.org/docs/8.0/datatype-character.html)를 참조하세요.
+ 텍스트 검색 형식
+ TXID\$1SNAPSHOT
+ UUID
+ XML

# 지원되지 않는 PostgreSQL 함수
<a name="c_unsupported-postgresql-functions"></a>

여기에서 언급하는 함수들도 의미 또는 사용법이 서로 다릅니다. 예를 들어 지원되는 함수 중 일부는 리더 노드에서만 실행됩니다. 또한 지원되지 않는 함수라고 해도 일부는 리더 노드에서 실행할 경우 오류를 반환하지 않습니다. 이러한 함수들이 일부 경우 오류를 반환하지 않는다고 해서 Amazon Redshift에서 지원되는 함수라고 간주해서는 안 됩니다.

**중요**  
Amazon Redshift와 PostgreSQL의 공통 요소라고 해서 의미가 동일할 것이라고 미리 짐작해서는 안 됩니다. 반드시 *Amazon Redshift 데이터베이스 개발자 안내서 * [SQL 명령](c_SQL_commands.md) 섹션을 참조하여 미묘한 차이가 무엇인지 확인하세요.

 자세한 내용은 [리더 노드에서 지원되는 SQL 함수](c_sql-functions-leader-node.md) 섹션을 참조하세요.

다음 PostgreSQL 함수는 Amazon Redshift에서 지원되지 않습니다.
+ 액세스 권한 조회 함수
+ 권고 잠금 함수
+ 집계 함수
  + STRING\$1AGG()
  + ARRAY\$1AGG()
  + EVERY()
  + XML\$1AGG()
  + CORR()
  + COVAR\$1POP()
  + COVAR\$1SAMP()
  + REGR\$1AVGX(), REGR\$1AVGY()
  + REGR\$1COUNT()
  + REGR\$1INTERCEPT()
  + REGR\$1R2()
  + REGR\$1SLOPE()
  + REGR\$1SXX(), REGR\$1SXY(), REGR\$1SYY()
+ 배열 함수 및 연산자
+ 백업 제어 함수
+ 주석 정보 함수
+ 데이터베이스 객체 위치 함수
+ 데이터베이스 객체 크기 함수
+ 날짜/시간 함수 및 연산자
  + CLOCK\$1TIMESTAMP()
  + JUSTIFY\$1DAYS(), JUSTIFY\$1HOURS(), JUSTIFY\$1INTERVAL()
  + PG\$1SLEEP()
  + TRANSACTION\$1TIMESTAMP()
+ ENUM 지원 함수
+ 기하 함수 및 연산자
+ 제네릭 파일 액세스 함수
+ IS DISTINCT FROM
+ 네트워크 주소 함수 및 연산자
+ 수학 함수
  + DIV()
  + SETSEED()
  + WIDTH\$1BUCKET()
+ 설정 반환 함수
  + GENERATE\$1SERIES()
  + GENERATE\$1SUBSCRIPTS()
+ 범위 함수 및 연산자
+ 복구 제어 함수
+ 복구 정보 함수
+ ROLLBACK TO SAVEPOINT 함수
+ 스키마 가시성 조회 함수
+ 서버 신호 전송 함수
+ 스냅샷 동기화 함수
+ 시퀀스 조작 함수
+ 문자열 함수
  + BIT\$1LENGTH()
  + OVERLAY()
  + CONVERT(), CONVERT\$1FROM(), CONVERT\$1TO()
  + ENCODE()
  + FORMAT()
  + QUOTE\$1NULLABLE()
  + REGEXP\$1MATCHES()
  + REGEXP\$1SPLIT\$1TO\$1ARRAY()
  + REGEXP\$1SPLIT\$1TO\$1TABLE()
+ 시스템 카탈로그 정보 함수
+ 시스템 정보 함수
  + CURRENT\$1CATALOG CURRENT\$1QUERY()
  + INET\$1CLIENT\$1ADDR()
  + INET\$1CLIENT\$1PORT()
  + INET\$1SERVER\$1ADDR() INET\$1SERVER\$1PORT()
  + PG\$1CONF\$1LOAD\$1TIME()
  + PG\$1IS\$1OTHER\$1TEMP\$1SCHEMA()
  + PG\$1LISTENING\$1CHANNELS()
  + PG\$1MY\$1TEMP\$1SCHEMA()
  + PG\$1POSTMASTER\$1START\$1TIME()
  + PG\$1TRIGGER\$1DEPTH()
  + SHOW VERSION()
+ 텍스트 검색 함수 및 연산자
+ 트랜잭션 ID 및 스냅샷 함수
+ 트리거 함수
+ XML 함수