검수요청.png검수요청.png

ETL

해시넷
이동: 둘러보기, 검색

ETL(Extract, transform, load)은 컴퓨팅에서 데이터베이스 이용의 한 과정으로, 추출, 변환, 적재의 약어이다.

개요[편집]

ETL

 ETL(Extract, transform, load)이란, 다양한 소스 시스템(source system)으로부터 필요한 데이터를 추출(extract)하여 변환(transform) 작업을 거쳐 타깃 시스템(target system)으로 전송 및 로딩(loading)하는 모든 과정을 말한다. 방대한 규모의 운영 데이터를 얻기 위해서는 BI(business intelligence) 인프라가 OLTP(online transaction processing) 시스템에 부담을 주지 않으면서 분석을 위해 데이터를 수집, 이동, 변환 및 저장할 수 있어야 한다. 서로 다른 운영 시스템, 데이터베이스, 하드웨어 플랫폼 및 네트워크 환경을 고려하면 복잡하다. 그러므로 추출 루틴 개발, 비즈니스 로직 디버깅 및 데이터를 안전하게 로딩하여 사용자 요구사항을 만족시켜야 하는 IT부서에게는 상당한 부담이 된다. 또한 데이터 관리의 필요성도 증대되고 있다. 소스 시스템에서 획득되는 원본 데이터는 서버로 전송하도록 메타데이터를 생성하고, 서버로 전송된 소스 데이터와 타깃 테이블 간에 매핑을 생성한다. 그리고 세션을 생성한 후 실행하고, 모니터링한다. 데이터 모델링, 매핑(mapping), BI 제품 사이에 데이터 웨어하우스데이터마트와 관련된 모든 메타데이터가 통합관리되어야 한다.[1]

역사[편집]

컴퓨터 시스템이 단일 체제의 mainframe에서 분산 시스템으로 발전되기 시작하였을 때, BI(business intelligence)가 본격적으로 등장하였고, 최초의 ETL 솔루션이 소개되었다. 이후 새로운 ETL 세대들로 발전되어 나갔으며, 제 1세대, 2세대, 3세대로 구분할 수 있다.

제 1세대: ETL의 시작과 레거시 코드(Legacy code)의 생성[편집]

 최초의 ETL 툴은 ETL 프로세스들이 수행되던 플랫폼의 운영체제를 위한 고유의 코드를 생성하였다. 그 당시 데이터가 주로 메인프레임 상에 저장되었기 때문에 대부분의 제 1세대 제품들은 실제로 코볼을 생성하였다. 이들 제품들은 ETL 프로세스들을 생성하는 중앙집중화된 툴을 이용하고 그 코드를 해당 플랫폼에 보급함으로써 ETL 프로세스들은 이 일을 위해 수작업으로 프로그램을 작성하는 것보다 더 쉽게 만들었다. 성능은 고유적으로 컴파일된 코드의 상속된 성능 덕분에 대단히 우수하였지만, 이들 툴들은 다른 플랫폼 상에서의 심층적인 프로그래밍 지식을 요구하였다. 유지보수 또한 어려웠는데, 그것은 생성된 코드가 해당 다른 플랫폼들에 보급되었고 소스와 타깃의 유형에 따라 달랐기 때문이었다. 이 아키텍처는 가능한 최상의 성능을 제공하였는데, 이는 그 당시 데이터가 플랫 파일(flat file)과 계층형 데이터베이스로 저장되었고 레코드 레벨 액세스가 빨랐기 때문이었다. 이 방식은 메인프레임 상에서는 잘 작동하였지만, 관계형 데이터베이스 상에서 대량의 데이터 관리를 위해서는 성공적이지 않음이 입증되었다.[2]

제 2세대: Hub-and-spoke Engine[편집]

 모든 변환 과정들을 수행하는 페쇄형 엔진에 근거한 제2세대 ETL 툴들이 나타났다. 이 접근 방식은 서로 다른 플랫폼 상에서 상이한 언어를 사용해야만 하는 문제를 해결하였고, 단지 하나의 프로그래밍 언어(ETL 툴 자체의 언어)의 전문성을 요구하거나 그래픽 환경을 통한 보다 유연하고 용이한 코드의 자동 생성을 제공하였다. 그러나 새로운 문제가 발생하였는데 모든 변환을 수행하는 폐쇄형 엔진이 변환 과정의 병목이 되었다. 타깃으로 가기 위해 다양한 소스들로부터 오는 모든 데이터는 이 폐쇄형 엔진을 통과해야만 했다. 이것을 hub-and-spoke 구현 방식이라고 한다. hub가 필수적인 전송점이 되고 또한 정체점이 되기도 하였다.[2]

