ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [11주차 - Day1] Redshift 소개
    교육/프로그래머스 인공지능 데브코스 2021. 8. 7. 10:42
    728x90

    SQL을 이용한 데이터 분석

    1. SQL과 데이터베이스 소개

    1. SQL의 중요성

    모든 데이터 직군에게 필요한 기술, 데이터 요약과 분석을 위해 필요

    데이터 직군 : 데이터 엔지니어/분석가/과학자

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

    구조화된 데이터를 저장하고 질의할 수 있도록 해주는 저장장치

    엑셀 스프레드시트 형태의 테이블을 생각하면 쉬움

     

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

    1. 프로덕션 데이터베이스=OLTP(OnLine Transaction Processing)
      • 웹서비스, 모바일앱과 바로 연동이 돼서 해당 서비스에 필요한 정보를 저장하고 읽어오는데 사용
      • 빠른 속도에 집중, 서비스에 필요한 정보 저장
      • ex)MySQL, PostgreSQL, Oracle,...
    2. 데이터 웨어하우스=OLAP(OnLine Analytical Processing)
      • 데이터 분석 혹은 모델 빌딩 등을 위한 데이터 저장
      • 프로덕션 데이터베이스를 복사해서 데이터 웨어하우스에 저장
      • 처리 데이터 크기에 집중
      • ex)Redshift, Snowflake, BigQuery, Hive, ...

    프로덕션 데이터베이스만 있으면 생기는 문제?

    서비스에 연동되어 있는 데이터베이스이기 때문에 SQL쿼리를 날려서 오래 걸리게 되면 서비스도 느려짐

     

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

    가장 밑단에 테이블들(≒엑셀의 시트)이 존재,  테이블들은 데이터베이스(=스키마, ≒엑셀의 파일)라는 폴더 밑으로 구성

     

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

    • 테이블은 레코드들로 구성(행)
    • 레코드는 하나 이상의 필드(열)로 구성
    • 필드(열)은 이름과 타입, 속성(primary key)으로 구성

    3. SQL이란?

    =Structured Query Language

    관계형 데이터 베이스에 있는 데이터(테이블)를 질의하거나 조작하는 프로그래밍 언어

    SQL의 종류

    • DDL(Data Definition Language) : 테이블 구조 정의
    • DML(Data Manipulation Language) : 테이블에서 원하는 레코드들을 읽어오는 질의언어, 테이블에 레코드를 추가/삭제/갱신해주는데 사용하는 언어

    SQL의 단점

    1. 구조화된 데이터를 다루는데만 최적화가 되어있음
      • 비구조화된 데이터도 다룰수는 있으나 제약이 심함 대부분의 관계형 데이터베이스들이 플랫한 구조만 지원(구글 빅쿼리는 nested structure(ex.JSON)를 지원)
      • 비구조화된 데이터를 다루는데 Spark, Hadoop과 같은 분산 컴퓨팅 환경이 필요
    2. 관계형 데이터베이스마다 SQL문법이 조금씩 상이

    데이터 모델링 방법

    1. Star schema
      • 프로덕션 데이터베이스용 관계형 데이터 베이스에서 주로 사용
      • 데이터를 논리적 단위로 나눠 저장하고 필요시 조인, 스토리지 낭비가 덜하고 업데이트가 쉬움
    2. Denormalized schema
      • 데이터 웨어하우스에서 주로 사용
      • 단위 테이블로 나눠 저장하지 않음으로 별도의 조인이 필요없는 형태->스토리지를 더 사용하지만 조인이 필요없기때문에 빠른 계산 가능

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

    • 회사에 필요한 모든 데이터를 저장
    • 프로덕션 데이터베이스와는 별도
    • 고객이 아닌 내부 직원을 위한 데이터베이스
    • ETL 혹은 데이터 파이프라인 : 외부에 존재하는 데이터를 읽어다가 데이터 웨어하우스로 저장해주는 코드들이 필요

    데이터 인프라

    ->데이터 순환구조

    5. Cloud와 AWS소개

    클라우드란? 컴퓨팅 자원(hw, sw 등)을 네트워크를 통해 서비스 형태로 사용하는 것

    자원(ex.서버)을 필요한만큼 실시간으로 할당하여 사용한만큼 지불

     

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

    • 서버/네트워크/스토리지 구매와 설정을 직접 수행
    • Peak time을 기준으로 Capacity planning을 해야함->놀고 있는 자원들이 높게 되는 현상이 발생해서

    클라우드 컴퓨팅의 장점

    • 초기 투자 비용이 줄어듦 : CAPEX(Capital Expenditure)vsOPEX(Operating Expense)
    • 리소스 준비를 위한 대기 시간 대폭 감소
    • 노는 리소스 제거로 비용 감소
    • 글로벌 확장 용이
    • 소프트웨어 개발 시간 단축

    AWS

    가장 큰 클라우드 컴퓨팅 서비스 업체

     

    AWS 서비스 종류

    • EC2(Elastic Compute Cloud) : AWS의 서버 호스팅 서비스
    • S3(Simple Storage Service) : AWS의 대용량 클라우드 스토리지 서비스, 웹 하드디스크
    • 기타 중요 서비스-Database : RDS(Relational Database Service), DynamoDB, Redshift, ElasticCache, Neptune(Graph database), ElasticSearch, MongoDB
    • 기타 중요 서비스-AI&ML : SageMaker(딥러닝, 머신러닝 end-to-end framework), Lex(Conversational interface, 챗봇서비스), Polly(Text to Speech Engine), Rekognition(Image Recognition Service)
    • 기타 중요 서비스 : Amazon Alexa(아마존 보이스봇 플랫폼), Amazon Connect(콜센터 구현이 쉬워짐), Lambda(서비스 구현)

    6. Redshift소개

    • Scalable SQL 엔진
    • 데이터 웨어하우스로 사용
    • Columnar storage : 컬럼별 압축이 가능, 컬럼을 추가/삭제하는 것이 매우 빠름
    • 벌크 업데이트 지원
    • 고정 용량/비용 SQL엔진
    • 다른 데이터 웨어하우스처럼 primary key uniqueness를 보장하지 않음
    • Postgresql 8.x와 SQL이 호환됨

     

     

    댓글

Designed by Tistory.