Amazon Redshift(6)

ggulcha·2022년 8월 3일
1

Amazon Redshift

목록 보기
6/10

✅ 데이터 적재 (load)
COPY 쿼리를 이용하여 적재 (레드시프트 데이터 적재 쿼리)

  • RDBMS 의 insert라고 이해하면 쉽다 (그러나 이것은 잘못된 해결 패턴이다.)
  • 레드시프트 데이터 블록은 불변 블록이고 데이터가 추가되거나 수정될 때마다 새로운 블록을 생성한다 -> insert문으로 하나씩 적재를 하는것은 클러스터 성능에 치명적

해결책 : 적재하려는 데이터를 s3에 저장하고 copy쿼리로 한 번에 적재

copy 쿼리는 리더 노드의 간섭 없이 컴퓨팅 노드의 각 슬라이스에서 병렬로 수행되기 때문에 적재 성능이 빠르고 쿼리 슬롯도 차지하지 않음

✅ 인증 파라미터

  • AWS access key ID
  • AWS STS (Security Token Service)
  • IAM role
    IAM 사용자보다 IAM 역할 사용을 권장,사용자 키가 노출되면 서비스에 문제가 됨 -> 키를 폐기해도 이미 여러 사용자가 사용하고 있을 수 있기에 문제가 됨

✅ IAM 역할 생성
1) 역할 만들기

2) 권한추가

3) 클러스터 IAM 역할 추가

4) Redshift sync (약 5분정도 modifying 소요)

5) COPY 쿼리 적재

  • copy를 위한 권한
    • 데이터가 보관되는 S3 버킷의 ListBucket권한
    • S3 데이터 오브젝트의 GetObject 권한
    • MANIFEST 옵션을 사용할 경우 매니페스트 오브젝트의 GetObject권한
  • 데이터 경로 (FORM)
    's3://버킷명/파일경로'
    ❗️ 주의 해당경로를 접두사로 가지기때문에 폴더안의 모든 파일이 적재됨
    '/' 를 붙여서 구분하여 파일이 모두 같이 적재되는것을 방지
    6) 차트
    레드시프트는 쿼리 결과를 바로 차트로 변경할 수 있는 기능을 제공한다.
    JPG 또는 PNG 파일로 Export 할 수 있다.

✅ S3 bucket을 이용한 적재
S3를 이용한 적재 시 파일 경로의 한 파일만 적재하지 않고 접두사를 이용한다.
COPY 쿼리를 수행할 때는 컴퓨팅 노드의 각 슬라이스에서 적재 작업을 수행,
슬라이스는 파일 단위로 작업을 처리하기 때문에 파일 하나에 모든 데이터를 저장해 적재하면 한 슬라이스에서 모든 적재 작업을 처리하게된다.

-> 작업속도가 상당히 느려짐
레드시프트의 병렬 처리 능력을 최대한 활용하기 위해서는 적재하는 파일 수를 슬라이스에 균일하게 나눠 적재하여 적재 속도를 향상시킨다.
ex) ds2.8xlarge 노드 4대 -> 노드당 16대의 슬라이스 -> 16 *4 = 64 슬라이스
64개의 슬라이스에 병렬로 적재 작업을 수행

0개의 댓글