[SQL] 2. 데이터 웨어하우스, 클라우드(Cloud), AWS, Redshift
데이터 웨어하우스
1. 데이터 웨어하우스(Data Warehouse)
- 회사에 필요한 모든 데이터를 저장
- 여전히 sql 기반의 관계형 데이터베이스임
- 프로덕션 데이터베이스와는 별도이어야 함(비록, 프로덕션 데이터를 복사해와야 하지만...)
- AWS의 Redshift(고정비용), Google Cloud의 Big Query, Snowflake 등(가변비용)이 대표적
- 데이터 웨어하우스는 고객이 아닌 내부 직원을 위한 데이터베이스이다
- 따라서, 처리속도가 아닌, 데이터 크기와 관계없이 원하는 분석을 수행할 수 있는 것이 더 중요하다
- ETL 혹은 데이터 파이프라인
- 외부에 존재하는 데이터를 읽어다가 데이터 웨어하우스로 저장해주는 것을 ETL작업이 필요해짐
- 보통 데이터 웨어하우스 + ETL(데이터 파이프라인) = 데이터 인프라 라고 한다
2. 데이터 인프라
- 데이터 엔지니어가 개발 및 관리하는 인프라
- 데이터 웨어하우스 + ETL(데이터 파이프라인)
- 시스템이 발전하면 비구조화된 데이터가 유입될 것이고 이를 처리하기 위해 spark과 같은 것들이 시스템에 추가가 된다
Cloud와 AWS
Cloud
1. Cloud
- 컴퓨팅 자원(하드웨어, 소프트웨어 등)을 네트워크를 통해 서비스 형태로 사용하는 것
- 키워드(No Provisioning, Pay As You Go)
- 자원(서버)을 필요한 만큼 (거의)실시간으로 할당하여 사용한 만큼 지불
- 서비스를 론칭하면서 소모되는 시간이 크게 단축된다는 큰 장점 때문에 비싼 비용을 상쇄할 만한 장점을 가지고 있다
2. 클라우드 컴퓨팅이 없었다면?
- 서버/네트워크/스토리지 구매와 설정등을 직접 수행해야 함
- 데이터센터 공간을 직접 확보(Co-location)
- 그 공간에 서버를 구매하여 설치하고 네트워크 설정(보통 서버 구매 후 설치까지 최소 2~3개월 소요)
- 또한, Peak time을 기준으로 Capacity planning을 해야함(놀고 있는 자원들이 높게 되는 현상 발생)
- 직접 운영비용 vs 클라우드 비용 → 기회비용을 따져 적절한 것을 선택해야함
3. 클라우드 컴퓨팅의 장점
- 초기 투자 비용(Capex Expenditure)이 크게 줄어듬 → CAPEX에서 운영비용(Operating Expense)로 전환됨
- 리소스 준비를 위한 대기시간 대폭 감소
- 노는 리소스 제거로 비용 감소(탄력적 운영)
- 글로벌 확장 용이
- 소프트웨어 개발 시간 단축
AWS
1. AWS
- 가장 큰 클라우드 컴퓨팅 서브시 업체
- 2002년 아마존의 상품데이터를 API로 제공하면서 시작
- 현재 100여개의 서비스를 전세계 15개의 지역에서 제공.
- 대부분의 서비스를이 오픈소스 프로젝트들을 기반으로 함.
- 최근 들어 ML/AI 관련 서비스들도 내놓기 시작
- 사용고객: Netflix, Zynga 등의 상장업체들도 사용
- 다양한 종류의 소프트웨어/플랫폼 서비스를 제공
2. EC2 - Elastic Compute Cloud
- AWS의 서버 호스팅 서비스
- 리눅스 혹은 윈도우 서버를 launch하고 계저을 생성하여 로그인 가능 → 구글앱엔진과의 가장 큰 차이
- 가상 서버들이라 전용서버에 비해 성능이 떨어짐
- Bare-metal 서버도 제공하기 시작
- 다양한 종류의 서버 타입 제공
- 세 가지 종류의 구매 옵션
- On-Demand: 시간당 비용이 지불되며 가장 흔히 사용하는 옵션
- Reserved: 1년이나 3년간 사용을 보장하고 1/3 정도에서 40% 할인을 받는 옵션
- Stop Instance:일종의 경매방식으로 놀고있는 리소스들을 경매가로 사용할 수 있는 옵션
3. S3 - Simple Storage Service
- 아마존이 제공하는 대용량 클라우드 스토리지 서비스
- S3는 데이터 저장관리를 위해 계층적 구조를 제공
- 글로벌 네임스페이스를 제공하기 때문에 톱레벨 디렉토리 이름 선정에 주의(겹칠 수 있음)
- S3에서는 디렉토리를 버킷(Bucket)이라고 부름
- 버킷이나 파일별로 액세스 컨트롤 가능
4. 기타 중요 서비스 - AI & ML Service
- SegaMaker: Deep Learing and Machine Learning end-to-end framwork
- Rekognition: Image Recognition Service
- Amazon Alexa: Amazon's voice bot platform
- Amazon Connect: Amazon's Contact Center Solution, 콜센터 구현이 아주 쉬어짐
- Lambda
- Event-driven, serverless compution engine
- 서비스 구현을 위해서 EC2를 론치할 필요가 없음
- Google Cloud에는 Cloud Fuction이란 이름으로 존재
- Azure에는 Azure Function이란 이름으로 존재
Redshift
1. Redshift: Scalable SQL 엔진
- 2 PB까지 지원(하지만, 최대 용량 사용하는 만큼이나 여러 이슈가 있음)
- Still OLAP (응답속도가 빠르지 않기 때문에 프로덕션 데이터베이스로 사용 불가)
- Columnar storage
- 대부분의 프로덕션 데이터베이스 관련 SQL들이 레코드 별로 저장하는 반면 컬럼 별로 저장
- 컬럼별로 압축, 추가, 삭제가 가능하며 그 결과 속도가 아주 빠름
- 벌크 업데이트 지원
- 레코드가 들어있는 파일을 CSV, JSON에 보과했다가 S3로 복사 후 COPY 커맨드로 Redshift로 일괄 복사
- 고정 용량/비용 SQL엔진
- 다른 데이터 웨어하우스처럼 Primary Key Uniqueness를 보장하지 않음(속도 때문)
- Redshift는 Postgresql 8.x와 SQL이 호환됨(전부는 아님)
- Postgresql 8.x를 지원하는 툴이나 라이브러리로 엑세스 가능(JDBC/ODBC)
- 다시 한번 SQL이 메인 언어라는 점 명심
2. Redshift Schema (폴더) 구성
- CREATE SCHEMA는 admin 권한을 갖고있는 사람만 가능한 명령어이다
- raw_data 는 주로 데이터 엔지니어가 analytics는 분석가가, adhoc은 테스트용으로 사용한다