TIL - Day 43

김혁·2023년 12월 20일
0

redshift 권한과 보안

일반적으로 사용자별 테이블별 권한 설정은 하지않음

  • 너무 복잡하고 실수의 가능성이 높음

역할 혹은 그룹 별로 스키마별 접근 권한을 주는 것이 일반적
rbac가 새로운 트렌드 : 그룹 보다 더 편리

  • 그룹과 역할의 차이 계승 가능 여부

여러 역할에 속한 사용자의 경우는 각 역할의 권한을 모두 갖게 됨
개인정보와 관련한 테이블들이라면 별도 스키마 설정

  • 극히 일부 사람만 속한 역할에 접근 권한을 줌

뒤의 예는 그룹에 적용했지만 그룹이란 키워드를 역할로 바꾸어도 동작

컬럼 레벨 보안

테이블 내의 특정 컬럼을 특정 사용자나 특정 그룹/역할에만 접근 가능하게 하는것

  • 이메일 주소 나 주민번호와 같은 개인 정보

사실 이것은 좋은 방법은 아님/ 별도의 테이블로 구성하는 것

  • 실수로 노출 되어질 수 있음

레코드 레벨 보안

테이블 내의 특정 레코드에 대해 특정 사용자나 특정 그룹/역할에만 접근 가능하게 하는 것
특정 사용자/그룹의 특정 테이블 대상 select,update,delete 작업에 추가 조건을 다는 형태로 동작
create rls policy 를 사용하여 policy로 만들어서 attach rls policy 명령ㅇ르 사용해 특정 테이블에 추가
일반적으로 더 좋은 방법은 테이블을 따로 구성 혹은 데이터 시스템에 로드하지 않는 것

redshift가 지원하는 데이터 백업 방식

기본적으로 백업 방식은 마지막 백업으로부터 바뀐 것들만 저장하는 방식
이를 snapshot이라고 부름
백업을 통해 과거로 돌아가 . 그시점의 내용으로 특정 테이블을 복구하는 것이 가능
또한 과거 시점의 내용으로 redshift 클러스터를 새로 생성하는 것도 가능

자동 백업

기본은 하루이지만 최대 과거 35일 까지
백업은 같은 지역에 있는 s3
다른 지역에 있는 s3에 하려면 cross - regional snapshot copy를 설정. 보통 재난시 복구
매뉴얼 백업

  • 언제든 원할 때 만드는 백업으로 명시적으로 삭제할 때까지 유지됨

백업 기간 늘리기
maintenane -> backup details -> edit

백업에서 테이블 복구
redshift에서 restore table

가변비용 redshift serverless가 지원하는 데이터 백업 방식

조금 더 제한적이고 복잡
자동백업으로는 24시간만 백업 가능 - 30분마다 백업
recovery points를 snapshot으로 바꾼 다음에 데이터복구나 새 클러스터 생성
매뉴얼 백업도 가능 - 기간을 늘릴 수 있음

redshift 기타 기능

  • redshift spectrum : s3 등에 있는 파일을 테이블 처럼
  • redshift serverless : 가변비용 모델로 이미 앞에서 살펴봄
  • athena : apache presto 서비스화
  • redshift ml

redshift 스펙트럼
redshift의 확장 기능
s3에 있는 파일들을 마치 테이블처럼 sql로 처리 가능
s3 파일들을 외부 테이블들로 처리하면서 redshift 테이블과 조인 가능
s3 외부 테이블들은 보통 fact 테이블, redshift 테이블은 demension 테이블
1 테라바이트에 5달러
이를 사용하려면 redshift cluster가 필요
s3와 같은 리전에 있어야함

Athena 는 redshift spectrum과 비슷한 기능 제공
s3에 있는 데이터들을 기반으로 sql 쿼리 기능 제공
이 경우 s3를 데이터 레이크라 볼 수 있음

reshift ml은 sagemaker를 통해서 지원됨
auto pilot이라 하여 최적화된 모델을 자동 생성해주는 기능 제공

redshift spectrum 으로 s3 외부 테이블 조작해보기

s3에 굉장히 큰 데이터가 있는데 이를 redshift로 로딩하기가 버겁다면 이를 외부 테이블로 설정해서 redshift에서 조작이 가능하다. 이에 대해 알아보자

Fact 테이블과 dimension 테이블

fact 테이블 : 분석의 초점이 되는 양적 정보를 포함하는 중앙 테이블

  • 일반적으로 매출 수익, 판매량 또는 이익과 같은 사실 도는 측정 항목을 포함하며 비즈니스 결정에 사용
    fact 테이블은 일반적으로 외래 키를 통해 여러 dimension 테이블과 연결됨
    보통 fact 테이블의 크기가 훨씬 . 더큼

