소스 Aurora DB 클러스터에 데이터 추가 및 Amazon Redshift에서 쿼리 - Amazon Aurora

소스 Aurora DB 클러스터에 데이터 추가 및 Amazon Redshift에서 쿼리

Amazon Aurora에서 Amazon Redshift로 데이터를 복제하는 제로 ETL 통합 생성을 완료하려면 Amazon Redshift에서 대상 데이터베이스를 생성해야 합니다.

먼저 Amazon Redshift 클러스터 또는 작업 그룹에 연결하고 통합 식별자에 대한 참조가 있는 데이터베이스를 생성합니다. 그런 다음 소스 Aurora DB 클러스터에 데이터를 추가하고 Amazon Redshift에서 복제된 것을 확인할 수 있습니다.

Amazon Redshift에서 대상 데이터베이스 생성

통합을 생성한 후에 Amazon Redshift로 데이터 복제를 시작하려면 먼저 대상 데이터 웨어하우스에 대상 데이터베이스를 만들어야 합니다. 이 대상 데이터베이스에는 통합 식별자에 대한 참조가 포함되어야 합니다. Amazon Redshift 콘솔 또는 쿼리 편집기 v2를 사용하여 데이터베이스를 생성할 수 있습니다.

대상 데이터베이스를 생성하는 방법에 대한 지침은 Amazon Redshift에서 대상 데이터베이스 생성을 참조하세요.

소스 DB 클러스터에 데이터 추가

통합을 구성한 후, Amazon Redshift 데이터 웨어하우스로 복제하려는 일부 데이터를 Aurora DB 클러스터에 추가합니다.

참고

Amazon Aurora와 Amazon Redshift의 데이터 유형 간에는 차이가 있습니다. 데이터 유형 매핑 표는 Aurora와 Amazon Redshift 데이터베이스 간의 데이터 유형 차이 섹션을 참조하세요.

먼저, 선택한 MySQL 또는 PostgreSQL 클라이언트를 사용하여 소스 DB 클러스터에 연결합니다. 지침은 Amazon Aurora DB 클러스터에 연결 단원을 참조하십시오.

그런 다음 테이블을 만들고 샘플 데이터 행을 삽입합니다.

중요

테이블에 프라이머리 키가 있는지 확인하세요. 없는 경우 대상 데이터 웨어하우스에 복제할 수 없습니다.

pg_restore 및 pg_restore PostgreSQL 유틸리티는 처음에 프라이머리 키가 없는 테이블을 만든 다음 나중에 추가합니다. 이러한 유틸리티 중 하나를 사용하는 경우 먼저 스키마를 만든 다음 별도의 명령으로 데이터를 로드하는 것이 좋습니다.

MySQL

다음 예제에서는 MySQL Workbench 유틸리티를 사용합니다.

CREATE DATABASE my_db; USE my_db; CREATE TABLE books_table (ID int NOT NULL, Title VARCHAR(50) NOT NULL, Author VARCHAR(50) NOT NULL, Copyright INT NOT NULL, Genre VARCHAR(50) NOT NULL, PRIMARY KEY (ID)); INSERT INTO books_table VALUES (1, 'The Shining', 'Stephen King', 1977, 'Supernatural fiction');

PostgreSQL

다음 예제에서는 psql PostgreSQL 대화형 터미널을 사용합니다. 클러스터에 연결할 때는 통합을 생성할 때 지정한 명명된 데이터베이스를 포함하세요.

psql -h mycluster.cluster-123456789012.us-east-2.rds.amazonaws.com -p 5432 -U username -d named_db; named_db=> CREATE TABLE books_table (ID int NOT NULL, Title VARCHAR(50) NOT NULL, Author VARCHAR(50) NOT NULL, Copyright INT NOT NULL, Genre VARCHAR(50) NOT NULL, PRIMARY KEY (ID)); named_db=> INSERT INTO books_table VALUES (1, 'The Shining', 'Stephen King', 1977, 'Supernatural fiction');

