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

박단이·2023년 12월 4일
0

데브코스 TIL

목록 보기
31/56

오늘 배운 것🤓

Redshift Spectrum

  • Redshift의 확장 기능 (별도의 설치 X)
  • S3에 있는 데이터와 파일들을 SQL을 이용하여 Redshift에서 외부 테이블(External Table)로 처리하면서 redshift의 테이블과 조인 가능하다.
  • S3와 redshift는 같은 region에 있어야 한다.
  • S3의 데이터를 redshift로 그대로 옮기기엔 비용/시간 측면에서 불필요할 때, 필요할 때마다 external table로 처리해서 reshift로 적재할 때 사용한다.
  • external table을 Fact table, redshift table을 Dimension 테이블 이라고 볼 수 있다.
    • Fact 테이블 : 분석에 초점이 되는 양적 정보를 포함하는 중앙 테이블로, 매출 수익, 판매량, 이익과 같은 정보를 담고 있다. 보통 dimension 테이블보다 크기가 크다.
    • Dimension 테이블 : Fact 테이블에 대한 상세 정보를 담고 있다. 고객/제품의 정보와 같은 데이터를 말하며 일반적으로 Fact 테이블보다 크기가 작다. dimenstion 테이블의 PK는 fact 테이블의 FK를 참조한다.

External Table

  • 모든 DW에서 사용하는 개념
  • 외부의 데이터를 굳이 시스템 안으로 불러오지 않고 잠시 읽고 쓰고 싶을 때 사용한다.
  • DB엔진이 외부에 저장된 데이터(보통 S3와 같은 클라우드 서비스)를 마치 내부 데이터처럼 사용한다.
  • SQL 명령어로 DB에 생성 가능 CREATE EXTERNAL TABLE
  • 다양한 데이터 포맷을 지원하며 RDB의 외부 DB와도 액세스 가능
  • 읽기 전용으로 mapping하기 때문에 외부 데이터가 삭제되지 않는다.

Spectrum 사용 순서

  1. redshift.read.S3 역할에 'AWSGlueConsoleFullAccess' 권한 지정
  2. redshift에 외부 테이블용 schema를 만든다.
CREATE EXTERNAL SCHEMA external_schema_name
FROM data catalog
database 'db_name'	-- 외부 스키마를 저장할 db 이름
iam_role 'arn 값'
CREATE EXTERNAL DATABASE IF NOT EXISTS;

AWS Glue란?

  • AWS의 serverless ETL 서비스
  • AWS 바깥에서는 사용 X
  • 데이터 카탈로그, ETL 작업 생성, 작업 모니터링 및 로그 등의 기능을 가지고 있다.
  1. 외부 Fact 테이블을 정의한다.
CREATE EXTERNAL TABLE external_schema_name.table_name (
   column type, ...
)
ROW FORMAT DELIMITED	-- 한 줄에 한 레코드
FIELDS TERMINATED BY ','	-- CSV 파일
STORED AS TEXTFILE		-- 외부 데이터가 파일일 경우
LACATION '외부 데이터 경로'	-- 이 위치에 있는 모든 파일을 불러옴.
							-- 만약 하나라도 format이 다르다면 에러!

Athena

  • Apache Presto를 AWS에서 서비스하는 것
  • Redshift Spectrum과 비슷한 기능을 제공한다.
  • S3에 있는 데이터를 기반으로 SQL 쿼리 기능을 제공한다.
  • Redshift Spectrume은 Redshift의 확장 기능이기 때문에 Redshift 내에서만 사용이 가능하지만 Athena는 여러 DW에서 사용할 수 있다.

Redshift ML

  • AWS SageMaker에서 ML 모델을 개발하여 Redshift에서 사용할 수 있는 기능을 말한다.
  • SageMaker을 Redshift에서 실행하면 SageMaker에서 과금이 발생한다. 다 만들고 나면 남은 리소스를 꼭 삭제하자!
  • SQL에서 ML 모델을 빌드하고 사용하는 usecase가 증가하고 있다. 이를 통해 비개발자가 간단하게 모델을 만들고 사용할 수 있다.

AWS SageMaker

  • ML 개발을 처음부터 끝까지 제공해주는 AWS 서비스
  • 즉, MLOps 프레임 워크
  • Training set 준비, 모델 훈련, 모델 평가, 모델 배포까지 다 해주는 서비스
  • Tensorflow/Keras, PyTorch 등 다양한 프레임워크를 지원한다.

