-
[11주차 - Day1] Redshift 소개교육/프로그래머스 인공지능 데브코스 2021. 8. 7. 10:42728x90
SQL을 이용한 데이터 분석
1. SQL과 데이터베이스 소개
1. SQL의 중요성
모든 데이터 직군에게 필요한 기술, 데이터 요약과 분석을 위해 필요
데이터 직군 : 데이터 엔지니어/분석가/과학자
2. 관계형 데이터베이스란?
구조화된 데이터를 저장하고 질의할 수 있도록 해주는 저장장치
엑셀 스프레드시트 형태의 테이블을 생각하면 쉬움
대표적 관계형 데이터베이스
- 프로덕션 데이터베이스=OLTP(OnLine Transaction Processing)
- 웹서비스, 모바일앱과 바로 연동이 돼서 해당 서비스에 필요한 정보를 저장하고 읽어오는데 사용
- 빠른 속도에 집중, 서비스에 필요한 정보 저장
- ex)MySQL, PostgreSQL, Oracle,...
- 데이터 웨어하우스=OLAP(OnLine Analytical Processing)
- 데이터 분석 혹은 모델 빌딩 등을 위한 데이터 저장
- 프로덕션 데이터베이스를 복사해서 데이터 웨어하우스에 저장
- 처리 데이터 크기에 집중
- ex)Redshift, Snowflake, BigQuery, Hive, ...
프로덕션 데이터베이스만 있으면 생기는 문제?
서비스에 연동되어 있는 데이터베이스이기 때문에 SQL쿼리를 날려서 오래 걸리게 되면 서비스도 느려짐
관계형 데이터베이스의 구조
가장 밑단에 테이블들(≒엑셀의 시트)이 존재, 테이블들은 데이터베이스(=스키마, ≒엑셀의 파일)라는 폴더 밑으로 구성
테이블의 구조(=테이블 스키마)
- 테이블은 레코드들로 구성(행)
- 레코드는 하나 이상의 필드(열)로 구성
- 필드(열)은 이름과 타입, 속성(primary key)으로 구성
3. SQL이란?
=Structured Query Language
관계형 데이터 베이스에 있는 데이터(테이블)를 질의하거나 조작하는 프로그래밍 언어
SQL의 종류
- DDL(Data Definition Language) : 테이블 구조 정의
- DML(Data Manipulation Language) : 테이블에서 원하는 레코드들을 읽어오는 질의언어, 테이블에 레코드를 추가/삭제/갱신해주는데 사용하는 언어
SQL의 단점
- 구조화된 데이터를 다루는데만 최적화가 되어있음
- 비구조화된 데이터도 다룰수는 있으나 제약이 심함 대부분의 관계형 데이터베이스들이 플랫한 구조만 지원(구글 빅쿼리는 nested structure(ex.JSON)를 지원)
- 비구조화된 데이터를 다루는데 Spark, Hadoop과 같은 분산 컴퓨팅 환경이 필요
- 관계형 데이터베이스마다 SQL문법이 조금씩 상이
데이터 모델링 방법
- Star schema
- 프로덕션 데이터베이스용 관계형 데이터 베이스에서 주로 사용
- 데이터를 논리적 단위로 나눠 저장하고 필요시 조인, 스토리지 낭비가 덜하고 업데이트가 쉬움
- Denormalized schema
- 데이터 웨어하우스에서 주로 사용
- 단위 테이블로 나눠 저장하지 않음으로 별도의 조인이 필요없는 형태->스토리지를 더 사용하지만 조인이 필요없기때문에 빠른 계산 가능
4. 데이터 웨어하우스란?
- 회사에 필요한 모든 데이터를 저장
- 프로덕션 데이터베이스와는 별도
- 고객이 아닌 내부 직원을 위한 데이터베이스
- ETL 혹은 데이터 파이프라인 : 외부에 존재하는 데이터를 읽어다가 데이터 웨어하우스로 저장해주는 코드들이 필요
데이터 인프라
->데이터 순환구조
5. Cloud와 AWS소개
클라우드란? 컴퓨팅 자원(hw, sw 등)을 네트워크를 통해 서비스 형태로 사용하는 것
자원(ex.서버)을 필요한만큼 실시간으로 할당하여 사용한만큼 지불
클라우드 컴퓨팅이 없었다면
- 서버/네트워크/스토리지 구매와 설정을 직접 수행
- Peak time을 기준으로 Capacity planning을 해야함->놀고 있는 자원들이 높게 되는 현상이 발생해서
클라우드 컴퓨팅의 장점
- 초기 투자 비용이 줄어듦 : CAPEX(Capital Expenditure)vsOPEX(Operating Expense)
- 리소스 준비를 위한 대기 시간 대폭 감소
- 노는 리소스 제거로 비용 감소
- 글로벌 확장 용이
- 소프트웨어 개발 시간 단축
AWS
가장 큰 클라우드 컴퓨팅 서비스 업체
AWS 서비스 종류
- EC2(Elastic Compute Cloud) : AWS의 서버 호스팅 서비스
- S3(Simple Storage Service) : AWS의 대용량 클라우드 스토리지 서비스, 웹 하드디스크
- 기타 중요 서비스-Database : RDS(Relational Database Service), DynamoDB, Redshift, ElasticCache, Neptune(Graph database), ElasticSearch, MongoDB
- 기타 중요 서비스-AI&ML : SageMaker(딥러닝, 머신러닝 end-to-end framework), Lex(Conversational interface, 챗봇서비스), Polly(Text to Speech Engine), Rekognition(Image Recognition Service)
- 기타 중요 서비스 : Amazon Alexa(아마존 보이스봇 플랫폼), Amazon Connect(콜센터 구현이 쉬워짐), Lambda(서비스 구현)
6. Redshift소개
- Scalable SQL 엔진
- 데이터 웨어하우스로 사용
- Columnar storage : 컬럼별 압축이 가능, 컬럼을 추가/삭제하는 것이 매우 빠름
- 벌크 업데이트 지원
- 고정 용량/비용 SQL엔진
- 다른 데이터 웨어하우스처럼 primary key uniqueness를 보장하지 않음
- Postgresql 8.x와 SQL이 호환됨
'교육 > 프로그래머스 인공지능 데브코스' 카테고리의 다른 글
[11주차 - Day3] GROUP BY, AGGREGATE, CTAS (0) 2021.08.07 [11주차 - Day2] DDL, DML, SELECT (0) 2021.08.07 [10주차 - Day4] RNN(Recurrent Neural Network) (0) 2021.08.01 [10주차 - Day3] Deep Learning 최적화 (0) 2021.07.28 [10주차 - Day2] CNN Models (0) 2021.07.17 - 프로덕션 데이터베이스=OLTP(OnLine Transaction Processing)