데이터 변환·적재 절차
ETL·ELT와 적재 방식을 비교하고 신뢰성 확보 절차를 익힌다.
핵심 요약
변환은 자료형과 단위의 표준화, 코드 매핑, 정제, 결합, 파생을 포함한다. 규칙마다 입력·출력·적용 조건·예외·검증 기준·버전을 명시하고 원본, 변환 결과, 규칙 버전의 계보를 남겨야 재현과 영향 분석이 가능하다.
적재는 단순 복사가 아니다. 변경분의 추가·수정·삭제와 늦게 도착한 데이터를 빠짐없이 포착하고, 실패 후 같은 범위를 다시 실행해도 중복이나 부분 반영이 생기지 않게 설계해야 한다. 스테이징에서 검증한 결과를 트랜잭션 또는 파티션 교체로 한 번에 공개하고, 성공한 뒤에만 체크포인트를 전진시킨다.
학습 목표
- 변환 규칙 명세의 구성 요소와 검증 지점을 설명한다.
- ETL과 ELT를 처리 위치·보안·원본 보존 조건으로 구분한다.
- 전체·증분 및 추가·병합·교체 방식을 변경 의미에 맞게 선택한다.
- 멱등성, 원자적 반영, 체크포인트, 대사와 재처리 원칙을 적용한다.
- 스키마 진화와 데이터 계보가 후속 소비자에 미치는 영향을 판단한다.
1. 변환 규칙의 명세와 통제
변환 규칙은 구현 코드보다 먼저 업무 의미를 고정하는 계약이다.
| 명세 항목 | 확인 질문 | 예시 |
|---|---|---|
| 입력·출력 | 어떤 필드가 무엇으로 바뀌는가? | 문자열 주문일시 → 표준시각 |
| 적용 조건 | 어느 행·기간·원천에 적용하는가? | 원천 시스템 A, 시행일 이후 |
| 예외 처리 | 실패·미매핑을 어떻게 다루는가? | 격리 후 코드 담당자 확인 |
| 검증 기준 | 허용 범위와 실패 임계치는? | 파싱 실패율 0%, 미매핑 건수 0 |
| 규칙 버전 | 언제부터 어떤 규칙을 썼는가? | 환율 규칙 v3, 적용일 기록 |
| 계보 | 원천과 결과를 어떻게 연결하는가? | 원천 파일·배치 ID·변환 버전 |
| 변환 유형 | 예시 | 핵심 검증 |
|---|---|---|
| 자료형·형식 | 날짜 문자열을 표준 날짜로 변환 | 파싱 실패, 유효 범위 |
| 단위·기준 | 원을 천 원으로 변환, 시간대 통일 | 단위 메타데이터, 역산 |
| 코드 매핑 | 원천 상품 코드를 표준 코드로 연결 | 미매핑·다중 매핑 |
| 정제 | 중복·결측·오타 처리 | 처리 전후 건수와 규칙별 영향 |
| 결합 | 고객·주문을 키와 유효기간으로 연결 | 결합률, 일대다 증폭, 시점 적합성 |
| 파생 | 주문일에서 요일·기간 합계 생성 | 정의, 기준 시점, 정보 누수 |
원천을 덮어쓰지 않고 원본 영역과 가공 영역을 분리한다. 결과값만 보존하면 규칙 변경 시 과거 결과를 재현하거나 오류의 유입 지점을 찾기 어렵다.
2. ETL과 ELT의 선택
| 구분 | ETL | ELT |
|---|---|---|
| 처리 순서 | 추출 → 변환 → 적재 | 추출 → 적재 → 변환 |
| 변환 위치 | 별도 처리 환경 | 목표 저장·연산 환경 |
| 장점 | 정제 데이터만 적재, 중앙 통제 용이 | 원본 보존, 확장 연산과 재가공에 유리 |
| 주의점 | 변환 계층 병목, 원본 활용 제한 가능 | 원본·민감정보 접근, 비용, 변환 계층 난립 통제 |
| 적합 조건 | 목표 저장소 제약이 크고 사전 정제가 필수 | 저장·연산 확장이 쉽고 다양한 후속 활용 필요 |
ELT도 변환을 수행하며 ETL보다 항상 최신이거나 우수한 방식이 아니다. ELT로 원본을 먼저 적재할 때는 최소권한, 암호화, 보존기간, 민감정보 분리와 감사 로그를 함께 설계한다.
3. 적재 범위와 반영 방식
3.1 전체 적재와 증분 적재
| 방식 | 장점 | 필수 통제 |
|---|---|---|
| 전체 적재 | 기준 상태를 단순하게 재구성 | 처리 시간·비용, 공개 중 공백 방지 |
| 증분 적재 | 변경분만 처리해 효율적 | 변경 기준, 수정·삭제, 지연 도착, 체크포인트 |
증분 범위를 event_time > 마지막 시각처럼 단순 정의하면 같은 시각의 변경이나 늦게 도착한 건을 놓칠 수 있다. 변경 로그·증가 순번을 사용하거나 일정 구간을 겹쳐 다시 읽고 업무 키로 중복 제거한다. 삭제도 물리 삭제, 삭제 플래그, 삭제 이벤트 중 원천의 표현 방식을 확인해야 한다.
3.2 추가·병합·교체
| 데이터 의미 | 적재 방식 | 대표 통제 |
|---|---|---|
| 변경되지 않는 사건 이력 | 추가(Append) | 이벤트 고유 키로 중복 방지 |
| 업무 객체의 현재 상태 | 병합(Upsert/Merge) | 업무 키와 최신 순서 판정 |
| 완전 재계산 가능한 기간 | 파티션 교체 | 스테이징 검증 후 원자적 전환 |
| 전체 기준 데이터 | 전체 교체 | 소비 중단·부분 공개 방지 |
파일이 작다고 증분 적재인 것도, 증분이라고 무조건 추가 적재인 것도 아니다. 데이터의 변경 의미와 소비자가 필요로 하는 이력 수준을 먼저 정한다.
4. 재실행 안전성과 실패 복구
멱등성은 같은 입력과 처리 기준으로 재실행해도 최종 결과가 불필요하게 달라지지 않는 성질이다. 업무 키·배치 ID·원천 오프셋·처리 기준 시점으로 중복을 식별하고, 병합이나 파티션 교체를 사용한다. 다만 멱등 처리가 곧 전달 자체가 정확히 한 번만 일어난다는 뜻은 아니다. 전달이 반복돼도 결과를 한 번 반영한 것처럼 만드는 설계가 핵심이다.
| 단계 | 통제 | 실패 시 원칙 |
|---|---|---|
| 추출 | 시작·종료 오프셋과 배치 ID 기록 | 마지막 성공 지점부터 재개 |
| 변환 | 규칙 버전과 오류 사유 기록 | 오류 행 격리, 수정 후 동일 기준 재처리 |
| 스테이징 적재 | 키 중복·건수·합계 검증 | 운영 영역에는 미공개 |
| 운영 반영 | 트랜잭션 또는 원자적 파티션 교체 | 전체 롤백 또는 이전 버전 유지 |
| 완료 | 검증 성공 후 체크포인트 갱신 | 실패한 실행은 기준점 미전진 |
체크포인트를 적재 전에 갱신하면 실패 구간이 영구 누락될 수 있다. 반대로 공개와 체크포인트 갱신이 분리되면 재실행이 발생하므로 대상 적재가 멱등해야 한다.
5. 검증·대사와 오류 처리
| 검증 차원 | 지표 예시 | 발견 가능한 문제 |
|---|---|---|
| 완전성 | 원천 대비 건수, 키 집합, 시간 범위 | 누락, 체크포인트 오류 |
| 유일성 | 업무 키·이벤트 키 중복 | 재실행 중복, 일대다 증폭 |
| 정확성 | 금액 합계, 상태별 건수, 표본 역추적 | 단위·코드·계산 오류 |
| 무결성 | 참조키 일치, 필수값, 허용 코드 | 미매핑, 순서 오류 |
| 일관성 | 파티션 간 합계, 원천-목표 대사 | 부분 반영, 삭제 미반영 |
오류 행은 조용히 버리지 않는다. 원천 식별자, 배치 ID, 규칙 버전, 오류 코드와 재처리 상태를 격리 영역에 기록한다. 수정 후 재투입할 때 최초 적재분과 중복되지 않는지도 검증한다. 단순 행 수 일치는 중복과 누락이 서로 상쇄될 수 있어 충분한 증거가 아니다.
6. 스키마 진화와 계보
| 변경 | 위험 | 안전한 대응 |
|---|---|---|
| 선택 열 추가 | 구버전 소비자의 무시 가능 여부 | 계약 검사 후 병행 제공 |
| 열 이름·자료형 변경 | 파싱 실패·의미 왜곡 | 새 열 추가 후 이행, 즉시 덮어쓰기 금지 |
| 필수값 변경 | 기존 데이터·생산자 위반 | 기본값과 전환 기간 설계 |
| 열 삭제 | 후속 쿼리·모델 중단 | 사용 현황 확인, 폐기 예고 후 제거 |
스키마 레지스트리나 데이터 계약으로 생산자와 소비자 간 호환성을 검사한다. 원천 필드에서 변환 규칙과 목표 열까지 계보를 연결하면 변경 영향 범위, 오류 원인, 재처리 대상을 추적할 수 있다.
7. 사례 적용
상황: 세 쇼핑몰의 주문 데이터를 통합한다. 상품 코드는 다르고, A는 주문 수정 시 기존 행을 갱신하며 B는 수정·취소 이벤트를 새 행으로 보낸다. 일부 이벤트는 하루 늦게 도착한다.
판단 과정:
- 원천별 업무 키, 이벤트 순서, 수정·삭제 표현을 정의한다.
- 상품 코드 매핑과 시간대·금액 단위를 규칙 버전과 함께 적용한다.
- 안전 구간을 겹쳐 변경분을 추출하고 주문 키·이벤트 순서로 최신 상태를 판정한다.
- 일별 결과를 스테이징에서 재계산해 건수·금액·상태 분포를 대사한다.
- 검증된 파티션만 원자적으로 교체하고 성공 후 체크포인트를 갱신한다.
결론: B의 이벤트를 단순 추가해 매출을 합산하면 수정 전후 금액과 취소 주문이 함께 계산된다. 변경 의미, 지연 도착, 재실행을 함께 고려한 병합 또는 파티션 재계산이 필요하다.
ETL은 적재 전에 변환하고 ELT는 원형 데이터를 먼저 적재한 뒤 대상 저장소의 계산 능력으로 변환한다. 어느 방식이든 변환 규칙·계보·접근통제·검증·비용을 명세해야 하며 이름만으로 우열을 정하지 않는다.
| 비교 | ETL | ELT |
|---|---|---|
| 변환 위치 | 대상 적재 전 외부 처리 | 대상 저장소 적재 후 |
| 대상에 들어가는 상태 | 주로 정제·구조화 결과 | 원형 또는 준원형+변환 결과 |
| 주요 장점 | 적재 전 품질·형식 통제 | 원본 보존·유연한 재변환 |
| 주요 주의 | 변환 병목·원본 손실 가능 | 대상 계산비용·민감정보 통제 |
스테이징에서 건수·스키마·키를 검증한 뒤 병합하고 성공 구간의 체크포인트를 기록한다. 원천 건수를 $N_s$, 대상 반영 건수를 $N_t$, 격리 건수를 $N_q$라 하면 다음 대사 차이가 0인지 확인할 수 있다.
실패 시 부분 반영을 롤백하고 같은 배치 ID를 재실행해도 최종 결과가 같아야 멱등성이 확보된다.
시험 판단 포인트
- ETL과 ELT의 핵심 차이는 변환 위치이며 선택 기준에는 보안과 원본 보존도 포함된다.
- 증분 적재는 추가뿐 아니라 수정·삭제·지연 도착과 마지막 성공 체크포인트를 다룬다.
- 추가·병합·교체는 파일 크기가 아니라 데이터의 변경 의미로 선택한다.
- 멱등성은 재실행 결과의 안정성이고, 원자적 반영은 부분 공개 방지에 초점이 있다.
- 체크포인트는 검증과 반영이 성공한 뒤 전진시킨다.
- 행 수만이 아니라 키·합계·시간 범위·상태 분포를 원천과 대사한다.
자주 틀리는 부분
- ELT가 변환하지 않는 방식이라고 보지 않는다.
- 증분 파일에 신규 행만 있다고 가정하지 않는다.
- 멱등성과 정확히 한 번 전달을 같은 개념으로 보지 않는다.
- 오류 행을 제외하고 정상 건만 공개한 뒤 성공으로 처리하지 않는다.
- 열 추가는 언제나 호환되고 열 삭제는 즉시 가능하다고 판단하지 않는다.
개념 확인 문제
문제를 누르면 바로 아래에서 정답과 해설을 확인할 수 있습니다.
01ETL과 ELT의 차이를 정확히 설명하시오.
ETL은 적재 전에, ELT는 적재 후 목표 환경에서 변환한다.
ETL은 목표 저장소에 넣기 전에 변환하고 ELT는 먼저 목표 환경에 적재한 뒤 변환한다. 둘 다 변환을 수행하며, 데이터 유형 하나에만 한정되지 않는다.
02증분 적재 작업이 스테이징 검증 중 실패했다. 취해야 할 조치를 근거와 함께 서술하시오.
운영 반영과 체크포인트 갱신을 보류하고, 원인을 기록한 뒤 같은 처리 기준으로 재실행한다.
검증에 실패한 결과는 운영에 공개하지 않고 체크포인트도 전진시키지 않는다. 오류 원인과 배치 정보를 남기고, 멱등한 적재 방식으로 동일 범위를 재처리해야 누락과 중복을 막을 수 있다.
03현재 주문 상태를 만들 때 수정 이벤트가 새 행으로 도착한다. 적절한 처리 방식을 서술하시오.
업무 키와 이벤트 순서로 최신 상태를 판정해 병합한다.
수정이 새 이벤트로 표현되면 업무 키와 신뢰할 수 있는 이벤트 순서로 최신 상태를 판정해야 한다. 단순 추가·합산은 이전 상태와 새 상태를 함께 집계할 수 있다.
04스키마 변경 대응을 서술하시오.
새 열을 병행 제공하고 소비자 호환성을 확인한 뒤 이행한다.
소비자가 기존 구조를 사용하는 동안 새 열을 병행 제공하고 데이터 계약이나 호환성 검사로 전환을 확인하는 방식이 안전하다. 사용 중인 열의 즉시 삭제나 자료형 덮어쓰기는 후속 처리를 깨뜨릴 수 있다.