ETL과 ELT
데이터 파이프라인의 세부 단계에는 세가지가 있다. Extract(추출), Transform(변환), Load(적재)이다. 세 단계의 순서를 어떻게 하느냐에 따라 ETL과 ELT로 나뉜다.
- ETL
전통적인 데이터 파이프라인으로 데이터를 소스에서 추출하고, 회사 내부의 컴퓨팅 자원을 이용해 데이터를 변환하여 데이터베이스나 웨어하우스 저장하는 방식이다. 오랫동안 쓰여 왔고 변환된 데이터를 간편하게 쓸 수 있다는 장점이 있지만, 데이터 인프라가 변경되면 파이프라인을 다시 만들어야 하는 단점이 있다. 또 필요이상의 데이터를 미리 변환하는 바람에 컴퓨팅 자원이 낭비될 수 있다.
- ELT
데이터의 저장과 분석을 동시에 할 수 있도록 컴퓨팅 자원이 구비된 웨어하우스의 등장으로 새롭게 생겨난 파이프라인 구조이다. 일단 여러 소스에서 데이터를 추출하면 저장한다음, 분석이나 모델에 적용하기 쉽도록 데이터를 변환한다. 이게 가능한 이유는 데이터 웨어하우스는 열 기반 데이터베이스를 사용하기 때문이다.
행 기반 데이터베이스 vs 열 기반 데이터베이스
출처 : https://www.couchbase.com/blog/ko/columnar-store-vs-row-store/
Column-Store vs. Row-Store: What’s The Difference?
This blog post from Couchbase provides an overview of the differences between columnar and row-oriented databases. Learn what works for your application.
www.couchbase.com

다음과 같은 자료를 데이터베이스에 저장한다고 가정하자.
- 행 기반 데이터베이스
MySQL, PostgreSQL 처럼 평소 사용하는 데이터베이스는 행을 기준으로 디스크에 저장한다. 테이블의 행을 레코드(Record)라 하는데, 디스크에는 한 레코드가 일렬로 저장된다. 하나의 행에는 여러 개의 열 정보가 들어간다.
Ann Boise 16 | Con Denver 15 | Kian Laramie 21 | Gene Hanford 0 (이런식으로 디스크에 순서대로 저장)
쇼핑몰에서 회원에 대한 정보를 저장하거나, 주문 내역을 저장한다면 이러한 저장 방식이 효율적일 수 있다. 문제는 데이터 분석을 위해 열 한개의 모든 데이터를 디스크에서 메모리로 가져올 때다. 데이터베이스에 있는 데이터를 페이지로 가져오기 때문에 모든 데이터 페이지를 메모리로 가져와야 한다. 이는 컴퓨팅 자원의 낭비이다.
- 열 기반 데이터베이스
Amazon Redshitt, Snowflake와 같은 데이터 웨어하우스들은 열을 기반으로 데이터를 저장한다.
Ann Con Kian Gene | Boise Denver Laramie Hanford | 16 15 21 0
이렇게 저장하면 한 디스크 공간에 같은 열의 데이터들이 모여있게 된다. 분석을 위해 하나의 데이터 열을 가져올 때 소수의 페이지만 메모리로 가져오면 되기 때문에 행 기반 데이터베이스보다 더 효율적이다. 웨어하우스의 등장으로 ELT라는 비용 효율적인 파이프라인이 등장했다.
ELT의 세부 종류
- EtLT
작은 부분의 변환 단계가 들어가 있는 구조다. 이 과정에는 누락 데이터 검증, 보안 등을 검사한다.
- 데이터 분석 및 데이터 사이언스용 ELT
ELT의 등장으로 엔지니어는 분석에 사용될 데이터 모델에 대해 신경을 덜 쓰게 되었다. 엔지니어는 EL에 집중하고 분석가는 자기가 가진 툴을 이용해 T를 수행한다.
- 머신러닝 ELT
단순히 분석을 넘어 머신 러닝 모델을 설계하고 배포하는 것까지 데이터 엔지니어링에 포함될 수 있다. 이 경우 데이터 파이프라인과 별개로 머신러닝 과정에 집중된 파이프라인을 따로 설계해야 한다.
'Data Engineering' 카테고리의 다른 글
| [Airflow] Slack을 이용한 Airflow 실습 - 3 (Slack Webhook) (0) | 2025.07.01 |
|---|---|
| [Airflow] Slack을 이용한 Airflow 실습 - 2 (Airflow와 DAG) (0) | 2025.06.25 |
| [Airflow] Slack을 이용한 Airflow 실습 - 1 (Docker와 Airflow 연동) (0) | 2025.06.24 |
| [데이터 파이프라인] 1. 데이터 파이프라인 소개 및 설명 (0) | 2025.06.16 |
| [Spark] RDD는 무엇인가? (0) | 2025.03.17 |