Redshift의 기본 데이터 타입과 주의할 점
Redshift의 기본 데이터 타입
SMALLINT (INT2)
INTEGER (INT, INT4)
BIGINT (INT8)
DECIMAL (NUMERIC)
REAL (FLOAT4)
DOUBLE PRECISION (FLOAT8)
BOOLEAN (BOOL)
CHAR (CHARACTER)
VARCHAR (CHARACTER VARYING)
TEXT (VARCHAR(256))
DATE
TIMESTAMP
Redshift의 데이터 타입은 위와 같이 PostgreSQL과 거의 동일하지만 볼드체로 표기한 타입들은 주의할 필요가 있습니다.
PostgreSQL은 UTF-8 기준이므로 어떤 언어가 되었든 한 글자는 CHARACTER 하나입니다.
반면에 Redshift에서 CHAR, VARCHAR, TEXT는 기본적으로 byte 단위를 사용합니다. 한중일 언어는 영어와 다르게 한 문자가 UTF-8으로 3byte이므로 PostgreSQL과는 다르게 CHARACTER의 필드로 포함할 수 있는 문자열의 크기가 달라지게 됩니다.
쉽게 말해 Redshift의 CHARACTER 단위는 byte이기 때문에 한중일 언어처럼 한글자가 3byte인 경우는 데이터 타입에서 포함할 수 있는 크기가 PostgreSQL의 그것과는 다를 수 있다는 점을 기억해주세요.
Redshift의 고급 데이터 타입
GEOMETRY
GEOGRAPHY
HLLSKETCH
SUPER
JSON 타입을 지원해 nested된 데이터를 쉽게 처리할 수 있는 PostgreSQL과 달리 Redshift는 JSON 타입을 Native하게 지원하지 않습니다.
따라서 PostgreSQL의 JSON형태 데이터를 처리하고 싶다면 이를 Redshift의 CHARACTER 타입으로 받아온 뒤 이를 Redshift에서 제공하는 JSON 함수를 이용해 파싱해야 합니다.