일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- airflow
- 취준
- 웹스크래핑
- WEB
- Django
- 클라우드
- SQL
- DataWarehouse
- 관계형데이터베이스
- 데이터엔지니어
- 데이터베이스
- 데브코스
- 데이터엔지니어링
- 웹크롤링
- Service
- 개발
- AWS
- 알고리즘
- 기술면접
- 에어플로우
- 부트캠프
- 데이터웨어하우스
- CS
- Amazon
- 프로그래머스
- 자료구조
- 파이썬
- 웹자동화
- 운영체제
- 개념정리
- Today
- Total
사진과 음악을 좋아하는 개발자 지망생의 블로그
[데이터 웨어하우스] 3. 데이터 웨어하우스 내 데이터 적재(ETL vs ELT, Initial ETL, Incremental ETL, 데이터 변환, Mix-and-Match Incremental ETL) 본문
[데이터 웨어하우스] 3. 데이터 웨어하우스 내 데이터 적재(ETL vs ELT, Initial ETL, Incremental ETL, 데이터 변환, Mix-and-Match Incremental ETL)
devculture309 2023. 5. 23. 14:041. ETL vs ELT
ETL과 ELT는 데이터 웨어하우스 환경에서 데이터를 처리하는 방법을 나타내는 용어입니다.
ETL은 "Extract, Transform, Load"의 약자로, 데이터를 다양한 소스에서 추출한 다음 변환하여 데이터 웨어하우스나 데이터 마트에 로드하는 작업입니다. 예를 들어, 여러 소스 애플리케이션에서 데이터를 추출하는데 일정한 주기(예: 매 시간, 매주, 매 5분)로 배치 단위로 추출합니다. 추출한 데이터는 원시 상태로 데이터 웨어하우스 환경에 가져옵니다. 그리고 데이터를 사용자가 접근하는 곳이 아닌 스테이징 레이어에 저장합니다. 이후 변환 단계에서는 다양한 소스에서 가져온 데이터를 통일된 형태로 변환하여 사용자 액세스 레이어에 로드할 준비를 합니다. 이 변환 단계는 데이터 구조나 설정이 다른 다른 소스의 데이터를 일관된 형태로 준비하는 작업입니다. 마지막으로, 변환된 데이터를 사용자 액세스 레이어에 로드합니다. 이로써 일관된 데이터를 준비하고, 비즈니스 인텔리전스와 분석에 사용할 수 있게 됩니다.
반면에 ELT는 "Extract, Load, Transform"의 약자로, 데이터를 먼저 로드한 다음 변환 작업을 수행하는 방식입니다. ELT에서는 데이터를 다양한 소스에서 추출한 후에 그대로 빅데이터 환경으로 로드합니다. 이때 데이터는 원시 형태로 Hadoop, HDFS, S3와 같은 하위 수준의 저장소에 저장됩니다. 이때는 데이터 모델링과 분석 작업을 미리 수행할 필요가 없습니다. 나중에 필요한 시점에서 변환 작업을 수행하고, 데이터를 비즈니스 인텔리전스와 분석 목적으로 사용할 수 있게 됩니다. 이때는 빅데이터 환경의 컴퓨팅 파워를 활용하여 대규모 데이터 처리에 효율적입니다.
간단히 말하면, ETL은 추출, 변환, 로드의 순서로 데이터를 처리하는 반면, ELT는 추출, 로드, 변환의 순서로 데이터를 처리합니다. ELT는 빅데이터 환경에서 유용하며, ETL은 전통적인 데이터 웨어하우스 환경에서 주로 사용됩니다.
2. 데이터 웨어하우징 환경에서 초기 ETL (Initial ETL)
데이터 웨어하우스 환경에서는 다양한 데이터 소스에서 데이터를 가져와서 데이터 웨어하우스나 데이터 마트에 저장합니다. ETL 작업에는 두 가지 유형이 있습니다.
초기 ETL은 데이터 웨어하우스를 가동하기 전에 단 한 번 수행되는 작업입니다. 데이터 웨어하우스를 시작하기 위해 필요한 모든 데이터를 모아서 변환하고 사용자가 접근할 수 있는 공간에 저장합니다. 이렇게 하면 데이터 웨어하우스를 사용할 준비가 완료됩니다. 초기 ETL은 비즈니스 인텔리전스와 분석에 필요한 관련 데이터를 가져옵니다. 즉, 데이터 웨어하우스가 보고서 시각화 등에 필요한 데이터를 선택하여 가져오는 것입니다. 초기 ETL은 주로 데이터 웨어하우스의 초기 설정을 위해 수행되며, 일반적으로는 한 번만 수행됩니다. 하지만 데이터 웨어하우스가 손상되거나 오류가 발생하거나 플랫폼을 변경해야 할 경우에는 초기 ETL을 다시 수행해야 할 수도 있습니다.
데이터를 가져올 때 핵심은 "관련성"입니다. 데이터 웨어하우스 환경에서는 모든 가능한 소스 데이터를 가져오는 것이 아니라 필요한 관련 데이터만 가져오는 것이 좋습니다.또한, 초기 ETL 작업에서는 비즈니스 인텔리전스와 분석에 사용될 가능성이 있는 데이터도 가져옵니다. 예를 들어, 특정 보고서와 시각화 작업에 사용될 데이터를 미리 가져옵니다.
데이터 웨어하우스를 처음 가동할 때는 과거 데이터가 없는데, 그럼에도 불구하고 데이터 웨어하우스는 과거 데이터가 필요한 비즈니스, 인텔리전스, 시각화, 보고서 작업을 수행하기 때문에 과거 데이터도 가져와야 합니다.
초기 ETL 작업이 완료되면 데이터 웨어하우스를 사용할 준비가 되며, 이후에는 점진적 ETL을 통해 데이터 웨어하우스를 최신 상태로 유지합니다.
3. 데이터 웨어하우징 환경에서 점진적 ETL (Incremental ETL)
점진적 ETL(Incremental ETL)은 데이터 웨어하우스를 업데이트하여 최신 정보를 유지하는 작업입니다. 이 작업에는 네 가지 주요한 패턴이 있습니다.
첫 번째는 추가(Append) 패턴입니다. 새로운 데이터를 기존 데이터 웨어하우스에 추가합니다. 새로운 직원, 고객, 제품 등을 데이터 웨어하우스에 계속해서 덧붙여나갑니다.
두 번째는 인플레이스 업데이트(In-place update) 패턴입니다. 이 패턴에서는 실제로는 추가하지 않고 기존존 데이터의 일부를 업데이트합니다. 예를 들어, 특정 테이블에 있는 데이터 중 일부를 변경하고 업데이트하는 것입니다.
세 번째는 완전 교체(Complete replacement) 패턴입니다. 이 패턴에서는 작은 부분이 변경되더라도 해당 부분을 완전히 교체합니다. 변경 사항이 사실상 없을지라도 동일한 값으로 데이터를 변경하게 됩니다.
네 번째는 롤링 추가(Rolling append) 패턴입니다. 이 패턴에서는 특정 기간 동안의 데이터만 유지합니다. 새로운 데이터를 추가할 때 가장 오래된 데이터를 제거하고 최신 데이터를 유지하는 것입니다.
이렇게 네 가지 패턴을 사용해서 데이터 웨어하우스를 업데이트하면 최신 정보를 유지할 수 있습니다. 주로 추가와 현지 갱신 패턴을 많이 사용하게 되고, 완전 교체와 롤링 추가 패턴은 조금 더 특수한 경우에 사용됩니다. 이런 작업을 통해 데이터 웨어하우스를 최신 상태로 유지하고 비즈니스 인텔리전스와 분석을 수행할 수 있습니다.
4. 데이터 변환의 역할
ETL은 데이터 추출(Extract), 변환(Transform), 적재(Load)를 의미합니다. 데이터 웨어하우스를 구축하고 가동시키는 핵심 방법 중 하나이기도 합니다. 데이터 변환은 ETL의 핵심 요소 중 하나입니다.
데이터 변환에는 두 가지 주요 목표가 있습니다.
첫 번째는 일관성입니다. 우리의 데이터 웨어하우스를 구축하기 위해 다양한 응용 프로그램, 플랫폼, 소프트웨어 패키지에서 가져오는 데이터가 어떤 형태로 저장되어 있을지 모릅니다. 제품, 교수진, 학생, 고객, 직원 등 다양한 시스템에서 나온 데이터가 비슷한 형태로 보여야 합니다. 그래야만 비즈니스 인텔리전스와 분석에 사용되는 데이터 웨어하우스에서 동일한 비교를 할 수 있습니다. 그래서 우리는 데이터를 변환하여 비슷한 형태로 만들어야 합니다.
두 번째 목표는 데이터의 재구성입니다. 데이터를 스테이징 레이어로 가져올 때, 비교적 원시적인 형태로 가져옵니다. 마치 데이터를 공중에 던져서 잘 설계된 데이터 구조로 내려오게 하는 것과 같습니다. 이것이 데이터 변환의 다른 주요 목적입니다.
"통일"은 데이터 변환 모델 중 하나입니다. 예를 들어, 한 대학의 두 개 캠퍼스에서 각각 다른 시스템을 사용하여 교수 정보를 저장한다고 가정해봅시다. 한 캠퍼스에서는 "교수"라는 직급을 풀네임이나 약자로 표기하지만, 다른 캠퍼스에서는 한 글자나 두 글자로 표기합니다. 이럴 때 우리는 사용자가 데이터의 출처나 소스 시스템의 데이터 구조에 신경 쓰지 않도록 데이터 값을 통일해야 합니다. 따라서 하나의 표현 방식을 선택해야 합니다. 예를 들어, 교수 마스터 테이블에는 두 번째 캠퍼스의 방식에 따라 직급을 저장합니다.
데이터 유형 및 크기은 다른 방법입니다. 예를 들어, 두 개의 시스템에서 성, 이름, 직급과 같은 정보를 서로 다른 데이터 유형과 크기로 저장할 수 있습니다. 이런 경우 데이터 웨어하우스의 마스터 테이블에서 데이터의 유형과 크기를 통일해야 합니다. 크기가 더 큰 값을 선택하거나 필요한 경우 데이터를 압축해야 할 수도 있습니다. 이렇게 함으로써 동일한 유형의 데이터에 대해 일관된 처리를 할 수 있습니다
마지막으로, 중복 데이터 통합 및 제거는 다른 시스템에서 중복으로 나타나는 데이터를 처리하는 방법입니다. 예를 들어, 두 개의 캠퍼스에서 동일한 학생이 각각 등록되어 있다면, 데이터 웨어하우스에서는 중복을 제거하여 한 번만 저장합니다. 이렇게 함으로써 데이터 분석과 보고서 작성에 일관성을 유지할 수 있습니다.
5. 데이터 변환 더 살펴보기
일반적인 변환 모델 중 세 가지를 더 살펴보겠습니다.
1) 열 삭제
이는 데이터를 수직으로 자르는 것으로 생각할 수 있습니다. 열 삭제는 필요하지 않은 열을 제거하는 것을 의미합니다. 예를 들어, 분석 목적으로 사용하지 않을 열을 데이터 웨어하우스에 저장하지 않는 것입니다.
2) 행 필터링
이는 데이터를 수평으로 자르는 것으로 생각할 수 있습니다. 특정 필드의 값에 따라 특정 행을 제외하는 것입니다. 예를 들어, 경영 대학의 데이터 마트에는 경영 전공 학생만을 포함시키고 나머지 전공 학생은 필터링하여 제외하는 것입니다.
3) 오류 수정
소스 데이터에 오류가 있는 경우, 데이터 웨어하우스로 데이터를 가져오기 전에 해당 오류를 수정합니다. 예를 들어, 반임 교수를 나타내는 H 대신에 실수로 X라는 값을 저장하는 문제가 발생한 경우, 올바른 값인 H로 수정하여 데이터를 깨끗하게 유지합니다.
이러한 데이터 변환 작업은 데이터의 일관성을 유지하는 것이 중요합니다. 데이터의 일관성은 데이터 웨어하우스로 가져오는 데이터의 품질을 향상시키고 분석에 유용한 형태로 가공하는 데 도움이 됩니다. 이를 위해 데이터 구조를 재조정하고 차원 모델링을 수행하는 것이 필요합니다.
6. Mix-and-Match Incremental ETL
증분 ETL의 마지막으로, 우리는 모든 것을 섞고 어울려서 조합하는 방법에 대해 알아보겠습니다.
ETL 피드를 살펴보면, 개념적으로는 모두 유사해 보일 수 있습니다. 특정 소스 시스템에서 데이터의 사본을 만들어 정기적으로 데이터 웨어하우스에 업데이트하고 최신 상태로 유지하는 것이 기본 개념입니다.
하지만 ETL 피드를 자세히 살펴보면, 그 안에는 다양한 차이가 있습니다. 예를 들어, 3개의 다른 ETL 피드가 있다면, 그 중 2개는 매일 데이터 웨어하우스를 업데이트하고 싶을 수 있고. 다른 하나는 더 중요한 데이터를 더 자주 업데이트하고 싶을 수 있습니다. 그래서 해당 소스 시스템에서는 시간당 업데이트를 수행할 것이고, 다른 시스템에서는 주간 업데이트로도 충분할 만큼 변동성이 더 적을 수도 있습니다.
또한, 증분 ETL에 대해 앞서 봤듯이 추가, 인플레이스 업데이트, 완전 교체, 제롤링 추가 등 다양한 패턴을 고려해야 합니다.각각의 ETL 피드는 이러한 패턴 중 하나일 수 있습니다. 그리고 이러한 패턴들은 업데이트 빈도와는 별개입니다.
ETL을 설계하고 구축할 때는 환경에 맞게 합리적으로 결정해야 합니다. 어떤 방식으로 ETL을 조합할지 선택해야 합니다. 이는 데이터 소스의 특성, 데이터의 빈도, 변환 작업의 복잡성 등을 고려하여 결정됩니다. 예를 들어, 중요한 데이터의 경우 더 자주 업데이트하고 싶을 수 있으며, 변동성이 적은 데이터는 주간 업데이트로 충분할 수도 있습니다. 또한, 다양한 패턴을 활용하여 ETL 작업을 수행할 수 있으며, 이 패턴은 데이터의 구조와 요구사항에 따라 선택됩니다.
따라서 ETL을 구성할 때는 환경과 요구사항을 고려하여 최적의 방식으로 조합해야 합니다. 이렇게 설계된 ETL은 데이터의 효율적인 추출, 변환, 로드를 통해 데이터 웨어하우스에 유용하고 신뢰성 있는 정보를 제공할 수 있습니다.