1. 배움에 관하여
2. 관계형 데이터베이스
3. SQL
4. 데이터 웨어하우스
5. Cloud와 AWS
배움의 전형적인 패턴

-> what was I thinking? 단계에서 어떻게 하느냐가 중요.
- 가장 중요한 것은 버티는 힘
-> 즐기는 것이 중요- 내가 뭘 모르는지 생각해봐야한다
-> 막혔다는 생각이 들 때, 무엇을 모르는 지 계속 파고 들고 계속 자문을 해야함.
- 내가 어디서 막혔는 지 구체적으로 질문할 수 있는 능력을 길러야함
- 보통 일반적으로 가정이 잘못되었을 가능성이 높음
- 자문자답을 통해 아는 것이 무엇이고 모르는 것이 무엇인지 확실하게 알아가기
- 잘 하는 사람을 보고 기죽지 않기
배움의 발전은 tipping point를 거치면서 폭발하는 형태
발전이 더딘 기간을 즐기는 자세가 필요!
일반적으로
백엔드 개발자가 프로덕션 데이터베이스를 사용하고,
데이터 엔지니어가 데이터 웨어하우스를 사용함-> 보통 프로덕션 데이터베이스를 복사해서 주기적으로 데이터 웨어하우스에 저장.
( 프로덕션 데이터베이스에서 데이터 분석을 진행할 경우, 쿼리를 실행시키다가 서비스에 영향을 미칠 수 있다. -> 그렇기에 별도의 DB가 필요. )
테이블들의 수가 많아질 수록 관리가 힘들어지기에, 용도를 짐작할 수 있도록 폴더를 만들어 이 테이블들을 관리
-> 이때, 이 폴더를 데이터베이스(혹은 스키마)라고 부름( 관계형 데이터베이스마다 데이터베이스라고 부르기도하고 스키마라고 부르기도 함 )
e.g.)
| 컬럼 | 타입 |
|---|---|
| userId | int |
| sessionId | varchar(32) |
| channel | varchar(32) |
SQL이란?
SQL : Structured Query Language
- 관계형 데이터베이스에 있는 데이터(테이블)을 질의하거나 조작해주는 언어
- 1970년대 초반에 IBM이 개발한 구조화된 데이터 질의 언어
DDL (Data Defintion Language)
DML (Data Manipulation Language)
즉, SQL의 단점은 비구조화된 데이터를 처리하지 못한다는 것이고,
이를 해결하기 위해선, Spark, Hadoop과 같은 분산 컴퓨팅 환경이 필요하다.
어떤 형태로 데이터를 모델링을 할 것이냐 ( 데이터를 어떻게 표현할 것이냐? )
Star schema
단점 :
다수의 테이블들을 특정 key 값을 가지고 mapping을 하는 join을 수시로 진행하기에 시간과 리소스의 소모가 상대적으로 크다.
Denormalized schema
데이터 웨어하우스에서 사용하는 방식
이는 스토리지를 더 사용하지만 조인이 필요 없기에 빠른 계산이 가능
( 즉, update는 불리하지만 search에는 강하다 )
단점 : 스토리지가 많이 필요하고, 업데이트가 비효율적
ex) 매장 이름이 변경된 경우,
테이블을 전부 스캔한 후, 모든 레코드들의 매장 이름을 전부 변경해주어야한다.
데이터 웨어하우스 : 회사에 필요한 모든 데이터를 저장
SQL 기반의 관계형 데이터베이스
OLAP : OnLine Analytical Processing
-> Data Warehouse
OLTP : OnLine Transaction Processing
-> Production DB
=> 데이터 웨어하우스, ETL 등을 통틀어 데이터 인프라라고 부름
처음에는 ETL, 데이터 웨어하우스만으로 데이터 인프라가 충분했지만,
비구조화된 데이터가 늘어남에 따라서 많은 양의 비구조화된 데이터를 proceesing을 위한 Spark와 같은 대용량 분산처리 시스템이 일부로 추가되었다.
=> 데이터 인프라 : ETL, 데이터 웨어하우스, Spark와 같은 대용량 분산처리 시스템
Cloud의 정의
Cloud Computing이 없었다면?
Cloud Computing의 장점
초기 투자 비용이 크게 줄어듬
재무 팀의 경우,
연초에 미리 쓸 돈을 가정하고 계획을 세우기에 CAPEX 모델을 선호하지만, Cloud Coumputig의 경우 매달 비용이 소모되는 OPEX모델로 바뀌기에 향후 얼마나 돈이 더 발생할지 예상을 하기 힘듬
리소스 준비를 위한 대기시간 대폭 감소
노는 리소스 제거로 비용 감소
글로벌 확장 용이
소프트웨어 개발 시간 단축
AWS 소개
EC2 - Elastic Compute Cloud
AWS의 서버 호스팅 서비스
세 가지 종류의 구매 옵션
| 구매 옵션 | 설명 |
|---|---|
| On-Demand | 시간당 비용을 지불하며 가장 흔히 사용하는 옵션 |
| Reserved | 1년이나 3년간 사용을 보장하고 1/3정도에서 40% 디스카운트를 받는 옵션 (오래 쓰는 경우) |
| Spot Instance | 일종의 경매방식으로 놀고 있는 리소스들을 비용으로 사용할 수 있는 옵션 (On-Demand 보다 조금 싸게) |
S3 - Simple Storage Service
AWS의 대용량 클라우드 스토리지
(웹 하드 서비스)
S3는 데이터 저장관리를 위해 계층적 구조를 제공
글로벌 namespace를 제공하기 때문에 톱레벨 디렉토리 이름 선정에 주의.
S3에서는 디렉토리를 버킷(Bucket)이라 부름
버킷이나 파일별로 엑세스 컨트롤 가능
비용
기타 중요 서비스 - AI & ML Services
SageMaker
DeepLearning 혹은 ML을 통해서 모델을 만들고, 그 모델을 테스트하고 최종적으로 API 형태로 deploy까지 자동화해주는 framework
Lex
Polly
Rekognition
Amazon Alexa
Amazon Connect
Lambda
Event-driven, Serverless computing engine
보통 API를 제작할 때,
EC2로 서버를 론칭하고 내부에서 코딩을 통해 API를 구동시킬 수 있는 Framework를 만들어야하는데,Serverless Computing을 사용하면,
API 자체의 로직만 구현하면 나머지는 탄력적인 capcity 운영을 Amazon에서 대신 해줌
서비스를 구현을 위해 EC2를 론치할 필요가 없다.
Google Cloud -> Cloud Function이란 이름으로 존재
Azure -> Azure function이란 이름으로 존재
SQL 기반의 DB
최대 2 PB까지 지원
Still OLAP
( 응답 속도가 빠르지 않기에 프로덕션 데이터베이스로 사용불가 -> 오로지 데이터 웨어하우스 용 )
Columnar storage
대부분의 DB는 레코드를 저장할 때, 레코드 별로 저장을 한다.
하지만 RedShift나 다른 웨어하우스 기반의 DB들은 Column기반으로 저장을 한다.
벌크 업데이트 지원
고정 용량/비용 SQL 엔진
( Scalability 관점에서는 좋지 않음 )
- vs. Snowflake vs. BigQuery
( 가변 용량 가변 비용 )
다른 데이터 웨어하우스처럼 primary key uniquesness를 보장하지 않음
primary key uniquesness를 보장하게 된다면, 레코드가 추가될 때마다 체크를 해야함 -> 속도가 저하됨
그렇기에 개발자가 웨어하우스 내에서가 아닌 다른 Operation을 사용해서 primary key uniquesness를 보장을 해야함
RedShift는 Postgresql 8.x와 SQL이 호환됨
Redshift Options
Dense Storage (Storage에 초점을 맞춘 옵션)
-> Large Storage, HDD
Dense Compute ( 연산에 초점을 맞춘 옵션, 데이터가 작은 경우 )
-> Small Storage, SDD, 가장 저렴
Manage Storage ( 위 옵션 2개를 모두 챙기는 옵션 )
-> Large Storage, SDD, 가장 비쌈
Redshift Schema ( 폴더 ) 구성
CREATE SCEMA raw_data;)CREATE SCEMA analytics;)CREATE SCEMA adhoc;)RedShift 액세스 방법
Google Colab
Postegresql 8.x와 호환되는 모든 툴과 프로그래밍 언어를 통해 접근 가능