[TIL] 데이터 웨어하우스와 SQL 기본에 대해 배우고 이를 바탕으로 데이터 분석에 대해 학습 (1)

이원진·2023년 5월 8일
0

데브코스

목록 보기
21/54
post-thumbnail

학습내용


  1. SQL의 중요성

  2. 배움이란?

  3. 관계형 데이터베이스란?

  4. SQL이란?

  5. 데이터 웨어하우스란?

  6. Cloud와 AWS 소개

  7. Redshift 소개

1. SQL의 중요성


  • 구조화된 데이터를 다루는 한, 데이터의 규모와 상관없이 쓰임

  • SQL 없이는 데이터 관련 업무를 할 수 없음

    • 데이터 엔지니어, 분석가, 과학자 모두 SQL 사용

2. 배움이란?


  • 정체기가 오는 것은 자연스러운 현상이며, 이를 잘 대응하는 것이 중요함

  • 내가 뭘 모르는지, 어디서 막혔는지 구체적으로 파악해야 함

  • 잘 하는 사람 보고 기죽지 않기


3. 관계형 데이터베이스란?


  • 구조화된 데이터를 저장하고 질의할 수 있도록 해주는 스토리지

    • 열(컬럼)과 행(레코드)로 이루어진 테이블의 형태로 데이터를 정의하고 저장

  • 대표적인 관계형 데이터베이스

    • 프로덕션 데이터베이스(= OLTP: OnLine Transaction Processing)

      • 빠른 속도에 집중, 서비스에 필요한 정보 저장

      • ex) MySQL, PostgreSQL, Oracle, ...

    • 데이터 웨어하우스(= OLAP: OnLine Analytical Processing)

      • 처리 데이터 크기에 집중, 데이터 분석 혹은 모델 빌딩 등을 위해 데이터 저장

      • 보통 프로덕션 데이터베이스를 복사해서 데이터 웨어하우스에 저장

      • ex) Redshift, Snowflake, BigQuery, Hive, ...

  • 관계형 데이터베이스의 구조

    • 관계형 데이터베이스는 데이터베이스(= 스키마)라는 폴더 밑에 테이블들이 존재하는 구조

    • 테이블의 구조(= 테이블 스키마)

      • 테이블은 레코드(행)들로 구성

      • 레코드는 하나 이상의 필드(컬럼 = 열)로 구성

      • 필드는 이름과 타입과 속성(primary key)으로 구성


4. SQL이란?


  • SQL: Structured Query Language

  • 관계형 데이터베이스의 데이터를 질의하거나 조작하는데 사용되는 언어

    • DDL(Data Definition Language): 테이블의 구조를 정의하는 언어

    • DML(Data Manipulation Language): 테이블에서 원하는 레코드를 읽어오는 질의 언어

      • 테이블에 레코드를 추가/삭제/갱신하는데 사용하는 언어

  • 단점

    • 비구조화된 데이터를 다루기 어려움

      • Spark, Hadoop 같은 분산 컴퓨팅 환경이 필요

    • 관계형 데이터베이스마다 SQL 문법이 조금씩 상이

  • 데이터 모델링 기법

    • Star schema

      • 일반적으로 프로덕션 데이터베이스에서 사용

      • 데이터를 논리적 단위로 나눠 저장하고 필요시 조인

        • 스토리지 낭비가 덜하고, 업데이트가 쉬움

    • Denormalized schema

      • 데이터 웨어하우스에서 사용

      • 단위 테이블로 나누지 않고 하나의 테이블에 저장

        • 스토리지는 더 사용하지만, 조인이 필요 없기에 빠른 계산 가능

5. 데이터 웨어하우스란?


  • 고객이 아닌 내부 직원(데이터 팀)을 위한 데이터베이스

    • 프로덕션 데이터베이스와는 별도

    • 처리 속도가 아닌, 처리 데이터의 크기가 더 중요

  • AWS의 Redshift, Google Cloud의 Big Query, Snowflake 등이 대표적

  • ETL 혹은 데이터 파이프라인

    • 외부에 존재하는 데이터를 읽어 데이터 웨어하우스로 저장하는 프로그램

  • 데이터 인프라

    • 데이터 웨어하우스 + ETL

    • Spark와 같은 분산 처리 시스템을 추가해 확장 가능

    • 데이터 엔지니어가 관리


6. Cloud와 AWS 소개


  • 클라우드의 정의

    • 컴퓨팅 자원(HW, SW)을 네트워크를 통해 서비스 형태로 사용하는 것

    • 자원을 필요한 만큼 실시간으로 할당해 사용한 만큼 사용

      • 탄력적으로 필요한 만큼의 자원을 유지하는 것이 중요

  • 클라우드 컴퓨팅의 장점

    • 초기 투자 비용이 크게 줄어듦(유지 비용은 증가)

      • CAPEX(CAPital EXpenditure) vs OPEX(OPerating EXpense)

    • 리소스 준비를 위한 대기시간 대폭 감소

    • 노는 리소스 제거로 비용 감소

    • 글로벌 확장 용이

    • 소프트웨어 개발 시간 단축

      • Managed Service(SaaS) 사용

  • AWS 서비스

    • EC2

      • AWS의 서버 호스팅 서비스

      • 가상 서버이기 때문에 전용 서버에 비해 성능은 떨어짐

      • 다양한 종류의 서버 타입 제공

    • S3: Simple Storage Service

      • AWS의 대용량 클라우드 스토리지 서비스

      • 계층적 구조로 데이터 저장, 관리

      • 버킷이나 파일 별로 액세스 컨트롤 가능

    • 기타 DB 서비스: RDS, DynamoDB, Redshift, ...

    • 기타 AI & ML 서비스: SageMaker, Lex, Polly, Rekognition

    • 기타 중요 서비스: Amazon Alexa, Amazon Connect, Lambda


7. Redshift 소개


  • 2PB 까지 지원

  • 응답속도가 빠르지 않기 때문에 프로덕션 데이터베이스로 사용 불가

  • Columnar storage

    • 컬럼별 압축 가능

    • 컬럼을 추가하거나 삭제하는 것이 매우 빠름

  • 벌크 업데이트 지원

    • 레코드가 들어있는 파일을 S3로 복사 후 COPY 커맨드로 Redshift에 일괄 복사

  • 고정 용량/비용 SQL 엔진

  • 데이터 웨어하우스는 primary key uniqueness를 보장하지 않음

  • PostgreSQL 8.X를 지원하는 툴이나 라이브러리로 일부 기능 사용 가능

  • SQL이 메인 언어기 때문에 테이블 디자인이 중요

  • 스키마(= 폴더) 구성

    • raw_data, analytics, adhoc
      CREATE SCHEMA raw_data;
      CREATE SCHEMA analytics;
      CREATE SCHEMA adhoc;

메모



0개의 댓글