SQL을 이용한 데이터 분석 1-2

s2ul3·2022년 12월 12일
0

1. 데이터 웨어하우스 소개

데이터 웨어하우스

회사에 필요한 모든 데이터를 저장

  • 여전히 SQL 기반의 관계형 DB

    • 프로덕션 DB와는 별도이어야함.
      (프로덕션 데이터베이스와는 별도이지만 프로덕션 데이터베이스의 복사본이 데이터 웨어하우스에 있어야함.)
    • OLAP
    • AWS의 Redshift, Google Cloud의 Big Query, Snowflake 등이 대표적
      • Big Query, Snowflake가 Redshift보다 더 scalable 함.
      • Redshift : 고정비용옵션(동일한 금액 지불)
      • Big Query, Snowflake : 가변비용 옵션(사용한 만큼 돈을 지불)
    • 문법은 Redshift, Big Query, Snowflake 모두 비슷
  • 데이터 웨어하우스는 고객이 아닌 내부 직원을 위한 데이터베이스

    • 처리속도가 아닌 처리 데이터의 크기가 더욱 중요
  • ETL 혹은 데이터 파이프라인

    • 외부에 존재(데이터 웨어하우스 밖에 존재)하는 데이터를 읽어다가 데이터 웨어하우스로 저장해주는 코드들이 필요해지는데 이를 ETL(Extrack - Transform - Load) 혹은 데이터 파이프라인이라고 부름.

      • Extract : 외부에 존재하는 데이터 추출
      • Transform : 읽어온 데이터를 원하는 format으로 변환
      • Load : 변환된 데이터를 데이터웨어하우스 테이블로 저장
    • ETL은 결국 코드임.

데이터 인프라란?

  • 데이터 엔지니어가 관리한다.
  • 시스템이 발전하면, 비구조화된 데이터를 많이 사용하게 되고 이것들을 processing 하고자 Spark과 같은 대용량 분산처리 시스템도 데이터 인프라의 일부로 추가 됨.
  • 데이터 순환 구조

2. 클라우드와 AWS

클라우드의 정의

  • 컴퓨팅 자원(하드웨어, 소프트웨어 등등)을 네트워크를 통해 서비스 형태로 사용하는 것
  • No Provisioning : 나는 준비할 필요 없다.
  • Pay As You Go : 사용한 만큼 지불한다.
  • 자원(ex : 서버)을 필요한 만큼 (거의) 실시간으로 할당하여 사용만큼 지불
    • 탄력적으로 필요한 만큼의 자원을 유지하는 것이 중요

클라우드 컴퓨팅이 없었다면?

  • 서버 / 네트워크 / 스토리지 구매와 설정 등을 직접 수행해야 함.
  • 데이터 센터 공간을 직접 확보(Co-location)
    • 확장이 필요한 경우 공간을 먼저 더 확보해야함.
  • 그 공간에 서버를 구매하여 설치하고 네트워크 설정
    • 보통 서버를 구매해서 설치하는데 적어도 두세달은 걸림.
  • 또한 Peak time을 기준으로 Capacity planning을 해야함.
    • 놀고 있는 자원들이 높게 되는 현상 발생
  • 직접 운영비용 증가 (기회비용 증가)

클라우드 컴퓨팅의 장점

  • 초기 투자 비용(CAPEX : Capital Expenditure)이 크게 줄어듦
    • 대신 운영 비용(OPEX : Operating Expense) 증가
  • 리소스 준비를 위한 대기시간 대폭 감소
    • Shorter Time to Market
  • 노는 리소스 제거로 비용 감소
  • 글로벌 확장 용이
  • 소프트웨어 개발 시간 단축
    • Managed Service (SaaS) 이용

AWS 소개

  • 가장 큰 클라우드 컴퓨팅 서비스 업체
  • 2022년 아마존의 상품데이터를 API로 제공하면서 시작
    • 현재 100여개의 서비스를 전세계 15개의 지역에서 제공
    • 대부분의 서비스들이 오픈소스 프로젝트들을 기반으로 함.
    • 최근 들어 ML / AI 관련 서비스들도 내놓기 시작
  • 사용 고객
    • Netflix, Zynga 등의 상장업체들도 사용
    • 많은 국내 업체들도 사용 시작
  • 다양한 종류의 소프트웨어/플랫폼 서비스를 제공
    • AWS의 서비스만으로 쉽게 온라인 서비스 생성
    • 뒤에서 일부 서비스를 따로 설명

