Amazon RDS용 Amazon S3 버킷으로 내보낼 때 데이터 변환 - Amazon Relational Database Service

Amazon RDS용 Amazon S3 버킷으로 내보낼 때 데이터 변환

DB 스냅샷을 Amazon S3 버킷으로 내보낼 때 Amazon RDS는 데이터를 Parquet 형식으로 변환하고, 데이터를 Parquet 형식으로 내보내며, 데이터를 Parquet 형식으로 저장합니다. Parquet에 대한 자세한 내용은 Apache Parquet 웹 사이트를 참조하십시오.

Apache Parquet은 다음과 같은 프리미티브 유형 중 하나로 모든 데이터를 저장합니다.

  • BOOLEAN

  • INT32

  • INT64

  • INT96

  • FLOAT

  • DOUBLE

  • BYTE_ARRAY – 가변 길이 바이트 배열(이진수라고도 함)

  • FIXED_LEN_BYTE_ARRAY – 값이 일정한 크기를 가질 때 사용되는 고정 길이 바이트 배열

Parquet 데이터 유형은 형식을 읽고 쓸 때 복잡성을 줄이기 위한 것입니다. Parquet은 프리미티브 유형을 확장할 수 있도록 논리적 유형을 제공합니다. 논리적 유형LogicalType 메타 데이터 필드의 데이터를 이용으로 주석으로 구현됩니다. 논리적 유형 주석은 프리미티브 유형을 해석하는 방법을 설명합니다.

STRING 논리적 유형에 BYTE_ARRAY 유형이 주석으로 달려 있으면 바이트 배열이 UTF-8로 인코딩된 문자열로 해석되어야 한다는 뜻입니다. 내보내기 태스크가 완료되면 Amazon RDS에서 문자열 변환이 발생했는지를 알려줍니다. 내보낸 기초 데이터는 항상 소스의 데이터와 동일합니다. 그러나 UTF-8에서의 인코딩 차이로 인해 일부 문자는 Athena 같은 도구에서 읽을 때 소스와 다르게 나타날 수 있습니다.

자세한 내용은 Parquet 설명서의 Parquet 논리적 유형 정의를 참고하십시오.

Parquet로 MySQL 및 MariaDB 데이터 유형 매핑

다음 표는 데이터를 변환해 Amazon S3로 내보낼 때 MySQL 및 MariaDB 데이터 유형에서 Parquet 데이터 유형으로의 매핑을 보여줍니다.

소스 데이터 유형 Parquet 프리미티브 유형 논리적 유형 주석 변환 노트
숫자 데이터 유형
BIGINT INT64
BIGINT UNSIGNED FIXED_LEN_BYTE_ARRAY(9) DECIMAL(20,0) Parquet는 서명된 유형만 지원하므로 매핑에는 BIGINT_UNSIGNED 유형을 저장하기 위해 추가 바이트(8 + 1)가 필요합니다.
BIT BYTE_ARRAY
DECIMAL INT32 DECIMAL (p,s) 소스 값이 231 미만이면 INT32로 저장됩니다.
INT64 DECIMAL (p,s) 소스 값이 231 이상이지만 263 미만인 경우 INT64로 저장됩니다.
FIXED_LEN_BYTE_ARRAY(N) DECIMAL (p,s) 소스 값이 263 이상이면 FIXED_LEN_BYTE_ARRAY(N)로 저장됩니다.
BYTE_ARRAY STRING Parquet는 38보다 큰 십진수 정밀도를 지원하지 않습니다. 십진수 값은 BYTE_ARRAY 유형의 문자열로 변환되고 UTF8로 인코딩됩니다.
DOUBLE DOUBLE
FLOAT DOUBLE
INT INT32
INT UNSIGNED INT64
MEDIUMINT INT32
MEDIUMINT UNSIGNED INT64
NUMERIC INT32 DECIMAL (p,s)

소스 값이 231 미만이면 INT32로 저장됩니다.