제 3세대: Data Integration Platform[편집]

 이전 두 세대의 각 장점을 활용하면서, 이들로부터 제기된 주요 과제들을 해결하고 또 점증하는 다양한 사용자 요구들을 수용하기 위해 ETL 툴의 새로운 세대가 등장하였다. 이 세대는 전체적으로 보다 세련되고 강화된 고도의 그래픽 환경, 강력한 성능, 데이터 웨어하우스, 데이터 마트의 구축을 지원하는 구현 기능, 개방적이고 확장된 메타데이터 관리 등의 포괄적인 다양성을 제공하며, 계속적으로 ETL의 추가적 능력들과 기능들을 빠르게 더해가고 있다. 데이터베이스 업체들 또한 이전 세대에서부터 SQL의 능력를 크게 개선하기 위해 많은 노력을 기울여 왔다. 이 개선의 결과로 ETL 툴은 고유의 SQL이나 ETL 프로세스들과 관련된 데이터베이스 언어를 통해 고도로 최적화된 ETL 프로세스들을 생성하고 실행하는 일이 가능하게 되었다. 또한 이를 기반으로 데이터베이스의 파워와 기능을 활용하는 분산 구조의 ELT(Extract, load, transform)도 등장하게 되었다. 이렇게 보다 세련된 구조와 기능을 갖추고 다양한 요구들을 발빠르게 수용하고 있는 현재의 ETL 툴들은 다목적의 데이터 통합 플랫폼(data integration platform)을 지향하고 있다.[2]

추출(extract)[편집]

  • ETL 프로세스의 입력데이터는 다양한 소스들(mainframe applicaiton, ERP applicaiton, CRM package, flat file, excel spreadsheet, message queue 등)로부터 추출될 수 있다.
  • 추출 방법으로는 JDBC, ODBC 기술의 이용, 둑자 code, flat file 생성, CDC(change data capture) 등이 있다.[1]

변형(transform)[편집]

  • 추출 후 데이터는 타깃 리포지토리(target repository)로 보내질 수 있도록 구체적인 비즈니스 로직(business logic)에 의해 수정되거나 변형된다.
  • 변형은 모든 데이터가 서로 연결될 수 있도록(예: 송장과 주문) 각 소스로부터의 데이터가 매핑, 정제, 일치화될 때에 발생된다. 일치화된 후 데이터는 회전시간(cycle time), 총 미불 수취계정 등의 분석을 위해 데이터 웨어하우스 내로 전송, 적재된다.
  • 변형을 수행하는 다양한 방식들이 있으며, 관련 작업도 다양하다. 재구성만 필요되는 경우도 있으나, 대부분의 ETL 조작은 중복을 제거하고 일관성을 확보하기 위한 정제를 포함한다. 또 타깃 리포지토리에 적합한 형태로 내용을 일관되게 변환시키기 위해 각 데이터 필드를 검사하고 규칙을 적용한다.(예: 성별의 ‘남’은 ‘M’, ‘male’, ‘1/0’으로 표현될 수 있으며, ETL은 그것들을 모두 동일한 것으로 인식하여 타깃 포맷으로 일관되게 변환한다.)
  • 추가로 ETL 프로세스는 이름과 주소, 전화번호 등을 검증하고 표준화하거나 다른 시스템들로부터의 인구통계 정보를 포함하는 필드들을 추가하여 레코드를 확장할 수도 있다.
  • 데이터 통합 및 정제가 과도히 요구되는 경우, ETL 작업의 80%는 변형(transform)에서 발생된다.[1]

적재(load)[편집]

  • 추출(extract), 변형(transform)된 데이터를 타깃(데이터 웨어하우스, 데이터 마트) 데이터베이스 내에 저장하는 프로세스이다.
  • 적재(load)의 수행 방식에는 기본적으로 append, delete/insert, update 가 있으며, 이를 지원하기 위한 각 DBMS의 고유기능/utility들이 있다.
  • 추출과 적재를 위해 특화된 기능은 Incremental Update – Change Data Capture – Frequent Load – Bulk Load – Bi-directional (Peer-to-Peer Interface) – Near-real-time Data Capture – EAI, EII이 있다.[1]

각주[편집]

  1. 1.0 1.1 1.2 1.3 COREMETA,〈ETL의 개념〉, 2014-01-22
  2. 2.0 2.1 2.2 준화아빠,〈ETL이란〉, 2008-07-24

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 ETL 문서는 데이터에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.