데브코스 TIL/AWS 클라우드

Redshift 고급 기능

예니ㅣ 2023. 11. 29. 11:48

강의

Redshift 권한과 보안

  • 사용자별 혹은 테이블별 권한 설정 하지 않음
  • 스키마별 , 그룹별 혹은 역할별 접근 권한 설정
  • RBAC(Role Based Access Control) : 한 사용자가 다수의 역할에 포함(Inclusive)
  • 개인정보와 관련된 테이블은 별도 스키마 설정

 

액세스 권한 부여

스키마, 그룹 혹은 역할에 읽기 및 쓰기 권한을 부여할 수 있습니다.

# analytics_users
GRANT USAGE ON SCHEMA analytics TO GROUP analytics_users;
GRANT ALL ON ALL TABLES IN SCHEMA analytics TO GROUP analytics_users;

GRANT ALL ON SCHEMA adhoc TO GROUP analytics_users;
GRANT ALL ON ALL TABLES IN SCHEMA adhoc TO GROUP analytics_users;

GRANT USAGE ON SCHEMA raw_data TO GROUP analytics_users;
GRANT SELECT ON ALL TABLES IN SCHEMA raw_data TO GROUP analytics_users;

# analytics_authors
GRANT ALL ON SCHEMA analytics TO GROUP analytics_authors;
GRANT ALL ON ALL TABLES IN SCHEMA analytics TO GROUP analytics_authors;

GRANT ALL ON SCHEMA adhoc TO GROUP analytics_authors;
GRANT ALL ON ALL TABLES IN SCHEMA adhoc TO GROUP analytics_authors;

GRANT ALL ON SCHEMA raw_data TO GROUP analytics_authors;
GRANT ALL ON ALL TABLES IN SCHEMA raw_data TO GROUP analytics_authors;

# pii_users
GRANT USAGE ON SCHEMA pii TO GROUP pii_users;
GRANT SELECT ON ALL TABLES IN SCHEMA pii TO GROUP pii_users;

 

컬럼 레벨 보안

"컬럼 레벨 보안"은 테이블내의 특정 컬럼에 대해 특정 사용자나 특정 그룹/역할만 접근 가능하게 하는 것입니다.

개인정보와 같은 컬럼을 권한이 없는 사용자들에게 감추는 목적으로 사용합니다.

하지만 가장 좋은 보안 방법은 별도 테이블로 구성하거나 데이터 시스템에서 로딩하지 않는 것입니다.

 

레코드 레벨 보안

"레코드 레벨 보안"은 테이블내의 특정 레코드에 대해 특정 사용자나 특정 그룹/역할만 접근 가능하게 하는 것입니다.

"RLS(Record Level Security) Policy"는 특정 사용자나 특정 그룹/역할의 특정 테이블 대상 작업에 추가 조건을 다는 형태로 동작합니다.

  • CREATE RLS POLICY
  • ATTACH RLS POLICY

하지만 가장 좋은 보안 방법은 별도 테이블로 구성하거나 데이터 시스템에서 로딩하지 않는 것입니다.

 


백업과 테이블 복구

"Snapshot"은 마지막 백업으로부터 바뀐 것들만 저장하는 백업 방식 입니다.

백업을 통해 특정 테이블을 과거 시점으로 복구할 수 있습니다. (Table Restore)

고정 비용 Redshift 백업 방식

  • 자동 백업
    • 최소 하루에서 최대 35일까지의 변경을 백업
    • 같은 지역의 S3에 백업
    • 다른 지역의 S3에 백업하려면 Cross-regional snapshot copy 설정 필요 → 재난 상황에 유용
  • 매뉴얼 백업
    • 원할 때 백업 생성
    • 명시적으로 삭제할 때까지 유지 혹은 생성시 보존 기한 지정

 

가변 비용 Redshift 백업 방식

"Recovery Points"는 과거 24시간에 대해 유지됩니다.

Recovery Points를 Snapshot으로 바꾼 후에 테이블을 복구하거나 새로운 Redshift 클러스터를 생성할 수 있습니다.

 


Redshift 기타 서비스 소개

Redshift Spectrum

"Redshift Spectrum"는 S3에 있는 파일을 테이블처럼 SQL로 처리할 수  있도록 하는 Redshift의 확장 기능 입니다.

Redshift 클러스터가 있는 경우 추가 비용을 지불하여 사용할 수 있습니다.

S3 외부 테이블을 Fact 테이블, Redshift 테이블을 Dimension 테이블이라고 합니다.

  • Fact 테이블
    • 분석의 초점이 되는 양적 정보를 포함
    • foreign key
    • 크기가 매우 큼
  • Dimension 테이블
    • Fact 테이블에 대한 상세 정보를 제공
    • 데이터 분할 및 분석 가능하도록 정보 제공
    • primary key
