[데이터 엔지니어링 데브코스] TIL 30일차 - 데이터 웨어하우스 관리와 고급 SQL과 BI 대시보드(2), (3)

박단이·2023년 12월 4일
0

데브코스 TIL

목록 보기
30/56

오늘 배운 것🤓

사용자 권한(Group, Role)

  • 일반적으로 사용자 별로 테이블의 권한을 설정하지 않는다.
    (너무 복잡하여 실수할 가능성이 높기 때문)
  • 사용자 집합(Group/Role)과 테이블 집합(Schema)를 만들어서 그 사이에 access 권한을 연결한다.
  • 개인 정보와 관련된 테이블이라면 따로 schema와 group/role을 만든다.

Group

  • Group 별로 어떤 schema에 접근할 수 있는지 지정한다.
  • 한 사용자는 다수의 group에 속할 수 있다.
  • 그룹은 계승할 수 없다.
-- 그룹 생성
CREATE GROUP group_name;

-- 사용자 추가
ALTER GROUP group_name ADD USER user_name;

-- 모든 group 리스트 확인
SELECT * FROM pg_group;

-- 그룹에 스키마 접근 권한을 줄 때
-- -- 모든 권한
GRANT ALL ON SCHEMA schema_name TO GROUP group_name;
GRANT ALL ON ALL TABLES IN SCHEMA schema_name TO GROUP group_name;

-- 일부 권한(예. 읽기)
GRANT USAGE ON SCHEMA schema_name TO GROUP group;
GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO GROUP group_name;

Role

  • 그룹과 같은 개념이지만 계승이 가능하다는 것이 차이점
  • 가장 기본이 되는 building block level의 role을 만들고 그 위에 하나씩 쌓아가면서 만든다.
  • group 대신에 role을 만드는 것이 트렌드 -> RBAC (Role Based Access Control)
-- 역할 생성
CREATE ROLE role_name;

-- 역할 계승
-- role2는 role1의 속성을 계승한다.
GRANT ROLE role1 TO ROLE role2;

-- 모든 role 리스트 확인
SELECT * FROM svv_roles;

-- 그룹에 스키마 접근 권한을 줄 때 : GROUP을 ROLE로만 바꿀 것

벌크 데이터 적재

  1. 데이터를 적재할 테이블을 CREATE TABLE로 미리 생성
  2. 각 테이블의 input을 S3에 넣어두기
  3. Redshift에 S3 접근 권한 부여
    • IAM으로 역할은 만들고 이 역할을 Redshift 클러스터에 지정
    • AmazonS3FullAccess
  4. S3에서 Redshift로 COPY
COPY table_name
FROM 'S3에서 불러올 경로'
credentials 'aws_iam_role=arn경로'   -- 권한 확인
delimiter ','       -- csv일 경우
dateformat 'auto' 
timeformat 'auto'
IGNOREHEADER 1   -- 첫번째 줄 헤더 무시
removequotes     -- 문자열이 따옴표로 둘러싸인 경우 무시
;

Redshift 백업 방식

고정 비용 백업

  • Snapshot 이용
  • 마지막 백업으로부터 바뀐 것만 저장하는 방식
  • 과거 시점의 내용으로 redshift 클러스터 생성 가능
  • 자동 백업
    기본은 하루지만 최대 35일까지 가능
    같은 지역에 있는 S3에서 이루어짐
    다른 지역으로 백업하려면(재난 대비) Cross regional snapshot copy 설정해야 함
  • 매뉴얼 백업
    내가 원하는 시점을 명시적으로 진행

가변 비용 백업

  • Snapshot 전에 Recovery Points가 생성되고 이를 snapshot으로 바꾼 다음에 백업할 수 있다.
    (사용자의 스토리지와 컴퓨팅 자원이 별개이기 때문)
  • 고정 비용에 비해 제한적이고 복잡하다.
  • recovery points는 24시간에 대해서만 유지된다.
  • 자동 백업은 24시간만 가능하다.

느낀 점😊

가변 비용 백업에서 Recovery points가 생성된다는 개념이 신기했다. serverless일 때 스토리지와 컴퓨팅 자원이 분리된다는 것을 계속 잊게 된다. 조금더 중요하게 바라봐야하는 개념인 것 같다.

profile
데이터 엔지니어를 꿈꾸는 주니어 입니다!

0개의 댓글