주제

고급 SQL 활용

1. SQL과 데이터베이스 소개
2. 관계형 데이터베이스
3. 데이터 모델링 방식
4. 데이터 웨어하우스 소개
5. 클라우드

 

 

SQL과 데이터베이스 소개

관계형 데이터베이스란?

  • 구조화된 데이터를 저장하는 데 사용되는 데이터베이스
  • 테이블로 데이터를 정의하고 저장
  • 열과 행이 존재
  • 이를 조작하는 프로그래밍 언어는 SQL (DDL & DML)

 

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

프로덕션 데이터베이스 데이터 웨어하우스
OLTP (OnLine Transaction Processing) OLAP (OnLine Analytical Processing)
빠른 속도에 집중, 서비스에 필요한 정보 저장 처리 데이터 크기에 집중, 데이터 분석 혹은 모델 빌딩 등을 위한 데이터 저장
MySQL, PostgreSQL, Oracle, ... Redshift, Snowflake, BigQuery, Hive, ...

 

 

 

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

  • 2단계로 구성
    • 가장 밑단은 테이블
    • 테이블은 데이터베이스(혹은 스키마)라는 폴더 밑으로 구성
  • 테이블의 구조
    • 레코드들로 구성 (행)
    • 레코드는 하나 이상의 필드로 구성
    • 필드는 이름과 타입과 속성으로 구성

 

 

SQL 소개

  • 관계형 데이터베이스에 있는 데이터를 질의하거나 조작하는 언어
  • 두 종류 :
    • DDL : 테이블의 구조를 정의
    • DML : 테이블에서 원하는 레코드를 읽어오는 질의 언어, 테이블에 레코드를 추가 / 삭제 / 갱신
  • SQL은 빅데이터 세상에서도 중요
    • 구조화된 데이터를 다루는 이상 SQL은 데이터 규모와 상관없이 쓰임
    • 모든 대용량 데이터 웨어하우스는 SQL 기반

 

SQL의 단점

  • 구조화된 데이터를 다루는데 최적화
    • 정규표현식을 통해 비구조화된 데이터를 어느 정도 다루는 것은 가능하나 제약이 심함
    • 많은 관계형 데이터베이스들이 플랫한 구조만 지원 (nested x)
    • 비구조화된 데이터를 다루는데 Spark, Hadoop과 같은 분산 컴퓨팅 환경이 필요해짐 -> SQL 만으로는 비구조화 데이터를 처리하지 못함
    • 관계형 데이터베이스마다 문법이 조금씩 상이

 

 

데이터 모델링 방식

Star schema Denormalized schema
Production DB용 관계형 데이터베이스에서는 보통 스키마를 사용해 데이터를 저장 데이터 웨어하우스에서 사용하는 방식
데이터를 논리적 단위로 나누고 필요시 조인 단위 테이블로 나눠 저장하지 않고 한개의 테이블만 사용
스토리지의 낭비가 덜하고 업데이트가 쉬움 스토리지를 더 사용하지만 조인이 필요 없어 빠른 계산 가능

 

 

 

 데이터 웨어하우스 소개

  • 회사에 필요한 모든 데이터를 저장
  • 프로덕션 데이터베이스와는 별도이어야 함
  • Redshift, Snowflake, Big Query 등
  • 고객이 아닌 내부 직원을 위한 데이터베이스
  • ETL 혹은 파이프라인
    • 외부에 존재하는 데이터를 읽어와서 데이터 웨어하우스로 저장해주는 것이 필요

 

데이터 인프라란?

  • 데이터 엔지니어가 관리
  • 한 단계 발전하면 대용량 분산처리 시스템이 일부 추가됨
  • 데이터 순환 구조

데이터 순환 구조

 

 

 

 

클라우드

  • 정의 : 컴퓨팅 자원을 네트웍을 통해 서비스 형태로 사용하는 것
  • 자원을 필요한만큼 실시간으로 할당하여 사용하고, 사용한만큼 지불
  • 장점 :
    • 초기 투자 비용이 크게 줄어든다
      • CAPEX(Capital Expense) vs. OPEX(Operating Expense)
    • 리소스 준비를 위한 대기시간 대폭 감소
    • 노는 리소스 제거로 비용 감소
    • 글로벌 확장 용이
    • 소프트웨어 개발 시간 단축

 

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

  • 서버 / 네트웍 / 스토리지 구매와 설정 등을 직접 수행해야 함
  • 데이터센터 공간을 직접 확보
  • 서버를 구매하여 설치하고 네트웍 직접 설정
  • Peak time을 기준으로 Capacity planning을 해야함 (놀고 있는 자원들이 많아짐)

 

 

 

+ Recent posts