Amazon Redshift에서 Aurora 데이터 쿼리

Aurora DB 클러스터에 데이터를 추가하면 데이터가 Amazon Redshift에 복제되어 쿼리할 준비가 됩니다.

복제된 데이터를 쿼리하려면
  1. Amazon Redshift 콘솔로 이동한 다음 왼쪽 탐색 창에서 쿼리 편집기 v2를 선택합니다.

  2. 클러스터 또는 작업 그룹에 연결하고 드롭다운 메뉴(이 예시에서는 destination_database)에서 대상 데이터베이스(통합에서 생성한 데이터베이스)를 선택합니다. 대상 데이터베이스를 생성하는 방법에 대한 지침은 Amazon Redshift에서 대상 데이터베이스 생성을 참조하세요.

  3. SELECT 문을 사용하여 데이터를 쿼리합니다. 이 예제에서는 다음 명령을 실행하여 소스 Aurora DB 클러스터에서 생성한 테이블의 모든 데이터를 선택합니다.

    SELECT * from my_db."books_table";
    Redshift 쿼리 편집기 내에서 SELECT 문을 실행합니다. 결과는 RDS 데이터베이스에 추가된 샘플 데이터의 단일 행입니다.
    • my_dbAurora 데이터베이스 스키마 이름입니다. 이 옵션은 MySQL 데이터베이스에만 필요합니다.

    • books_tableAurora 테이블 이름입니다.

명령줄 클라이언트를 사용하여 데이터를 쿼리할 수도 있습니다. 예시:

destination_database=# select * from my_db."books_table"; ID | Title | Author | Copyright | Genre | txn_seq | txn_id ----+–------------+---------------+-------------+------------------------+----------+--------+ 1 | The Shining | Stephen King | 1977 | Supernatural fiction | 2 | 12192
참고

대/소문자를 구분하려면 스키마, 테이블 및 열 이름에 큰따옴표(" ")를 사용합니다. 자세한 내용은 enable_case_sensitive_identifier 단원을 참조하세요.

Aurora와 Amazon Redshift 데이터베이스 간의 데이터 유형 차이

다음 표에는 해당하는 Amazon Redshift 데이터 유형에 대응하는 Aurora MySQL 또는 Aurora PostgreSQL 데이터 유형의 매핑이 나와 있습니다. Amazon Aurora는 현재 제로 ETL 통합에 이러한 데이터 유형만 지원합니다.

소스 DB 클러스터의 테이블에 지원되지 않는 데이터 유형이 포함된 경우 테이블이 동기화되지 않아 Amazon Redshift 대상에서 사용할 수 없습니다. 소스에서 대상으로의 스트리밍은 계속되지만 지원되지 않는 데이터 유형이 있는 테이블은 사용할 수 없습니다. 테이블을 수정하고 Amazon Redshift에서 사용할 수 있게 하려면 주요 변경 사항을 수동으로 되돌린 다음 ALTER DATABASE...INTEGRATION REFRESH를 실행하여 통합을 새로 고쳐야 합니다.

Aurora MySQL

Aurora MySQL 데이터 유형 Amazon Redshift 데이터 형식 설명 제한 사항
INT INTEGER 4바이트 부호화 정수 없음
SMALLINT SMALLINT 2바이트 부호화 정수 없음
TINYINT SMALLINT 2바이트 부호화 정수 없음
MEDIUMINT INTEGER 4바이트 부호화 정수 없음
BIGINT BIGINT 8바이트 부호화 정수 없음
INT UNSIGNED BIGINT 8바이트 부호화 정수 없음
TINYINT UNSIGNED SMALLINT 2바이트 부호화 정수 없음
MEDIUMINT UNSIGNED INTEGER 4바이트 부호화 정수 없음
BIGINT UNSIGNED DECIMAL(20,0) 정밀도를 선택할 수 있는 정확한 숫자 없음
DECIMAL(p,s) = NUMERIC(p,s) DECIMAL (p,s) 정밀도를 선택할 수 있는 정확한 숫자

