ETL - Introduction to Data Engineering 220610

Expert Inpyo·2022년 6월 10일
0

ETL

추츨, 변환 및 로드

E, Extract, 데이터 추출

데이터 처리에 적합하지 않은 영구 저장소의 데이터를 메모리로 추출하는 것

영구 저장소 ex) Amazon S3, SQL Database

데이터 변환을 시작하기 전에 필요한 단계

추출할 수 있는 파일은 많음

  1. Text files

    • 비구조화

      • Plain Text
    • Flat files

      • 행 : record

      • 열 : attribute

      • 일종의 표 형식

      • 일반적으로 쉼표, 탭 등으로 구분된 파일들(.csv 등)

  1. JSON (JavaScript Object Notation)

    • 반구조화

      • 숫자, 문자열, Boolean, Null 총 네 가지 형태의 데이터 유형으로 구성됨
    • 복합 데이터 유형(배열 array, 객체 object)

    • Python dict와 매핑 상당히 우수함

    • 인기 있음, why? 최근 많은 웹 서비스가 위 데이터 형식을 사용해 데이터를 전달하기 때문

Data on Web

client -------- request --------> server

client <-------- reponse with data -------- server

일부 서버는 json 형식으로 데이터를 제공함 => API : application programming interface

Data in databases
  • Applications databases
    • 웹 서비스 같은 application이 사용함
    • 일반적으로 많은 transaction 포함하도록 최적화 되어있음
    • transaction은 데이터베이스에서 행(레코드)를 변경하거나 삽입함
    • OLTP(Online Transaction Process)
    • 행 지향적, 시스템이 행당 데이터를 추가함
  • Analytical databases
    • 분석에 최적화된 데이터베이스
    • OLAP(Online Analytical Database)
    • 열 지향적

T, Transform, 데이터 변환

포괄적으로 병렬 컴퓨팅을 사용해 데이터를 변환하는 것을 추천함

데이터 엔지니어는 어떤 변환을 시도할까?

  1. 특정 속성(attribute)을 선택함
  2. 코드 값의 번역(translation of code values)
  3. 변환 단계에서 데이터 유효성 검사
  4. 단일 열에서 여러 열로 분할
  5. 다양한 소스로부터의 결합

L, Load, 데이터 로드

위에서 언급한 데이터베이스 종류에 맞게 최적화 시켜야한다.

(Analytics vs Applications)

  • Analytics
    • 복잡한 집계 쿼리
    • OLAP
  • Applications
    • 많은 transactions
    • OLTP

Applications는 레코드 당 데이터를 저장 => 소규모 트랜잭션에서 새 행을 쉽게 추가할 수 있음

Analytics는 열당 데이터를 저장 => 분석에 최적화(Why? 쿼리는 대부분 테이블의 작은 열 하위 집합에 관한 것 => 따라서, 열 당 데이터를 저장하면 이런 특정 열을 반복하여 쿼리를 해결하는 것이 더 빠르게 된다.)

=> 이런 열 지향 데이터베이스는 병렬화에 좀 더 적합함

MPP Database(Massively Parallel Processing Database)

대규모 병렬 처리 데이터베이스

쿼리는 단일 노드이지만 하위 작업으로 분할되며 여러 노드에 분산된다.

Amazon Redshift / Azure SQL Data Warehouse / Google BigQuery가 위에 해당함

profile
도전! 데이터 엔지니어

0개의 댓글