dimension 테이블: fact 테이블에 대한 상세 정보를 제공하는 테이블

  • 고객 제품과 같은 테이블로 fact 테이블에 대한 상세 정보 제공
    fact 테이블의 데이터에 맥락을 제공하여 다양한 방식으로 데이터를 조각내고 분석
    dimension테이블은 일반적으로 primary key를 가지며, fact 테이블의 foreign key에 차조
    보통 dimensiuon 테이블의 크기는 훨씬 더 작음

그래서 spectrum을 언제 사용할까

s3에 대용량 fact 테이블이 존재
redshift에는 소규모 dimension 테이블이 존재
fact 테이블을 redshift로 적재하지 않고 위의 두 테이블을 조인하고 싶다면
-> 이 때 사용하는 것이 redshift spectrum

외부테이블 (external table)

데이터 베이스 엔진이 외부에 저장된 데이터를 마치 내부 테이블처럼 사용하는 방법
외부 테이블은 외부에 저장된 대량의 데이터를 데이터베이스 내부로 복사하고 쓰는 것이 아니라 임시 목적으로 사용하는 방식

sql 명령어로 데이터 베이스에 외부 테이블 생성 가능
이 경우 데이터를 새로 만드는 것이 아니라 참조만
외부 테이블은 다양한 형식을 지원하기에 원격 데이터베이스와 같은 다양한 데이터 소스에 대해 사용 가능
외부 테이블을 사용하여 데이터 처리후 결과를 데이터베이스에 적재하는데 사용가능
외부 테이블은 보안 및 성능 문제에 대해 신중한 고려가 필요
이는 hive등에서 처음 시작한 개념 이제는 대부분 빅데이터 시스템에서 사용됨

s3 내의 데이터가 외부 테이블이라 생각하면됨
스펙트럼을 사용하려면 awsflueconsolefullaccess 권한 지정이 필요

AWS Glue == airflow

ETL 서비스로 아래와 같은 기능 제공
aws에 맞춰진 서비스이므로 외부에서는 사용하기 힘듬

데이터 카탈로그

  • aws glue data catalog는 데이터 소스 및 대상의 메타데이터를 대상으로 검색 기능을 제공. 이는 주로 s3나 다른 aws 서비스 상의 데이터 소스를 대상으로 함

ETL

  • 작업 생성 : aws glue studio

간단한 드래그 앤 드롭 인터페이스를 통해 etl 작업 생성 가능
사용자는 데이터 소스 및 대상을 선택하고 데이터 변환 단계를 정의하는 스크립트 생성

작업 모니터링 로그

  • 콘솔을 통해 실행 상태 및 로그를 모니터링 가능

서버리스 실행

  • 서버리스 아키텍쳐를 제공하므로, 사용자는 인프라를 관리할 필요가 없음.

SageMaker

머신러닝 모델 개발을 처음부터 끝까지 해결해주는 aws tjqltm
mlops vmfpdla dnjr
크게 4가지 기능 제공

  • 트레이닝 셋 준비
  • 모델 훈련
  • 모델 검증
  • 모델 배포와 관리
  • api 엔드포인트, 배치 서빙

autopilot

autoML 기능
모델 빌딩을 위한 훈련용 데이터 셋을 제공하면 자동으로 모델을 만들어주는 기능
훈련용 데이터 분석으로 파이썬 노트북을 만들어주고
다수의 머신러닝 알고리즘 하이퍼 파라미터의 조합에 대해 아래 작업을 수행
머신러닝 모델을 만들고 훈련하고 테스트하고 테스트 결과를 기록

전체적인 절차를 살펴보자.
1. 캐글 에서 데이터 다운
2. 데이터를 s3에 저장
3. 위의 데이터를 redshift에 copy
4. i am role을 통해서 생성 후 지정 -> sagemaker가 redshift에 접근
5. create model 명령 사용

  • 모델 생성하고 모델 사용시 호출할 sql 함수도 생성
    이때 비용 발생
  1. model sql함수를 사용해서 테이블상ㄹ 레코드들을 대상으로 예측 수행

sql vacuum

테이블 데이터 정렬

  • 불규칙하게 분산되어 저장될 수 잇는 데이터를 정렬하여 남아있는 행을 모아 쿼리 실행 시 검색해야할 블록수를 줄이는 작업 수행

디스크 공간 해제
삭제된 행에서 공간 회수
테이블 통계 업데이트
큰 테이블에 대한 vacuum 명령은 리소스를 많이 잡아 먹음

profile
군도리

0개의 댓글