38보다 큰 정밀도 및 37보다 큰 확장은 지원되지 않음

DECIMAL(p,s) UNSIGNED = NUMERIC(p,s) UNSIGNED DECIMAL (p,s) 정밀도를 선택할 수 있는 정확한 숫자

38보다 큰 정밀도 및 37보다 큰 확장은 지원되지 않음

FLOAT4/REAL REAL 단정밀도 부동 소수점 수 없음
FLOAT4/REAL UNSIGNED REAL 단정밀도 부동 소수점 수 없음
DOUBLE/REAL/FLOAT8 DOUBLE PRECISION 배정밀도 부동 소수점 수 없음
DOUBLE/REAL/FLOAT8 UNSIGNED DOUBLE PRECISION 배정밀도 부동 소수점 수 없음
BIT(n) VARBYTE(8) 가변 길이 이진 값 없음
BINARY(n) VARBYTE(n) 가변 길이 이진 값 없음
VARBINARY(n) VARBYTE(n) 가변 길이 이진 값 없음
CHAR(n) VARCHAR(n) 길이가 가변적인 문자열 값 없음
VARCHAR(n) VARCHAR(n) 길이가 가변적인 문자열 값 없음
TEXT VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자열 값 없음
TINYTEXT VARCHAR(255) 최대 255자의 길이가 가변적인 문자열 값 없음
MEDIUMTEXT VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자열 값 없음
LONGTEXT VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자열 값 없음
ENUM VARCHAR(1,020) 최대 1,020자의 길이가 가변적인 문자열 값 없음
SET VARCHAR(1,020) 최대 1,020자의 길이가 가변적인 문자열 값 없음
날짜 날짜 날짜(년, 월, 일) 없음
DATETIME TIMESTAMP 날짜/시간(시간대 제외) 없음
TIMESTAMP(p) TIMESTAMP 날짜/시간(시간대 제외) 없음
TIME VARCHAR(18) 최대 18자의 길이가 가변적인 문자열 값 없음
YEAR VARCHAR(4) 최대 4자의 길이가 가변적인 문자열 값 없음
JSON SUPER 반정형 데이터 또는 문서 값 없음

Aurora PostgreSQL

Aurora PostgreSQL의 제로 ETL 통합은 사용자 지정 데이터 유형이나 확장에서 만든 데이터 유형을 지원하지 않습니다.

Aurora PostgreSQL 데이터 유형 Amazon Redshift 데이터 형식 설명 제한 사항
array SUPER 반정형 데이터 또는 문서 값 없음
bigint BIGINT 8바이트 부호화 정수 없음
bigserial BIGINT 8바이트 부호화 정수 없음
bit varying(n) VARBYTE(n) 최대 16,777,216바이트의 길이가 가변적인 이진 값 없음
bit(n) VARBYTE(n) 최대 16,777,216바이트의 길이가 가변적인 이진 값 없음
bit, bit varying VARBYTE(16777216) 최대 16,777,216바이트의 길이가 가변적인 이진 값 없음
boolean BOOLEAN 논리적 부울(true/false) 없음
bytea VARBYTE(16777216) 최대 16,777,216바이트의 길이가 가변적인 이진 값 없음
char(n) CHAR(n) 최대 65,535바이트의 길이가 고정된 문자 문자열 값 없음
char varying(n) VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자 문자열 값 없음
cid BIGINT

8바이트 부호화 정수

없음
cidr

VARCHAR(19)

최대 19자의 길이가 가변적인 문자열 값

date 날짜 날짜(년, 월, 일)

지원되지 않는 294,276 A.D. 값보다 큰 값

double precision DOUBLE PRECISION 배정밀도 부동 소수점 수 비정상 값은 완전히 지원되지 않음

gtsvector

VARCHAR(65,535)

