SQL의 중요성
배움이란?
관계형 데이터베이스란?
SQL이란?
데이터 웨어하우스란?
Cloud와 AWS 소개
Redshift 소개
구조화된 데이터를 다루는 한, 데이터의 규모와 상관없이 쓰임
SQL 없이는 데이터 관련 업무를 할 수 없음
정체기가 오는 것은 자연스러운 현상이며, 이를 잘 대응하는 것이 중요함
내가 뭘 모르는지, 어디서 막혔는지 구체적으로 파악해야 함
잘 하는 사람 보고 기죽지 않기
구조화된 데이터를 저장하고 질의할 수 있도록 해주는 스토리지
대표적인 관계형 데이터베이스
프로덕션 데이터베이스(= OLTP: OnLine Transaction Processing)
빠른 속도에 집중, 서비스에 필요한 정보 저장
ex) MySQL, PostgreSQL, Oracle, ...
데이터 웨어하우스(= OLAP: OnLine Analytical Processing)
처리 데이터 크기에 집중, 데이터 분석 혹은 모델 빌딩 등을 위해 데이터 저장
보통 프로덕션 데이터베이스를 복사해서 데이터 웨어하우스에 저장
ex) Redshift, Snowflake, BigQuery, Hive, ...
관계형 데이터베이스의 구조
관계형 데이터베이스는 데이터베이스(= 스키마)라는 폴더 밑에 테이블들이 존재하는 구조
테이블의 구조(= 테이블 스키마)
테이블은 레코드(행)들로 구성
레코드는 하나 이상의 필드(컬럼 = 열)로 구성
필드는 이름과 타입과 속성(primary key)으로 구성
SQL: Structured Query Language
관계형 데이터베이스의 데이터를 질의하거나 조작하는데 사용되는 언어
DDL(Data Definition Language): 테이블의 구조를 정의하는 언어
DML(Data Manipulation Language): 테이블에서 원하는 레코드를 읽어오는 질의 언어
단점
비구조화된 데이터를 다루기 어려움
관계형 데이터베이스마다 SQL 문법이 조금씩 상이
데이터 모델링 기법
Star schema
일반적으로 프로덕션 데이터베이스에서 사용
데이터를 논리적 단위로 나눠 저장하고 필요시 조인
Denormalized schema
데이터 웨어하우스에서 사용
단위 테이블로 나누지 않고 하나의 테이블에 저장
고객이 아닌 내부 직원(데이터 팀)을 위한 데이터베이스
프로덕션 데이터베이스와는 별도
처리 속도가 아닌, 처리 데이터의 크기가 더 중요
AWS의 Redshift, Google Cloud의 Big Query, Snowflake 등이 대표적
ETL 혹은 데이터 파이프라인
데이터 인프라
데이터 웨어하우스 + ETL
Spark와 같은 분산 처리 시스템을 추가해 확장 가능
데이터 엔지니어가 관리
클라우드의 정의
컴퓨팅 자원(HW, SW)을 네트워크를 통해 서비스 형태로 사용하는 것
자원을 필요한 만큼 실시간으로 할당해 사용한 만큼 사용
클라우드 컴퓨팅의 장점
초기 투자 비용이 크게 줄어듦(유지 비용은 증가)
리소스 준비를 위한 대기시간 대폭 감소
노는 리소스 제거로 비용 감소
글로벌 확장 용이
소프트웨어 개발 시간 단축
AWS 서비스
EC2
AWS의 서버 호스팅 서비스
가상 서버이기 때문에 전용 서버에 비해 성능은 떨어짐
다양한 종류의 서버 타입 제공
S3: Simple Storage Service
AWS의 대용량 클라우드 스토리지 서비스
계층적 구조로 데이터 저장, 관리
버킷이나 파일 별로 액세스 컨트롤 가능
기타 DB 서비스: RDS, DynamoDB, Redshift, ...
기타 AI & ML 서비스: SageMaker, Lex, Polly, Rekognition
기타 중요 서비스: Amazon Alexa, Amazon Connect, Lambda
2PB 까지 지원
응답속도가 빠르지 않기 때문에 프로덕션 데이터베이스로 사용 불가
Columnar storage
컬럼별 압축 가능
컬럼을 추가하거나 삭제하는 것이 매우 빠름
벌크 업데이트 지원
고정 용량/비용 SQL 엔진
데이터 웨어하우스는 primary key uniqueness를 보장하지 않음
PostgreSQL 8.X를 지원하는 툴이나 라이브러리로 일부 기능 사용 가능
SQL이 메인 언어기 때문에 테이블 디자인이 중요
스키마(= 폴더) 구성
CREATE SCHEMA raw_data;
CREATE SCHEMA analytics;
CREATE SCHEMA adhoc;