데이터 웨어하우스와 SQL과 데이터분석
주요 메모 사항
데이터 관련 3개의 직군, 필요한 기술
- 데이터 엔지니어
- 파이썬, 자바, 스칼라
- SQL, 데이터베이스
- ETL/ELT (Airflow, DBT)
- spark, Hadoop
- 데이터 분석가
- SQL, 비지니스 도메인에 대한 지식
- 통계 (AB 테스트 분석)
- 데이터 과학자
- 머신러닝
- SQL, 파이썬
- 통계
관계형 데이터베이스
구조화된 데이터를 저장하고 질의할 수 있도록 해주는 스토리지
- 데이터가 구조화만 된다고 가정하면 가장 좋은 기술 옵션
- 엑셀 스프레드시트 형태의 테이블로 데이터를 정의하고 저장
- 테이블에는 컬럼(열)과 레코드(행)가 존재
- 관계형 데이터베이스를 조작하는 프로그래밍 언어가 SQL
대표적 관계형 데이터베이스
- 프로덕션 데이터 베이스 : MySQL, PostgreSQL, Oracle
- OLTP (Online Transaction Processing)
- 빠른 속도에 집중, 서비스에 필요한 정보 저장
- 데이터 웨어하우스 : Redshift, Snowflake, BigQuery, Hive
- OLAP (OnLine Analytical Processing)
- 처리 데이터 크기에 집중. 데이터 분석 혹은 모델 빌딩등을 위한 데이터 저장
- 보통 프로덕션 데이터베이스를 복사해서 데이터 웨어하우스에 저장
관계형 데이터베이스의 구조
- 관계형 데이터 베이스는 2단계로 구성됨
- 가장 밑단에는 테이블들이 존재 (테이블은 엑셀의 시트에 해당)
- 테이블들은 데이터베이스(혹은 스키마)라는 폴더 밑으로 구성(엑셀에서는 파일)
관계형 데이터베이스의 구조
- 테이블의 구조 (테이블 스키마)
- 테이블은 레코드들로 구성 (행)
- 레코드는 하나 이상의 필드(컬럼)로 구성 (열)
- 필드는 이름과 타입과 속성(PK 등)으로 구성
SQL이란 (Structured Query Language)
- 관계형 데이터베이스에 있는 데이터를 질의하거나 조작해주는 언어
- 모든 대용량 데이터 웨어하우스는 SQL 기반
- Spark나 Hadoop도 예외는 아님
- 데이터 분야에서 일하고자 한다면 반드시 익혀야할 기본 기술
단점
- 구조화된 데이터를 다루는데 최적화가 되어있음
- 정규표현식을 통해 비구조화된 데이터를 어느 정도 다루는 것은 가능하나 제약이 심함
- 많은 관계형 데이터베이스들이 플랫한 구조들만 지원함 (JSON X)
- 비구조화된 데이터를 다루는데 Spark, Hadoop과 같은 분산 컴퓨팅 환경이 필요해짐
Star schema
- production DB용 관계형 데이터베이스에서 일반적으로 사용함
- 데이터를 논리적 단위로 나눠 저장하고 필요시 조인. 스토리지의 낭비가 덜하고 업데이트가 쉬움
Denormalized schema
- 데이터 웨어하우스에서 사용하는 방식
- 단위 테이블로 나눠 저장하지 않음으로 별도의 조인이 필요없는 형태를 말함
- 스토리지를 더 사용하지만 조인이 필요 없기에 빠른 계산이 가능
데이터웨어하우스란?
- 회사에 필요한 모든 데이터를 저장
- 여전히 SQL 기반의 관계형 데이터베이스, 프로덕션 데이터베이스와는 별도여야함
- 데이터 웨어하우스는 고객이 아닌 내부 직원(데이터 팀원)을 위한 데이터베이스, 처리속도가 아닌 처리 데이터의 크기가 더 중요해짐
- ETL 혹은 데이터 파이프라인
- 외부에 존재하는 데이터를 읽어다가 데이터 웨어하우스로 저장해주는 코드
데이터 인프라
- 데이터 엔지니어가 관리, 한단계 더 발전하면 Spark과 같은 대용량 분산 처리 시스템이 일부 추가됨
Cloud와 AWS
클라우드의 정의
클라우드의 의미는 컴퓨터 통신망이 복잡한 네트워크 및 서버 구성 등을 알 필요 없이 구름과 같이 내부가 보이지 않고, 일반 사용자는 이 복잡한 내부를 굳이 알 필요도 없이 어디에서나 구름 속의 컴퓨터 자원으로 자기가 원하는 작업을 할 수 있다는 것이다. 이른바 동일한 체험을, 인터넷이 연결된 어디에서나 보장해주는 것이다.
- 컴퓨팅 자원을 네트웍을 통해 서비스 형태로 사용하는 것.
클라우드 컴퓨팅의 장점
- 초기 투자 비용이 크게 줄어듬
- 리소스 준비를 위한 대기시간 대폭 감소
- 노는 리소스 제거로 비용감소
- 글로벌 확장이 용이
- 소프트웨어 개발 시간 단축 (SaaS)
클라우드 컴퓨팅이 없었다면?
- 서버, 네트웍, 스토리지 구매와 설정등을 직접 수행해야 함
- 데이터센터 공간을 직접 확보
- Peak time을 기준으로 Capacity planning을 해야함
- 직접 운영비용 vs 클라우드 비용
AWS
- Service 중에 EC2, S3 정도는 알아두자
- 검색하면 Service에 대한 정보가 많음
Redshift : Scalable SQL 엔진
- 2PB 까지 지원
- Still OLAP - 응답속도가 빠르지 않기 떄문에 프로덕션 데이터베이스로 사용불가
- Columnar storage
- 컬럼별 압축이 가능
- 컬럼을 추가하거나 삭제하는 것이 아주 빠름
- 벌크 업데이트 지원 - 레코드가 들어있는 파일을 S3로 복사 후 COPY 커맨드로 Redshift로 일괄 복사
- 고정 용량/비용 SQL 엔진, vs Snoflake vs BigQuery
- 다른 데이터 웨어하우스 처럼 primary key uniqueness를 보장하지 않음
- -> 시간이 오래걸려서? 계속 check해야 하는 부하
- 이는 웨어하우스에서 보장하지 않으니, 데이터 엔지니어가 보장해줘야함,
- 프로덕션 데이터베이스들은 보장
Postgresql 8.x와 SQL이 호환됨
- 다만 Postgresql의 모든 기능을 지원하지는 않음
- 툴이나 라이브러리로 액세스 가능 -> JDBC/ODBC
- SQL이 메인 언어라는 것을 다시 한번 상기, -> 테이블 디자인이 아주 중요
공부하며 어려웠던 내용
DB와 Data Warehouse 등 지금까지 공부했던 내용을 다시 한 번 정리할 수 있는 수업이었다.
강의에서 EC2 가 언급되었는 학부생때 서버 수업을 들었던 기억이 났다. 이때 무료계정을 사용해 ec2로 서버 세팅부터 웹호스팅 하는 과정을 배웠었는데, 그 당시에는 EC2가 정확하게 뭔지는 모르면서 따라했던 실습이었는데 지금 생각해보니깐 좋은 경험을 했었던 것 같다.
'프로그래머스 데브코스-데이터 엔지니어 > TIL(Today I Learned)' 카테고리의 다른 글
05/10 23일차 데이터 웨어하우스와 SQL과 데이터분석 (3) (1) | 2023.05.10 |
---|---|
05/09 22일차 데이터 웨어하우스와 SQL과 데이터분석 (2) (1) | 2023.05.09 |
05/05 20일차 프로젝트 5일차 마지막 날 (0) | 2023.05.06 |
05/04 19일차 프로젝트 4일차 (0) | 2023.05.06 |
05/03 18일차 프로젝트 3일차 (0) | 2023.05.06 |