최대 65,535자의 길이가 가변적인 문자열 값

없음
inet

VARCHAR(19)

최대 19자의 길이가 가변적인 문자열 값

없음
정수 INTEGER 4바이트 부호화 정수 없음

int2vector

SUPER 반정형 데이터 또는 문서 값. 없음
interval INTERVAL 지속 시간 YEAR TO MONTH 또는 DAY TO SECOND 한정자를 지정하는 INTERVAL 유형만 지원됩니다.
json SUPER 반정형 데이터 또는 문서 값 없음
jsonb SUPER 반정형 데이터 또는 문서 값 없음
jsonpath VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자열 값 없음

macaddr

VARCHAR(17) 최대 17자의 길이가 가변적인 문자열 값 없음

macaddr8

VARCHAR(23) 최대 23자의 길이가 가변적인 문자열 값 없음
money DECIMAL(203) 통화 금액 없음
name VARCHAR(64) 최대 64자의 길이가 가변적인 문자열 값 없음
numeric(p,s) DECIMAL (p,s) 사용자 정의 고정 정밀도 값
  • NaN 값은 지원되지 않음

  • 38보다 큰 정밀도 및 37보다 큰 확장은 지원되지 않음

  • 네거티브 확장은 지원되지 않음

oid BIGINT 8바이트 부호화 정수 없음
oidvector SUPER 반정형 데이터 또는 문서 값. 없음
pg_brin_bloom_summary VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자열 값 없음
pg_dependencies VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자열 값 없음
pg_lsn VARCHAR(17) 최대 17자의 길이가 가변적인 문자열 값 없음
pg_mcv_list VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자열 값 없음
pg_ndistinct VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자열 값 없음
pg_node_tree VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자열 값 없음
pg_snapshot VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자열 값 없음
실제 REAL 단정밀도 부동 소수점 수 비정상 값은 완전히 지원되지 않음
refcursor VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자열 값 없음
smallint SMALLINT 2바이트 부호화 정수 없음
smallserial SMALLINT 2바이트 부호화 정수 없음
serial INTEGER 4바이트 부호화 정수 없음
텍스트 VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자열 값 없음
tid VARCHAR(23) 최대 23자의 길이가 가변적인 문자열 값 없음
time [(p)] 시간대 제외 VARCHAR(19) 최대 19자의 길이가 가변적인 문자열 값 Infinity-Infinity 값은 지원되지 않음
time [ (p) ](시간대 포함) VARCHAR(22) 최대 22자의 길이가 가변적인 문자열 값 Infinity-Infinity 값은 지원되지 않음
timestamp [(p)] 시간대 제외 TIMESTAMP 날짜/시간(시간대 제외)
  • Infinity-Infinity 값은 지원되지 않음

  • 지원되지 않는 9999-12-31 값보다 큰 값

  • B.C. 값은 지원되지 않음

timestamp [(p)](시간대 포함) TIMESTAMPTZ 날짜/시간(시간대 포함)
  • Infinity-Infinity 값은 지원되지 않음

  • 지원되지 않는 9999-12-31 값보다 큰 값

  • B.C. 값은 지원되지 않음

tsquery VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자열 값 없음
tsvector VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자열 값 없음
txid_snapshot VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자열 값 없음
uuid VARCHAR(36) 가변 길이 36자 문자열 없음
xid BIGINT 8바이트 부호화 정수 없음
xid8 DECIMAL(20, 0) 고정 정밀도 소수 없음
xml VARCHAR(65,535) 최대 65,535자의 길이가 가변적인 문자열 값 없음

Aurora PostgreSQL에 대한 DDL 작업

Amazon Redshift는 PostgreSQL에서 파생되므로 일반적인 PostgreSQL 아키텍처로 인해 Aurora PostgreSQL과 여러 기능을 공유합니다. 제로 ETL 통합은 이러한 유사성을 활용하여 Aurora PostgreSQL에서 Amazon Redshift로의 데이터 복제를 간소화하고, 데이터베이스를 이름으로 매핑하며, 공유 데이터베이스, 스키마 및 테이블 구조를 활용합니다.

