주니어 데이터 엔지니어 우솨's 개발일지

데이터 엔지니어링 21일차 TIL 본문

데브코스

데이터 엔지니어링 21일차 TIL

우솨 2024. 4. 22. 17:32

학습 내용

관계형 데이터베이스
구조화된 데이터를 저장하고 질의할 수 있도록 해주는 스토리지
- 엑셀 스프레드시트 형태의 테이블로 데이터를 정의하고 저장
- 컬럼(열)과 레코드(행)이 존재

대표적인 관계형 데이터베이스


프로덕션 데이터베이스

: MySQL, PostgreSQL, Oracle 등
- OLTP(OnLine Transaction Processing)
- 빠른 속도에 집중, 서비스에 필요한 정보 저장

데이터 웨어하우스

: Redshift, Snowflake, BigQuery, Hive 등
- OLAP(Online Analytical Processing)
- 처리 데이터 크기에 집중, 데이터 분석 혹은 모델 빌딩 등을 위한 데이터를 저장
- 보통 프로덕션 데이터베이스를 복사해서 데이터 웨어하우스에 저장
- 내부 직원을 위한 데이터베이스
Redshift - 고정비용 옵션
Big Query, Snowflake - 가변비용 옵션
- ETL, 데이터 파이프라인 : 외부에 존재하는 데이터를 읽어다가 데이터 웨어하우스로 저장해주는 것

관계형 데이터베이스의 구조
- 관계형 데이터베이스는 2단계로 구성된다.
- 가장 밑단에는 테이블들이 존재(엑셀의 시트에 해당)
- 테이블들은 데이터베이스(혹은 스키마)라는 폴더 밑으로 구성(엑셀에서는 파일에 해당)

테이블의 구조
- 테이블은 레코드(행)들로 구성
- 레코드는 하나 이상의 필드(컬럼, 열)로 구성
- 필드(컬럼)는 이름과 타입과 속성(Primary key)으로 구성된다.

SQL(Structured Query Language)
: 관게형 데이터베이스를 조작하는 프로그래밍 언어
- 1970년대 초반에 IBM이 개발한 구조화된 데이터 질의 언어이다
- 모든 대용량 데이터 웨어하우스는 SQL 기반으로 데이터 분야에서 일하고자 한다면 반드시 익혀야할 기본 기술이다.

SQL의 단점
- 정규표현식을 통해 비구조화된 데이터를 어느정도 다루는 것은 가능하나 제약이 심하다
- 많은 관계형 데이터베이스들이 플랫한 구조만을 지원한다.
- 비구조화된 데이터를 다루는데에 Spark, Hadoop같은 분산 컴퓨팅 환경이 필요도가 증가했다. 
  : sql만으로는 비구조화 데이터를 처리하지 못한다.

- 테이블 정의를 위한 DDL(Data Definition Language)
  : 테이블의 구조를 정의하는 언어 
- 테이블 데이터 조작/질의를 위한 DML(Data Manipulation Language)
  : 테이블에서 원하는 레코드들을 읽어오는 질의 언어
    테이블에 레코드를 추가/삭제/갱신하는데 사용하는 언어

데이터 모델링 방법 
1. Star schema

: 프로덕션 DB용 관계형 데이터베이스에서는 보통 스타스키마를 사용한다.
장점
- 데이터를 논리적 단위로 나눠 저장하고 필요시 조인, 스토리지의 낭비가 덜하고 업데이트가 쉽다.
단점
- 디테일한 부분을 보기 위해서 다른 테이블들과의 조인이 필요하다.

2. Denormalized schema

: 데이터 웨어하우스에서 사용하는 방식이다.
- 단위 테이블로 나눠 저장하지 않음으로 별도의 조인이 필요 없는 형태이다.
장점 
-조인이 필요없기에 빠른 계산이 가능하다.
단점
- 더 많은 스토리지를 필요로 한다.

데이터 인프라란?
- 데이터 엔지니어가 관리함

Cloud

:컴퓨팅 자원(하드웨어, 소프트웨어 등)을 네트웍을 통해 서비스 형태로 사용하는 것.
- 자원을 필요한만큼 실시간으로 할당하여 사용한만큼 지불
- 탄력적으로 필요한만큼의 자원을 유지하는 것이 중요
장점
- 초기 투자비용이 크게 줄어든다
CAPEX(Capital Expenditure) vs OPEX(Operating Expense)
- 리소스 준비를 위한 대기시간 대폭 감소
- 글로벌 확장 용이

AWS
- 가장 큰 플라우드 컴퓨팅 서비스 업체
- 2002년 아마존의 상품데이터를 API로 제공하면서 시작
- 최근 들어 ML/AI 관련 서비스들도 시작

Redshift

: Scalable SQL 엔진
- 2 PetaByte까지 지원
- Still OLAP : 응답속도가 빠르지 않기 때문에 프로덕션 데이터베이스로 사용이 불가능하다.
- Columnart storage : 컬럼별 압축이 가능, 컬럼의 추가 삭제가 아주 빠르다.
- 벌크 업데이트 지원 : 레코드가 들어있는 파일을 S3로 복사 후 COPY커맨드로 Redshift로 일괄 복사
- 고정 용량/비용 SQL 엔진 
- 다른 데이터 웨어하우스처럼 primary key uniqueness를 보장하지 않는다. - 개발자가 직접 보장해야한다.
  ( 프로덕션 데이터베이스들은 보장함 )
- Postgresql 8.x와 sql이 호환이 가능하다.(단 모든 기능을 지원하지는 않는다.)
- SQL이 메인언어이기 때문에 테이블 디자인이 아주 중요하다.

느낀 점

sql은 자격증 공부를 할 때 지나가면서 잠깐 배웠었는데 모든 데이터 분야에서 사용할만큼 중요할 거라는 생각은 못 했었다. 오늘 강의를 들으면서 조금 더 공부 해둘걸 하는 후회가 조금 생긴다.

이제야 aws에 대해서 배울 수 있을 거란 생각에 기대도 되지만 잘 해낼 수 있을지 걱정도 크다.