상세 컨텐츠

본문 제목

데이터 엔지니어링 스타터 키트 - 2주차

Data Platform/데이터 엔지니어링

by leediz 2022. 4. 30. 08:11

본문

데이터 엔지니어링 스타터 키트 - 2주차

2주차에서는 지난주 가벼운 숙제였던 퀴즈에 대해 맥스님이 리뷰를 해주시며 정답해설을 해주는 시간 및 다른 분들이 하신 질문에 대해 답변하는 시간으로 시작했다. 이후 데이터 엔지니어의 일주일에 대해 간략하게 소개하는 시간과 Cloud와 AWS에 대한 간단한 소개, 실제로 실습할때 사용할 Redshift에 대해 소개하는 순서로 진행되었다. 이번 포스팅에서는 개인적으로 처음 접해보는 Redshift에 대해 간략하게 정리해보겠다.


Data Warehouse

  • 데이터 분석을 위해 구축된 운영용 데이터베이스와는 별도의 데이터베이스
  • Production DB의 경우 속도가 중요한 대신 저장 공간에 제약이 있는 반면(OLTP), DW의 경우 내부 직원들이 사용하는 것이기 때문에 속도 대신 처리량이 높아야 함(OLAP)
  • DW 구축은 데이터 조직에서 가장 먼저 해야 할 일

 

Redshift

  • AWS에서 SaaS형태로 제공하는 페타바이트급 데이터 웨어하우스 서비스
  • 고정 비용형태로 과금
    • 쿼리 실행시마다 과금을 하는 구조가 아닌, 처음 구축한 스펙에 따라 시간 베이스로 과금을 하는 구조
  • Columnar stroage
    • 레코드를 저장할 때 컬럼 단위로 나눠서 저장
    • 컬럼별로 압축할 수 있고, 컬럼을 추가하고 붙이는 것이 상대적으로 빠름

출처 :  https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/c_columnar_storage_disk_mem_mgmnt.html

 

  • Primary Key의 유일성을 보장하지 않음
    • Unique를 보장하는 순간 내부적으로 처리해야 하는 과정이 있다보니 Bulk update 시에는 속도가 많이 느려질 수 있음
  • Postgresql 8.X 버전과 호환이 가능(완전히는 아님) - Postgresql 8.X에 접근 가능한 툴로 Redshift 접근 가능



Redshift 사용 시 주의 사항

  • Redshift를 클러스터링을 했을 때, 테이블이 여러 노드에 나누어 저장이 될 경우 데이터가 균등하게 저장되지 않을 수 있음 - skew가 생길 수 있음

출처 :  https://dwgeek.com/redshift-table-data-skew-avoid.html/

  • 이론적으로는 사용자가 내부 저장구조를 신경쓰지 않으며 데이터베이스를 사용해야 하지만, 마치 Kafka에서 Key를 지정하여 파티셔닝을 할 때 skew가 생기듯 Redshift도 마찬가지로 Key 기반으로 skew가 생길 수 있으므로 클러스터링을 할 때에는 이 점을 주의해야 하여 설계해야 할것 같다.

 

타 AWS 서비스들과의 호환

  • 기본적으로 S3, EMR, Kinesis, DynamoDB, RDS 등 다른 AWS들과 통합하여 사용하기에 용이함
  • Redshift의 Backup 저장소로 S3를 사용할 수 있음 - Snapshot과 같은 형식으로 사용

 

Redshift에 접근하는 방법

  • BI Tool 또는 분석 Tool을 사용하여 접근
    • Tableau, Looker, Superset 등 사용하여 접근
  • JDBC/ODBC Library 사용하여 접근
    • PostgreSQL 8.X 와 호환이 가능한 라이브러리를 사용
    • Python의 경우 psycopg2를 선호
  • SQL Clients
    • Postico (MAC)
    • SQL Workbench
    • DBeaver
    • DataGrip
  • Python Notebook



Colab에서 Redshift 접근 방법

%load_ext sql
%sql postgresql://{{user}}:{{password}}@{{ip or dns}}:{{port}}/{{database_name}}



2주차 소감

지난 주에는 데이터 조직과 관련된 이야기가 주로 진행 되었고, 이번 주부터 본격적으로 데이터 엔지니어 실전 트레이닝이 시작되는 느낌이다. 이번 주부터 과제도 부여가 되었다. 총 2개의 과제로 가상의 데이터 인프라를 구축해보는 과제와 미리 준비해주신 Redhisft의 Table을 토대로 SQL이나 Python을 사용해 MAU를 계산해보는 과제였다. 워낙 Demo를 잘 만들어 주셔서 따라하다 보면 내용에 대해 잘 이해할 수 있었고 그 덕분에 어렵지 않게 과제를 할 수 있었다.

 

참고자료

관련글 더보기

댓글 영역