EC2 (Elastic Compute Cloud)

  • EC2 : AWS의 서버 호스팅 서비스

    • 리눅스 혹은 윈도우 서버를 launch하고 account를 생성하여 로그인 가능
    • 가상 서버들이라 전용 서버에 비해 성능이 떨어짐.
    • Bare-metal 서버도 제공하기 시작
  • 다양한 종류의 서버 타입 제공

    • ex : 미국 동부에서 스몰타입(t2 small)의 무료 리눅스 서버를 하나 할당시
      • 시간당 2.3센트의 비용 지불
      • 2GB 메모리, 1 가상코어, 160GB 하드디스크
      • 2012년에는 8.5센트였음
  • 세 가지 종류의 구매 옵션

    • On-Demand : 사용 시간당 비용이 지불되며 가장 흔히 사용하는 옵션
    • Reserved : 1년이나 3년간 사용을 보장하고 1/3정도에서 40% 정도 discount를 받는 옵션
      (오래 사용할 것 같으면 Reserved 사용)
    • Spot Instance : 일종의 경매방식으로 놀고 있는 리소스들의 비용으로 사용할 수 있는 옵션

S3 : Simple Storage Service

  • 아마존이 제공하는 대용량 클라우드 스토리지 서비스

    (웹 하드디스크 라고 생각하면 됨)
  • S3에서는 디렉토리(폴더)를 버킷(Bucket)이라고 부름
  • 버킷이나 파일별로 액세스 컨트롤 가능

기타 중요 서비스 - Database Services

  • RDS (Relational Database Service)
    • MySQL, PostgreSQL, Aurora
    • Oracle, MS SQL Server
  • DynamoDB
  • Redshift
  • ElasticCache
  • Neptune (Graph database)
  • ElasticSearch
  • MongoDB

기타 중요 서비스 - AI & ML Services

  • SageMaker : 딥러닝 혹은 머신러닝을 통해 모델을 만들고 모델을 바탕으로 태스크하고 최종적으로 이 모델을 API 형태로 deploy 하는 것을 자동화 해주는 프레임워크.
  • Lex : Conversational Interface (챗봇 서비스)
  • Polly : Text --> 음성
  • Recognition : Image Recognition Service

기타 중요 서비스

  • Amazon Alexa
  • Amazozn Connect
  • Lambda
    • serverless computing engine
    • 서비스 구현을 위해 EC2를 론치할 필요 없음
    • Google Cloud에는 Cloud Function이라는 이름으로 존재
    • Azure에는 Azure Function이란 이름으로 존재

3. Redshift 소개

Redshift : Scalable SQL 엔진

  • SQL이 메인 언어!!

  • 2PB까지 지원

  • Still OLAP

    • 응답속도가 빠르지 않기 때문에 프로덕션 데이터베이스로 사용불가
  • Columnar storage (컬럼 별 저장, 다른 DB들은 레코드 별 저장)
    --> 컬럼별 압축 가능
    --> 컬럼을 추가하거나 삭제하는 것이 아주 빠름.

  • Bulk Data 업데이트 지원

    • 레코드가 들어있는 파일을 S3(웹 스토리지)로 복사 후 COPY 커맨드로 Redshift 테이블로 일괄 복사
  • 고정 용량 / 비용 SQL 엔진

  • 다른 데이터 웨어하우스처럼 primary key uniqueness를 보장하지 않음
    --> 중복된 데이터 저장 가능.
    (프로덕션 데이터베이스들은 primary key를 보장)

  • PostgreSQL 8.x와 SQL이 호한됨.

    • PostgreSQL 8.x의 모든 기능을 지원하는 것은 아님.
    • PostgreSQL 8.x를 지원하는 툴이나 라이브러리로 액세스 가능
      • JDBC / ODBC
  • Redshift Options and Pricing

Redshift Schema(폴더) 구성

  • 관계형 DB는 테이블들의 집합
  • Redshift에서 폴더들을 스키마(Schema) 라고 부름
    CREATE SCHEMA 로 스키마 생성
  • 각각의 스키마 안에 table들을 저장
    (데이터베이스 혹은 스키마라 부르는 일종의 폴더 밑에 테이블들을 생성하는 2단계 구조로 테이블들을 관리)
  • 주로 데이터엔지니어들이 raw_data 스키마를 관리
  • analytics는 데이터 분석가들이 사용
  • adhoc은 개발자들이 태스크를 수행할 때 사용

Redshift 액세스 방법

  • 이 강좌에서는 Google Colab 사용 예정
  • PostgreSQL 8.x와 호환되는 모든 툴과 프로그래밍 언어를 통해 접근 가능
    • SQL Workbench (Mac과 윈도우), Postico(Mac)
    • Python이라면 psycopg2 모듈
    • 시각화 / 대시보드 툴이라면 Looker, Tableau, Power BI, Superset 등에서 연결 가능
profile
statistics & computer science

0개의 댓글