Redshift ML 사용 순서

  1. 데이터를 S3에 넣기
  2. Redshift로 COPY (벌크 업데이트)
  3. IAM Role 생성 후 지정
    • AmazonSageMakerFullAccess
    • AmazonS3FullAccess
  4. CREATE MODEL 명령어로 모델과 호출할 SQL 함수 생성
CREATE MODEL model_name
FROM (
   모델에 사용할 table 또는 SELECT)
TARGET target_column
FUNCTION 만들어지는_모델_이름
IAM_ROLE '3번_역할_이름'
SETTINGS (
   S3_BUCKET '모델생성로그_저장할_S3'	-- 해당 S3에 저장할 때, 내가 만든 역할의 이름과 동일한 폴더를 생성하여 저장
);

-- 모델이 준비됐는지 확인하는 SQL
SHOW MODEL model_name;
  1. Model SQL 함수를 사용해서 테이블의 레코드를 대상으로 예측
SELECT true_column, model_name(모델에 사용하는 인자)
FROM table_name;
  1. SageMaker와 관련한 리소스 제거
    1. DROP MODEL model_name
    2. 웹 콘솔에서 리소스 삭제
    3. S3에서 생성된 로그 폴더 삭제

Snowflake

  • 글로벌 cloud 위에서 모두 동작하는 멀티 클라우드 형태의 데이터 웨어하우스
  • 데이터 판매를 통한 매출을 가능하게 해주는 Data Sharing(Share, Don't move)/Market place 제공
  • ETL과 다양한 데이터 통합 기능을 제공
  • 모든 데이터 웨어하우스에서 제공하는 기능들을 대부분 제공
  • 기본적으로 Cloud Service(AWS, Azure, GCP, 등) 위에서 Query Processing Layer가 도는 형태
  • 계정 순서도 : Organization -> Accounts -> Databases
    • Organization : 하나 혹은 그 이상의 Account들로 구성되고, 큰 회사의 경우 사용한다.
    • Account : 하나의 Account는 자체 사용자, 데이터, 접근 권한을 독립적으로 가지며, 작은 회사의 경우 Account만으로도 충분하다.
    • Database : 하나의 DB는 PB 단위까지 스케일이 가능하고, 독립적인 컴퓨팅 리소스를 갖는다.(여기서 말하는 컴퓨팅 리소스가 Data Warehouse고, storage와는 별개이다.)
  • 데이터 타입으로 VARIANT(JSON, OBJECT), ARRAY를 지원하면서, nested structure에 대해 유연한 모습을 보이며 다른 DW보다 강력한 기능이다.
  • 사용자 그룹으로 Group은 없고 Role만 있다.

Data Governance 관련 기능

  • 데이터 품질을 향상시키고, 불필요한 데이터를 관리하고, 불법적인 데이터를 거르기 위한 데이터 관리 프로세스
  • 데이터 기반 결정에서의 일관성을 유지하고 데이터를 이용한 가치를 만들고 데이터 관련 법규를 준수하기 위해 사용한다.
  • 모두 Enterprise 에서만 사용이 가능하다.
  1. Object Tagging
    • 각 객체에 Tag를 설정하여 데이터를 관리한다.
    • 개인 정보 관리가 주요 용도 중 하나
    • CREATE TAG로 생성
  2. Data Classification
    • snowflake에서 자체적으로 분류해준다.
    • Analyze -> Review -> Apply 과정을 거친다.
  3. Tag based Masking Policies
    • Tag에 따라서 access 권한을 다르게 준다.
  4. Access History
    • 사용자의 접근 log를 column 기준으로 기록한다.
    • 이는 보안 이슈가 생겼을 때 조사를 위해 사용한다.
  5. Object Dependencies
    • ELT를 통해 새로운 table이 만들어질 때 사용한 column의 tag와 속성이 따라가는 기능
    • 시스템 무결성 유지를 목적으로 한다.
    • 다른 DW에서는 이를 설정하려면 꽤나 까다롭지만 snowflake에서는 기본으로 제공한다.

느낀 점😊

SnowFlake와 Redshift 사이에 차이점에 대해 학습할 수 있어서 오늘 학습하는 동안 재미있었다. 최종 프로젝트를 하면서 DW는 어떤 것을 사용할 지 고민을 많이 하게 되는 것 같다.

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

0개의 댓글