[TIL Day44] SQL과 데이터분석 - Redshift 소개

이다혜·2021년 7월 6일
0

TIL

목록 보기
45/60

<들어가기에 앞서>

새로운 것을 처음 배울 때의 좋은 자세(1)

  • 자신이 아는 것과 모르는 것을 분명히 이해하는지?
    - 멍청한 질문이란 없다! 대충 알거나 모르면서 물어보지 않는 것이 더 큰 문제
    - 내가 모르는 부분이 무엇인지 자문자답을 해보면서 깊게 파고들자
    - 이는 피드백을 잘 받아들일 수 있는지와도 연계된다

  • 마음을 편하게 먹기
    - 내가 이해하기 힘들다면 남들도 이해하기 힘들다
    - 나보다 잘 하는 사람들은 그만큼 시간을 쏟았기 때문이다
    - 남과 비교하지 말고, 어제의 나와 비교하자!

새로운 것을 처음 배울 때의 좋은 자세(2)

  • 배움의 발전은 tipping point를 거치면서 폭발하는 형태이다
  • 발전이 더딘 기간을 즐기는 자세가 필요하다

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

관계형 데이터베이스란?

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

  • 테이블로 데이터를 정의하고 저장
  • 테이블에는 칼럼(열)과 레코드(행)가 존재

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

  • 프로덕션 데이터베이스: MySQL, PostgreSQL, Oracle
    - OLTP(OnLine Transaction Processing)라고도 부름
    - (고객 요청을 처리해야 하기 때문에) 빠른 응답 속도에 집중
    - 보통 웹 서비스, 모바일 앱 서비스 등에 연동하여 필요한 정보 저장
    - 백엔드/프론트 개발자들이 운용

  • 데이터 웨어하우스: Redshift, Snowflake, BigQuery, Hive, Spark
    - OLAP(OnLine Analytical Processing)
    - 처리 데이터 크기에 집중
    - 데이터 분석 혹은 모델 빌딩 등을 위한 데이터 저장
    - 보통 프로덕션 데이터베이스를 복사해서 데이터 웨어하우스에 저장함
    - 서비스에 영향이 가지 않게 데이터를 사용하고 분석하기 위해 분리해 놓은 것
    - 데이터 분석가들이 운용

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

관계형 데이터베이스는 2단계로 구성된다. 가장 밑단에는 테이블들이 존재하고, 테이블들은 데이터베이스(혹은 스키마)라는 폴더 하위에 구성된다.

  • 테이블의 구조(테이블 스키마)
    - 테이블은 레코드들(행)로 구성
    - 레코드는 하나 이상의 필드(컬럼, 열)로 구성
    - 필드(컬럼)는 이름/타입/속성(primary key)으로 구성

SQL이란?

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

  • 테이블 (스키마) 구조 정의를 위한 DDL(Data Definition Language)

  • 테이블 데이터 조작/질의를 위한 DML(Data Manipulation Language)
    - 테이블에서 원하는 레코드들을 읽어옴
    - 테이블에 레코드를 추가/삭제/갱신

  • SQL의 단점
    - 구조화된 데이터를 다루는 데 최적화가 되어있어 비구조화된 데이터를 다루는 것에는 제약이 심함
    - 많은 관계형 데이터베이스들이 flat한 구조만 지원(no nested like JSON)
    - 비구조화된 데이터를 다루는데 Spark, Hadoop과 같은 분산 컴퓨팅 환경이 필요
    - 관계형 데이터베이스마다 SQL 문법이 조금씩 상이

데이터모델링 방법

  • Star Schema
    - 프로덕션 DB용 관계형 데이터베이스에서 사용하는 데이터 저장 방식
    - 데이터를 논리적 단위로 나눠 저장하고 필요시 조인하여 사용
    - 스토리지의 낭비가 덜하고 업데이트가 쉬움

  • Denormalized Schema
    - 데이터 웨어하우스에서 사용하는 방식
    - 단위 테이블로 나눠 저장하지 않으므로 별도의 조인이 필요 없는 형태
    - 이는 스토리지를 더 사용하지만, 조인이 필요 없기에 빠른 계산 가능

데이터 웨어하우스란?

여전히 SQL 기반의 관계형 데이터베이스이나, 프로덕션 데이터베이스와는 별도로 회사에 필요한 모든 데이터를 저장한다. 데이터 웨어하우스는 고객이 아닌 내부 직원을 위한 데이터베이스로 처리 속도가 아닌 처리 데이터의 크기가 더 중요하다.

  • 데이터 순환 구조

Cloud란?

클라우드란 컴퓨팅 자원(하드웨어, 소프트웨어 등)을 네트웍을 통해 서비스 형태로 사용하는 것으로, 별도의 준비 없이No Provisioning 자원을 필요한만큼 (거의) 실시간으로 할당하여 사용한 만큼 지불Pay As You Go하는 시스템. 탄력적으로 필요한만큼의 자원을 유지하는 것이 중요하다.

  • 클라우드 컴퓨팅의 장점
    - 초기 투자 비용이 크게 줄어듦
    - CAPEX(Capital Expenditure) vs. OPEX(Operating Expense)
    - 리소스 준비를 위한 대기시간 대폭 감소(Shorter Time to Market)
    - 노는 리소스 제거로 비용 감소
    - 글로벌 확장 용이
    - 소프트웨어 개발 시간 단축(Managed Service; SaaS 이용)

Redshift 소개

AWS 기반 데이터 웨어하우스 서비스

  • Redshift: Scalable SQL 엔진(1)
    - 2PB까지 지원
    - Still OLAP, 응답속도가 빠르지 않기 때문에 프로덕션 데이터베이스로 사용 불가
    - Columnar storage: 레코드를 컬럼별로 저장

    • 컬럼별 압축이 가능
    • 컬럼을 추가하거나 삭제하는 것이 아주 빠름
  • Redshift: Scalable SQL 엔진(2)
    - 벌크 업데이트 지원: 레코드가 들어있는 파일을 S3로 복사 후 COPY 커맨드로 Redshift로 일괄 복사
    - 고정 용량, 고정 비용 SQL 엔진(⇔ Snowflake, BigQuery)
    - 다른 데이터 웨어하우스처럼 primary key uniqueness를 보장하지 않음(개발자가 보장해주어야 함)

  • Redshift 엑세스 방법
    - Google Colab
    - PostgreSQL 8.x와 호환되는 모든 툴과 프로드래밍 언어를 통해 접근 가능

    • SQL Workbench, Postico
    • Python의 psycopg2 모듈
    • 시각화/대시보드 툴 Looker, Tableau, Power BI, Superset 등에서 연결 가능
profile
하루하루 성장중

0개의 댓글