Aurora PostgreSQL 제로 ETL 통합을 관리할 때는 다음 사항을 고려하세요.

  • 격리는 데이터베이스 수준에서 관리됩니다.

  • 복제는 데이터베이스 수준에서 발생합니다.

  • Aurora PostgreSQL 데이터베이스는 이름별로 Amazon Redshift 데이터베이스에 매핑되며, 원본 이름이 변경된 경우 해당 이름이 변경된 Redshift 데이터베이스로 데이터가 흐릅니다.

유사점에도 불구하고 Amazon Redshift와 Aurora PostgreSQL에는 중요한 차이점이 있습니다. 다음 섹션에서는 일반적인 DDL 작업에 대한 Amazon Redshift 시스템 응답을 간략하게 설명합니다.

데이터베이스 작업

다음 표는 데이터베이스 DDL 작업에 대한 시스템 응답을 보여줍니다.

DDL 작업 Redshift 시스템 응답
CREATE DATABASE 작업 없음
DROP DATABASE Amazon Redshift는 대상 Redshift 데이터베이스에서 모든 데이터를 삭제합니다.
RENAME DATABASE Amazon Redshift는 원래 대상 데이터베이스의 모든 데이터를 삭제하고 새 대상 데이터베이스의 데이터를 다시 동기화합니다. 새 데이터베이스가 없는 경우 수동으로 생성해야 합니다. 자세한 지침은 Amazon Redshift에서 대상 데이터베이스 생성을 참조하세요.

스키마 작업

다음 표는 스키마 DDL 작업에 대한 시스템 응답을 보여줍니다.

DDL 작업 Redshift 시스템 응답
CREATE SCHEMA 작업 없음
DROP SCHEMA Amazon Redshift는 원래 스키마를 삭제합니다.
RENAME SCHEMA Amazon Redshift는 원래 스키마를 삭제한 다음 새 스키마의 데이터를 다시 동기화합니다.

테이블 작업

다음 표는 테이블 DDL 작업에 대한 시스템 응답을 보여줍니다.

DDL 작업 Redshift 시스템 응답
CREATE TABLE

Amazon Redshift는 테이블을 생성합니다.

프라이머리 키 없이 테이블을 생성하거나 선언적 파티셔닝을 수행하는 등의 일부 작업으로 인해 테이블 생성이 실패합니다. 자세한 내용은 Aurora PostgreSQL 제한 사항Amazon Redshift가 구성된 Aurora 제로 ETL 통합 문제 해결 단원을 참조하세요.

DROP TABLE Amazon Redshift는 테이블을 삭제합니다.
TRUNCATE TABLE Amazon Redshift는 테이블을 자릅니다.
ALTER TABLE (RENAME...) Amazon Redshift는 테이블 또는 열의 이름을 바꿉니다.
ALTER TABLE (SET SCHEMA)

Amazon Redshift는 원래 스키마에서 테이블을 삭제하고 새 스키마의 테이블을 다시 동기화합니다.

ALTER TABLE (ADD PRIMARY KEY) Amazon Redshift는 프라이머리 키를 추가하고 테이블을 다시 동기화합니다.
ALTER TABLE (ADD COLUMN) Amazon Redshift는 테이블에 열을 추가합니다.
ALTER TABLE (DROP COLUMN)

Amazon Redshift는 프라이머리 키 열이 아닌 경우 열을 삭제합니다. 그렇지 않으면 테이블이 다시 동기화됩니다.

ALTER TABLE (SET LOGGED/UNLOGGED) 테이블을 로깅되도록 변경하면 Amazon Redshift가 테이블을 다시 동기화합니다. 테이블을 로깅되지 않도록 변경하면 Amazon Redshift가 테이블을 삭제합니다.