📖 학습주제
데이터 웨어하우스와 SQL 기본에 대해 배우고 이를 바탕으로 데이터 분석에 대해 학습 (1)
관계형 데이터베이스
- 구조화된 데이터를 저장하고 질의할 수 있도록 해주는 스토리지
(비관계형 데이터 x)
- 엑셀 스프레드시트 형태의 테이블로 데이터를 정의하고 저장
(테이블에는 컬럼(열)과 레코드(행)이 존재)
- 관계형 데이터베이스를 조작하기 위해 SQL을 사용
- 대표적으로 프로덕션 데이터베이스와 데이터 웨어하우스가 있음
프로덕션 데이터베이스
- 서비스에 필요한 정보 저장하고 읽어오는데 사용
- 빠른 속도에 집중
- 주로 백엔드/프론트엔드 개발자들이 사용함
- OLTP (OnLine Transaction Processing)
- e.g.) MySQL, PostgreSQL, Oracle
데이터 웨어하우스
- 데이터 분석 혹은 모델 빌딩등을 위한 데이터 저장하는데 사용
- 처리 데이터 크기에 집중
- 주로 데이터 직군이 사용함
- OLAP (OnLine Analytical Processing)
- 보통 프로덕션 데이터베이스를 복사해서 데이터 웨어하우스에 저장함
- Redshift, Snowflake, BigQuery, Hive
관계형 데이터베이스의 구조
관계형 데이터베이스는 2 단계로 구성된다.

가장 밑단에는 테이블들이 존재하며 테이블들은 데이터베이스(혹은 스키마)라는 폴더 밑으로 구성된다.

테이블은 레코드들(행)로 구성되며 레코드는 하나 이상의 필드(열)로 구성된다. 필드(열)는 다시 이름과 타입과 속성으로 구성된다.
SQL(Structured Query Language)
관계형 데이터베이스에 있는 데이터(테이블)를 질의하거나 조작해주는 언어
DDL (Data Definition Language)
DML (Data Manipulation Language)
- 테이블에서 원하는 레코드들을 읽어오는 질의 언어
- 테이블에 레코드를 추가/삭제/갱신해주는데 사용하는 언어
SQL의 중요성
SQL은 구조화된 데이터를 다루는한 SQL은 데이터 규모와 상관없이 쓰이며 모든 대용량 데이터 웨어하우스는 SQL 기반으로 한다.
데이터 엔지니어는 데이터 웨어하우스 관리를 위해 데이터베이스 언어인 SQL을 알아야 한다.
데이터 분석가와 데이터 과학자 또한 적재된 데이터을 이용하기 위해 알아야하니 데이터 직군에게 있어 SQL은 필수적인 요소이다.
데이터 관련 3개의 직군
- 데이터 엔지니어
- 파이썬, 자바/스칼라
- SQL, 데이터베이스
- ETL/ELT (Airflow, DBT)
- Spark, Hadoop
- 데이터 분석가
- SQL, 비지니스 도메인에 대한 지식
- 통계 (AB 테스트 분석)
- 데이터 과학자
- 머신러닝
- SQL, 파이썬
- 통계
SQL의 단점
- 구조화된 데이터를 다루는데 최적화가 되어있음
- 많은 관계형 데이터베이스들이 플랫한 구조만 지원함
- 비구조화된 데이터를 다루는데 Spark, Hadoop과 같은 분산 컴퓨팅 환경이 필요해짐
데이터 모델링
Star schema

- Production DB용 관계형 데이터베이스에서 주로 사용하는 방식
- 데이터를 논리적 단위로 나눠 저장하고 필요시 조인. 스토리지의 낭비가 덜하고 업데이트가 쉬움
Denormalized schema

데이터 웨어하우스
- 회사의 데이터를 모두 저장함
- 여전히 SQL 기반의 관계형 데이터베이스이나 프로덕션 데이터베이스와는 별도이어야 함 -> 데이터 웨어하우스 탄생
- 고객이 아닌 내부 직원을 위한 데이터베이스
(처리속도가 아닌 처리 데이터의 크기가 더 중요해짐)
- ETL/데이터 파이프라인 : 외부에 존재하는 데이터를 읽어다가 데이터 웨어하우스로 저장해주는 코드
데이터 인프라

- 데이터 웨어하우스, ETL/데이터 파이프라인 등을 통틀어서 데이터 인프라라고하며 데이터 엔지니어가 관리함
- 데이터 인프라가 발전해 비구조화된 데이터들을 다루게 된다면 Spark과 같은 대용량 분산처리 시스템이 일부로 추가됨
데이터 순환 구조

Cloud
- 컴퓨팅 자원(하드웨어, 소프트웨어 등등)을 네트웍을 통해 서비스 형태로 사용하는 것
- No Provisioning(준비할 필요가 없음) : 원하는 사양의 하드웨어/소프트웨어를 얻을 수 있음
- Pay As You Go : 내가 쓴만큼 지불
- 자원(예를 들면 서버)을 필요한만큼 실시간으로 할당하여 사용한큼 지불
(탄력적으로 필요한만큼의 자원을 유지하는 것이 중요)
- AWS : 가장 큰 클라우드 컴퓨팅 서비스 업체
클라우드 컴퓨팅의 장점
- 초기 투자 비용이 크게 줄어듬(CAPEX (Capital Expenditure))
- But, 운영비용이 늘어남(OPEX (Operating Expense))
- 리소스 준비를 위한 대기시간 대폭 감소
- 노는 리소스 제거로 비용 감소
- 글로벌 확장 용이
- 소프트웨어 개발 시간 단축
- Managed Service (SaaS) 이용