INT64 DECIMAL (p,s) 소스 값이 231 이상이지만 263 미만인 경우 INT64로 저장됩니다.
FIXED_LEN_ARRAY(N) DECIMAL (p,s) 소스 값이 263 이상이면 FIXED_LEN_BYTE_ARRAY(N)로 저장됩니다.
BYTE_ARRAY STRING Parquet는 38보다 큰 숫자 정밀도를 지원하지 않습니다. 이 숫자 값은 BYTE_ARRAY 유형의 문자열로 변환되고 UTF8로 인코딩됩니다.
SMALLINT INT32
SMALLINT UNSIGNED INT32
TINYINT INT32
TINYINT UNSIGNED INT32
문자열 데이터 유형
BINARY BYTE_ARRAY
BLOB BYTE_ARRAY
CHAR BYTE_ARRAY
ENUM BYTE_ARRAY STRING
LINESTRING BYTE_ARRAY
LONGBLOB BYTE_ARRAY
LONGTEXT BYTE_ARRAY STRING
MEDIUMBLOB BYTE_ARRAY
MEDIUMTEXT BYTE_ARRAY STRING
MULTILINESTRING BYTE_ARRAY
SET BYTE_ARRAY STRING
TEXT BYTE_ARRAY STRING
TINYBLOB BYTE_ARRAY
TINYTEXT BYTE_ARRAY STRING
VARBINARY BYTE_ARRAY
VARCHAR BYTE_ARRAY STRING
날짜 및 시간 데이터 유형
DATE BYTE_ARRAY STRING 날짜는 BYTE_ARRAY 유형의 문자열로 변환되고 UTF8로 인코딩됩니다.
DATETIME INT64 TIMESTAMP_MICROS
TIME BYTE_ARRAY STRING TIME 유형은 BYTE_ARRAY의 문자열로 변환되고 UTF8로 인코딩됩니다.
TIMESTAMP INT64 TIMESTAMP_MICROS
YEAR INT32
기하학적 데이터 유형
GEOMETRY BYTE_ARRAY
GEOMETRYCOLLECTION BYTE_ARRAY
MULTIPOINT BYTE_ARRAY
MULTIPOLYGON BYTE_ARRAY
POINT BYTE_ARRAY
POLYGON BYTE_ARRAY
JSON 데이터 유형
JSON BYTE_ARRAY STRING

Parquet로 PostgreSQL 데이터 유형 매핑

다음 표는 데이터를 변환해 Amazon S3로 내보낼 때 PostgreSQL 데이터 유형에서 Parquet 데이터 유형으로의 매핑을 보여줍니다.

PostgreSQL 데이터 형식 Parquet 프리미티브 유형 논리적 유형 주석 매핑 노트
숫자 데이터 유형
BIGINT INT64
BIGSERIAL INT64
DECIMAL BYTE_ARRAY STRING DECIMAL 유형은 BYTE_ARRAY 유형의 문자열로 변환되고 UTF8로 인코딩됩니다.

이 변환은 데이터 정밀도와 숫자(NaN)가 아닌 데이터 값으로 인해 복잡해지는 것을 피하기 위한 것입니다.

DOUBLE PRECISION DOUBLE
INTEGER INT32
MONEY BYTE_ARRAY STRING
REAL FLOAT
SERIAL INT32
SMALLINT INT32 INT_16
SMALLSERIAL INT32 INT_16
문자열 및 관련 데이터 유형
ARRAY BYTE_ARRAY STRING

배열은 문자열로 변환되고 BINARY(UTF8)로 인코딩됩니다.

이 변환은 데이터 정밀도와 숫자(NaN)가 아닌 데이터 값, 그리고 시간 데이터 값으로 인해 복잡해지는 것을 피하기 위한 것입니다.

BIT BYTE_ARRAY STRING
BIT VARYING BYTE_ARRAY STRING
BYTEA BINARY
CHAR BYTE_ARRAY STRING
CHAR(N) BYTE_ARRAY STRING
ENUM BYTE_ARRAY STRING
NAME BYTE_ARRAY STRING
TEXT BYTE_ARRAY STRING
TEXT SEARCH BYTE_ARRAY STRING
VARCHAR(N) BYTE_ARRAY STRING
XML BYTE_ARRAY STRING
날짜 및 시간 데이터 유형
DATE BYTE_ARRAY STRING
INTERVAL BYTE_ARRAY STRING
TIME BYTE_ARRAY STRING
TIME WITH TIME ZONE BYTE_ARRAY STRING
TIMESTAMP BYTE_ARRAY STRING
TIMESTAMP(시간대 사용) BYTE_ARRAY STRING
기하학적 데이터 유형
BOX BYTE_ARRAY STRING
CIRCLE BYTE_ARRAY STRING
LINE BYTE_ARRAY STRING
LINESEGMENT BYTE_ARRAY STRING
PATH BYTE_ARRAY STRING
POINT BYTE_ARRAY STRING
POLYGON BYTE_ARRAY STRING
JSON 데이터 유형
JSON BYTE_ARRAY STRING
JSONB BYTE_ARRAY STRING
기타 데이터 유형
BOOLEAN BOOLEAN
CIDR BYTE_ARRAY STRING 네트워크 데이터 유형
COMPOSITE BYTE_ARRAY STRING
DOMAIN BYTE_ARRAY STRING
INET BYTE_ARRAY STRING 네트워크 데이터 유형
MACADDR BYTE_ARRAY STRING
OBJECT IDENTIFIER 해당 사항 없음
PG_LSN BYTE_ARRAY STRING
RANGE BYTE_ARRAY STRING
UUID BYTE_ARRAY STRING