CREATE EXTERNAL SCHEMA external_schema
FROM data catalog
database 'myspectrum_db'
iam_role 'arn:aws:iam::******:role/redshift.read.s3'
CREATE external database IF NOT exists;
# 외부 Fact 테이블 정의
CREATE EXTERNAL TABLE external_schema.user_session_channel(
	userid integer,
    sessionid varchar(32),
    channel varchar(32)
)
row format delimited
fields terminated by ','
stored as textfile
location 's3;//yeeen-test-bucket/usc/';
# 내부 Dimension 테이블
CREATE TABLE raw_data.user_property AS
SELECT
	userid,
    CASE WHEN CAST(random()*2 as int) = 0 THEN 'male' ELSE 'female' END AS gender,
    (CAST(random()*50 as int)+18) AS age
FROM (
	SELECT DISTINCT userid
    FROM raw_data.user_session_channel
);
# Fact + Dimension 테이블 JOIN
SELECT gender, COUNT(1)
FROM external_schema.user_session_channel AS usc
JOIN raw_data.user_property AS up
	ON usc.userid = up.userid
GROUP BY 1;

 

Redshift Serverless

"Redshift Serverless"는 가변 비용 모델 입니다.

데이터 처리 크기와 특성에 따라 오토 스케일링이 적용됩니다.

 

Athena

"Athena"는 Redshift Spectrum과 비슷한 AWS의 Presto 서비스 입니다.

S3에 있는 데이터를 기반으로 SQL 쿼리 기능을 제공합니다.

 

Redshift ML

"Redshift ML"는 SQL만 사용하여 머신러닝 모델을 훈련하고 사용할 수 있는 Redshift 기능 입니다.

최적화된 모델을 자동 생성해주는 AWS SageMaker에 의해 지원됩니다.

이미 생성된 모델을 사용하는 것도 가능합니다. (BYOM; Bring Your Own Model)

  1. COPY : 데이터 로딩
  2. SageMaker 사용권한을 Redshift cluster에 지정
  3. CREATE MODEL
  4. 예측 수행
# 데이터 로딩
CREATE TABLE raw_data.orange_telecom_customers(
  state varchar,
  account_length integer,
  area_code integer,
  international_plan varchar,
  ...
  customer_service_calls integer,
  churn varchar,
  purpose varchar
)

COPY raw_data.orange_telecom_customers
FROM 's3://yeeen-test-bucket/redshift_ml/train.csv'
credentials 'aws_iam_role=arn:aws:iam::*********:role/redshift.read.s3'
delimiter ',' dateformat 'auto' timeformat 'auto' IGNOREHEADER 1
removequotes;
# ML 모델 생성
CREATE MODEL orange_telecom_customers_model
FROM (
  SELECT 
    state, account_length, ..., customer_service_calls, churn
  FROM raw_data.orange_telecom_customers
  WHERE purpose = 'Train'
)
TARGET churn
FUNCTION ml_fn_orange_telecom_customers
IAM_ROLE 'arn:aws:iam::*********:role/redshift.read.s3'
SETTINGS (
  S3_BUCKET 'yeeen-test-bucket'
);
# 모델 확인
SHOW MODEL orange_telecom_customers_model;
# 예측 수행
SELECT churn,
  ml_fn_orange_telecom_customers(
    state, account_length, area_code, international_plan, voice_mail_plan,
    number_vmail_messages, total_day_minutes, total_day_calls,
    total_day_charge, total_night_calls, total_night_charge,
    total_intl_minutes, total_intl_calls, total_intl_charge,
    customer_service_calls
  ) AS "prediction"
FROM raw_data.orange_telecom_customers
WHERE purpose = 'Test';

 


Redshift 중단/제거

"Maintenance window"는 Redshift 서비스를 주기적으로 버전 업그레이드르 위해 중단하는 것을 말합니다.

"VACUUM"을 이용하여 테이블을 청소 및 최적화할 수 있습니다.

VACUUM 기능

  • 테이블 데이터 정렬
  • 디스크 공간 해제
  • 삭제된 행에서 공간 회수
  • 테이블 통계 업데이트

 

고정 비용 Redshift 처리

  • 중지 : Stop 혹은 Pause
  • 재실행 : Resume
  • 삭제 : Delete

 

가변 비용 Redshift 처리

  1. Workgroup 삭제
  2. Namespace 삭제

 


외부 테이블

"외부 테이블"(External Table)은 데이터베이스 엔진이 외부에 저장된 데이터를 내부 테이블처럼 사용하는 방법 입니다.

  • SQL 명령어로 데이터베이스에 외부 테이블 생성 가능
  • 데이터 생성이 아닌 참조
  • 외부 테이블을 사용하여 데이터 처리 후 데이터베이스에 적재 가능
  • 보안 및 성능 문제 고려 필요
  • 빅데이터 시스템에서 사용

'데브코스 TIL > AWS 클라우드' 카테고리의 다른 글

AWS SageMaker  (1) 2023.11.29
AWS Glue  (1) 2023.11.29
Redshift 소개  (0) 2023.11.28
AWS Part 13 Devops  (0) 2023.11.24
AWS Part 12 CloudWatch  (0) 2023.11.24