데브코스 TIL/SQL

SQL을 이용한 데이터 분석 Day 1 SQL과 데이터베이스 소개

예니ㅣ 2023. 11. 13. 11:02

강의

데이터 관련 직군

  • 데이터 엔지니어
    • SQL, 데이터베이스
    • ETL/ELT (Airflow, DBT)
    • Spark, Hadoop
  • 데이터 분석가
    • SQL, 비지니스 도메인에 대한 지식
    • 통계 (AB 테스트 분석)
  • 데이터 과학자
    • 머신러닝
    • SQL, 파이썬
    • 통계

 


데이터베이스

"관계형 데이터베이스"는 구조화된 데이터를 저장한 것입니다.

  • 구조화된 데이터 저장 및 질의할 수 있도록 해주는 스토리지
  • 엑셀 스프레드시트 형태의 테이블로 데이터 정의 및 저장
  • SQL, DDL(Data Definition Language), DML(Data Manipulation Language)

 

종류

  • 프로덕션 데이터 베이스
    • MySQL, PostgreSQL, Oracle
    • OLTP(OnLine Transaction Processing)
    • 빠른 속도에 초점
    • 서비스에 필요한 데이터 저장
  • 데이터 웨어하우스
    • Redshitf, Snowflake, BigQuerym Hive
    • OLAP(OnLine Analytical Processing)
    • 처리 데이터 크기에 초점
    • 데이터 분석 혹은 모델 빌딩에 필요한 데이터 저장

 

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

데이터베이스 or 스키마(혹은 파일) ⊃ 테이블(혹은 엑셀 시트)

 

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

"Denormalized schema"는 단위 테이블로 저장하지 않아 조인이 필요 없는 저장 방식 입니다.

스토리지를 더 사용하지만 빠른 계산이 가능합니다.

데이터 웨어하우스에서 사용하는 방식입니다.

 

"Star schema"는 데이터를 논리적 단위로 나눠 저장하고 필요할 때 조인하는 저장 방식 입니다.

스토리지 낭비가 덜하고 업데이트가 쉬운 장점이 있습니다.

  • 행 : 레코드
  • 열 : 필드(컬럼)
    • 타입
    • 속성(primary key) : 유일성 보장

 


SQL

"SQL"(Structured Query Language)는 관계형 데이터베이스의 데이터(테이블)을 질의하거나 조작해주는 언어 입니다.

  • 1970년대 초반에 IAM이 개발
  • 데이터의 규모와 상관없이 쓰임 → 구조화된 데이터에 최적화
  • Spark, Hadoop을 통해 비구조화 데이터 처리 가능
  • No nested like JSON

 

종류

  • DDL(Data Definition Language)
    • 테이블 구조 정의
  • DML(Data Manipulation Language)
    • 테이블 레코드 질의
    • 테이블 레코드 추가/삭제/갱신

 


데이터 웨어하우스

"데이터 웨어하우스"는 회사에 필요한 모든 데이터를 저장하는 곳입니다.

  • SQL 기반의 관계형 데이터베이스 : 프로덕션 데이터베이스와 별도
  • AWS의 Redshift, Google Cloud의 Big Query, Snowflake
    • 고정비용 vs 가변비용 옵션 고려 필요
  • 외부가 아닌 내부에서 사용 → 처리 속도보다 처리 데이터의 크기가 중요
  • ETL(Extract, Transform, Load) 혹은 데이터 파이프라인을 통해 외부에 존재하는 데이터를 데이터 웨어하우스에 저장

 


데이터 인프라

"데이터 인프라"는 데이터 엔지니어가 관리하는 ETL, 데이터 웨어하우스, Spark를 포함합니다.

데이터 순환 구조

 


클라우드

"클라우드"는 컴퓨터 자원(하드웨어, 소프트웨어 등)을 네트워크를 통해 서비스 형태로 사용하는 것을 말합니다.

서버와 같은 자원을 필요한만큼 실시간으로 할당하여 사용한만큼 지불합니다.

탄력적으로 운영할 때, 금액을 크게 축소할 수 있습니다.

  • No Provisioning
  • Pay As You Go

 

장점

  • 초기 투자 비용 감소 : CAPEX(Capital Expenditure) vs OPEX(Operating Expense)
  • 리소스 준비 대기시간 대폭 감소 → 초기 비용 감소
  • 낭비 리소스 제거로 비용 감소
  • 글로벌 확장 용이
  • 소프트웨어 개발 시간 단축 : Managed Service(SaaS) 이용

 


AWS

"AWS"는 가장 큰 클라우드 컴퓨팅 서비스 업체 입니다.

 

"EC2"(Elastic Compute Cloud)는 AWS의 서버 호스팅 서비스 입니다.

  • 리눅스 혹은 윈도우 서버 luanch 및 acount 생성하여 로그인 가능
  • 가상 서버 → 전용 서버에 비해 성능 부족
  • 구매 옵션 : On-Demand, Reserved, Spot Instance

"S3"(Simple Storage Service)는 아마존의 대용량 클라우드 스토리지 서비스 입니다.

  • 데이터 저장관리를 위한 계층적 구조 제공
  • Bucket(디렉토리)이나 파일별 액세스 컨트롤 가능

 


기타 중요 서비스

Database Service

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

AI&ML Services

  • SageMaker
    • Deep Learning and Machine Learning end-to-end framkwork
  • Lex
    • Conversational Interface(Chatbot service)
  • Polly
    • Text to Speech Engine
  • Rekognition
    • Image Recognition Service

그 외

  • Amazon Alexa
    • Amazon's voice bot platform
  • Amazon Connect
    • Amazon's Contact Center Solution
  • Lambda
    • Event-driven, serverless computing engine

 


Redshift

"Redshift"는  Scalable SQL 엔진 입니다.

  • OLAP : 응답속도 느림 → 프로덕션 데이터베이스 사용 불가
  • Columnar Storage : 컬럼별 압축/추가/삭제 용이
  • 벌크 업데이트 지원
  • 고정 용량/비용 발생
  • primary key 유일성 보장 불가
  • PostgreSQL 8.x와 SQL 호환 가능

 

액세스 방법

  • SQL Workbench(Mac 혹은 Windows), Postico(Mac)
  • Python의 psycopg2 모듈
  • 시각화/대시보드 : Looker, Tableau, Power BI, Superset