일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 데이터 시각화
- cloud platform
- 코딩테스트
- Snowflake
- beuatifulsoup
- Kafka
- 코테 연습
- Spark
- 팀 프로젝트
- Selenium
- SQL
- VPC
- Tableau
- django
- 슈퍼셋
- HTML
- airflow
- 데브코스
- 코딩 테스트
- PCCP
- AWS
- superset
- GCP
- Til
- 데이터 엔지니어
- Today
- Total
주니어 데이터 엔지니어 우솨's 개발일지
데이터 엔지니어링 33일차 TIL 본문
학습 내용
사용자별 테이블 권한 설정
: 역할(Role) 혹은 그룹(Group) 별로 스키마별로 접근 권한을 주는 것이 일반적이다.
- RBAC(Role Based Access Control)가 새로운 트렌드 : 여러 역할에 속한 사용자의 경우 각 역할의 권한을 모두 갖게됨(Inclusive)
- 개인정보와 관련된 테이블들이라면 별도 스키마 설정 : 극히 일부만 지급
EX)
1. 스키마 엑세스 권한 주기 :
GRANT ALL ON SCHEMA analytics TO GROUP analytics_authors;
2. 모든 권한 주기 :
GRANT ALL ON ALL TABLES IN SCHEMA analytics TO GROUP analytics_authors;
1. 읽기 권한 줄땐 USAGE를 사용한다.
GRANT USAGE ON SCHEMA raw_data TO GROUP analytics_authors;
2. 읽기 권한만 :
GRANT SELECT ON ALL TABLES IN SCHEMA raw_data TO GROUP analytics_authors;
컬럼 레벨 보안(Column Level Security)
: 테이블내의 특정 컬럼을 특정 사용자나 특정 그룹/역할에만 접근 가능하게 하는 것
- 보통 개인정보 등에 해당하는 컬럼을 권한이 없는 사용자들에게 감추는 목적으로 사용됨
레코드 레벨 보안(Row Level Security)
: 테이블 내의 특정 레크드를 특정 사용자나 특정 그룹/역할에만 접근 가능하게 하는 것
- 특정 사용자/그룹의 특정 테이블 대상 SELECT, UPDATE, DELETE작업에 추가조건을 다는 형태로 동작
- RLS(Record Level Security) policy라고 부름
- CREATE RLS POLICY 명령을 사용하여 policy를 만들고 이를 ATTACH RLS POLICY 명령을 사용해 특정 테이블에 추가한다
Redshift 백업 방식(Snapshot)
: 기본적으로 마지막 백업으로부터 바뀐 것들만 저장하는 방식
- 백업을 통해 과거로 돌아가 그 시점의 내용으로 특정 테이블을 복구하는 것이 가능(Table Restore)
- 과거 시점의 내용으로 RedShift클러스터를 새로 생성하는 것도 가능하다
자동백업
- 기본 하루, 최대 35일까지의 변경을 같은 지역에 있는 S3에 백업가능
- 다른 지역에 있는 S3에 하려면 Cross-regional snapshot copy를 설정해야한다 : 보통 재난시 데이터 복구에 유용
- 매뉴얼 백업 : 언제든 원할 때 만드는 백업으로 명시적으로 삭제할 때까지 유지됨(혹은 생성시 보존 기한 지정)
Redshift Serverless의 백업방식(Recovery Points)
: 고정비용 Redshift에 비하면 제한적이고 조금 더 복잡하다
- Snapshot 이전에 Recovery Points로부터 Snapshot으로 바꾼 다음에 여기서 테이블 복구를 하거나 이것으로 새로운 Redshift클러스터를 생성하는 것이 가능하다
- Recovery Points는 과거 24시간에 대해서만 유지된다.
사용법 : namespace - data backup 탭에서 Recovery points를 가지고 스냅샷을 생성
Redshift Spectrum
: Redshift의 확장기능으로 S3에 있는 파일들을 마치 테이블처럼 SQL로 처리가 가능하다.
- S3 파일들을 외부 파일들로 처리하면서 Redshift 테이블과 조인가능
- S3 외부 테이블들은 보통 Fact테이블이 되고 Redshift테이블들은 Dimension테이블이다
- 1TB를 스캔할때마다 $5 비용이 생김
- Redshift클러스터가 필요하며 S3와 같은 region에 있어야한다.
Athena
: AWS의 Presto 서비스로 사실상 Redshift Spectrum과 비슷한 기능을 제공한다.
Redshift ML
: SQL만 사용하여 머신러닝 모델을 훈련하고 사용할 수 있게 해주는 Redshift기능
- 이 기능은 AWS SageMaker에 의해 지원된다.
- 이미 모델이 만들어져 있다면 이를 사용하는 것도 가능하다
Fact테이블
: 분석의 초점이 되는 양적 정보를 포함하는 중앙테이블(Dimension 테이블보다 훨씬 더 크다)
- 일반적으로 매출 수익, 판매량, 이익 등 측정 항목
- 외래 키를 통해 여러 Dimension 테이블과 연결된다
Dimension테이블
: Fact테이블에 대한 상세정보를 제공하는 테이블
- 고객, 제품과 같은 테이블
- Fact테이블의 데이터에 대한 맥락을 제공
- 일반적으로 Primary key를 가지며, Fact테이블의 foreign key에서 참조한다
외부 테이블(External Table)이란?
: 데이터베이스 엔진이 외부에 저장된 데이터를 마치 내부 테이블처럼 사용하는 방법
- 외부에 저장된 대량의 데이터를 임시 목적으로 사용하는 방식
- SQL 명령어로 데이터베이스에 외부 테이블 생성 가능
- 참조만 가능하다
- 보안 및 성능 문제에 대해 신중한 고려가 필요하다
외부 테이블용 스키마 설정(Redshift Spectrum)
(AWSGlueConsoleFullAccess권한 설정이 필요 !)
CREATE EXTERNAL SCHEMA external_schema
from data catalog
database 'myspectrum_db'
iam_role 'arn:aws:iam::521227329883: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://keeyong-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 gender,
(CAST(random() * 50 as int)+18) age
FROM (
SELECT DISTINCT userid
FROM raw_data.user_session_channel
);
머신러닝
: 배움이 가능한 기계 개발
- 결국 데이터의 패턴을 보고 흉내내는 방식으로 학습
- 인공지능은 머신러닝을 포괄하는 개념
Amazon SageMaker
: 머신러닝 모델개발을 처음부터 끝까지 해결해주는 AWS서비스
- AutoPilot : SageMaker에서 제공되는 AutoML 기능
- AutoML : 모델 빌딩을 위한 훈련용 데이터 셋을 제공하면 자동으로 모델을 만드어주는 기능
느낀 점
S3에서 외부 테이블을 불러오는게 상당히 흥미로웠다.
테이블의 구조를 더 면밀히 알 수 있었고, 역할과 그룹별로 권한을 줄 때 관련 권한에 따라 명령어가 조금씩 다른 것을 알 수 있었다.
AWS 안에서 머신러닝을 할 수 있다는것도 굉장히 신기했다.
'데브코스' 카테고리의 다른 글
데이터 엔지니어링 35일차 TIL (0) | 2024.06.05 |
---|---|
데이터 엔지니어링 34일차 TIL (0) | 2024.05.09 |
데이터 엔지니어링 32일차 TIL (0) | 2024.05.09 |
데이터 엔지니어링 31일차 TIL (0) | 2024.05.09 |
데이터 엔지니어링 30일차 TIL (0) | 2024.05.09 |