[DB] ETL(Extract, Transform, Load)란?
etl
관련 카테고리: Database 요약 설명: ETL은 그냥 단어 자체를 풀이하자면 추출(Extract), 변환(Transform), 적재(Load)이다. 한 곳에 저장된 데이터를 필요에 의해 다른 곳으로 이동하는 것을 의미한다.
참고 문서
ETL은 어려운 의미가 전혀 아니다. 그냥 용어를 들어본 적이 없을 뿐이다. 표현의 차이정도라고 생각한다.
단어뜻은 Extract, Transform, Load의 약자로 추출, 변환, 적재이다. 데이터베이스로 따지만 Select & 변환 & (다른 DB에) Insert 가 된다.
시나리오
어느 시점에서 ETL이 사용되는 현실적인 시나리오로 살펴보자.
만약, 이런 yyyy, mm, dd, ss, HH, mm, ss) 각 컬럼별로 저장된 테이블이 있다.
나는 어떤 분석 프로그램을 돌릴려고 한다. 이때, 필요한 테이블의 조건은 yyyy, mm, ss, HHmm 이다. (시간, 분은 합쳐서 4자리가 필요하다)
이때, 위의 테이블을 만드는 과정이 ETL이다.
1. 기존 테이블에서 추출(Extract)
기존 테이블에서 데이터를 추출(select) 하면된다. 초는 필요없으니 버리고, 연월일시분만 조회해서 변수에 잘 넣어둔다.
// 슈도코드
String year = select(년);
String month = select(월);
String day = select(일);
String hour = select(분);
String minute = select(초);
2. 추출한 데이터 변환(Transform)
분석 프로그램에서 원하는 컬럼으로 변환하는 과정이다. 따로 저장된 변수에서 day
, minute
를 합친다.
// 슈도코드
String hourAndMinute = hour + minute;
3. 변환한 데이터 적재(Load)
변환한 데이터를 적재하면 된다.
// 슈도코드
insert(year);
insert(month);
insert(day);
insert(hourAndMinute);
결론
허접하지만, 간단한 ETL을 직접해봤다. 오픈소스나 상용의 ETL을 제공하는 소프트웨어는 이 과정을 좀더 편하게 도와주는 역할을 할 뿐, 너무 복잡하게 생각하지 말자.
댓글남기기