개요
우리 조직에서도 SCD에 대한 논의가 활발하게 이루어졌고, 지금까지도 난항을 겪고 있는 파트. 이게 개념적으로 "느린 변경 차원"이라고 딱 지정되어서 많은 사람들이 논의를 하고 있다는 것을 처음 알았다. 이번에 좀 확실히 개념을 잡고 우리 조직에도 적용할 수 있는 포인트가 있다면, 학습한 내용을 활용해서 적용해보고자 한다.
개념
느린 변경 차원(SCD)은 데이터가 천천히 변할 때, 그 변화를 데이터 웨어하우스에서 어떻게 관리할지를 설명하는 접근 방식이다. 데이터가 원본 데이터베이스에서 변경될 때, 이를 데이터 웨어하우스에서 어떻게 처리하고 저장할지를 결정하는 방법을 4개의 타입으로 정리해서, 조직 특성에 맞게 적용할 수 있도록 한다.
주요 내용:
- 데이터 히스토리 관리:
- 보관 필요성: 일부 데이터는 시간이 지나면서도 여전히 중요할 수 있다. 예를 들어, 고객 주소 변경 기록은 과거 분석에 유용할 수 있다. 반면, 오래된 데이터는 더 이상 유용하지 않을 수 있다.
- 삭제 vs. 보관: 데이터가 쓸모없게 되면 삭제할 수 있지만, 중요한 역사적 정보는 보관해야 한다.
- SCD의 주요 유형:
- Type 0: 변경 없음
- 데이터가 변경되면, 이전 데이터는 그대로 두고 새 데이터로 업데이트하지 않는다. 항상 같은 값을 유지한다.
- Type 1: 최신 값 유지
- 데이터가 변경되면 기존 값을 새 값으로 덮어씌우고, 이전 값은 삭제된다. 최신 값만 유지된다.
- Type 2: 이력 유지
- 데이터가 변경될 때마다 새로운 기록을 추가하여, 과거의 모든 데이터를 보존한다. 이를 통해 데이터의 변화를 시간에 따라 추적할 수 있다.
- Type 3: 일부 이력 유지
- 데이터의 최신 값과 이전 값(한 번의 변경 이력)만 저장한다. 최근 변경 사항만 간단히 추적할 수 있다.
- Type 0: 변경 없음
느린 변경 차원(SCD)은 데이터의 변화를 효과적으로 관리하기 위한 다양한 방법을 제공한다. 각 타입은 데이터의 변경 이력을 어떻게 처리할지를 다르게 하며, 비즈니스 요구에 맞게 적절한 방법을 선택하는 것이 중요하다.
SCD Type 0: 변경 없음
타입 0은 데이터가 비즈니스에 더 이상 유지할 가치가 없을 때 사용된다. 이 타입의 경우, 차원 변경은 원본 데이터베이스에서만 적용되고, 데이터 웨어하우스에는 반영되지 않도록 하는 것이다. 예를 들어, Airbnb가 2008년에 시작했을 때, 부동산 소유자가 플랫폼에 가입할 때 제공한 세부 사항을 기억해보자. 당시 Airbnb는 고객의 세금 번호를 수집했지만, 2010년대에는 팩스 사용이 사라졌다. 따라서 Airbnb는 데이터 웨어하우스에서 이러한 사실 데이터를 업데이트할 필요가 없었다.
이 경우, Airbnb는 타입 0을 사용하여 데이터 웨어하우스의 사실 데이터 열을 계속 업데이트하지 않고, 원본 데이터베이스에서만 변경을 적용한다.
SCD Type 1: 최신 값 유지
타입 1은 데이터가 변경될 때, 새로운 값만 중요할 때 사용된다. 원본 데이터가 더 이상 유효하지 않거나 구식이 되었을 경우에 적용된다. 이 경우, 데이터 웨어하우스에 새로운 값을 반영하고, 과거의 데이터를 유지할 필요가 없다.
예를 들어, Airbnb에서 숙소를 검색할 때 에어컨이 있는 숙소를 필터링할 수 있다. 숙소 소유자가 에어컨 설치 여부를 제공한다. 만약 숙소 소유자가 처음 Airbnb에 숙소를 등록했을 때는 에어컨이 없었지만, 나중에 에어컨을 설치하고 이를 목록에 업데이트한 경우를 상상해보자. 이 경우, Airbnb에게는 숙소가 과거에 에어컨이 없었다는 사실은 더 이상 중요하지 않다. 현재 에어컨이 설치되어 있는지 여부만 중요하다. 따라서 Airbnb는 타입 1을 사용하여 원본 데이터와 데이터 웨어하우스의 기록 모두에 동일한 변경 사항을 적용한다.
SCD Type 2: 이력 유지
타입 2는 현재 데이터와 과거 데이터 모두가 비즈니스에 중요할 때 사용된다. 현재 값뿐만 아니라 역사적 데이터도 보고서 작성이나 미래 검증을 위해 필요할 수 있다. 변경 이력 저장과 유효 기간을 표시하는 방식이다. :
- 변경 이력 저장: 데이터 변경 시, 데이터 웨어하우스에 새로운 기록이 추가된다. 원래 데이터(이전 값)도 유지되므로 전체 이력을 확인할 수 있다.
- 유효 기간 표시: 각 기록에는 데이터의 유효 기간을 나타내는 추가 열이 추가되며, 현재 데이터가 포함된 레코드를 표시한다.
예를 들어, Airbnb에서 임대 가격 데이터를 고려해 보자. 숙소 소유자는 임대 가격을 언제든지 조정할 수 있다. Airbnb는 임대 가격의 변화를 상세히 분석하여 시장을 이해하려고 한다. 따라서 모든 임대 가격 히스토리 데이터를 유지해야 한다. 소유자가 숙소의 임대 가격을 변경하면, Airbnb는 현재 가격과 이전 가격 히스토리를 모두 저장한다. 이 경우, 타입 2를 사용하면 현재 데이터와 함께 과거 데이터를 데이터 웨어하우스에 유지할 수 있다.
Type 2의 장점은 전체 역사적 데이터 유지할 수 있기 때문에, 데이터가 변경된 후에도 과거의 모든 정보를 쉽게 접근할 수 있다. 반면, 데이터 저장량이 증가하기 때문에, 기록 수가 많을 경우, 처리 속도가 느려질 수 있어 비즈니스 요구에 따라 고려해야 한다.
SCD Type 3: 일부 이력 유지
타입 3은 일부 역사적 데이터만 유지하고 싶을 때 사용된다. 데이터 처리 속도가 중요한 경우, 데이터 웨어하우스의 레코드 수를 줄이기 위해 과거 데이터 이력을 일부만 보존하는 선택을 할 수 있다. 데이터가 변경되면, 새로운 추가 열을 사용하여 차원 변경을 기록한다. 과거 데이터 이력은 원래 값과 현재 값만 유지되며, 그 외의 변경 사항은 저장되지 않는다.
예를 들면, Airbnb에서 숙소 유형(공유 방, 개인 방, 전체 숙소)을 예시로 봤을 때, 만약 숙소 소유자가 처음에 개인 방으로 임대하다가 나중에 전체 숙소로 변경한 경우, Airbnb는 숙소가 플랫폼에 가입한 이후의 유형 변경을 분석할 수 있다. 그러나 더 이상 유효하지 않은 변경 사항에 대해서는 신경 쓰지 않는다. 소유자가 다시 공유 방으로 변경하면, Airbnb는 개인 방 상태의 역사를 더 이상 유지하지 않는다. 현재 상태와 가장 최근의 상태만을 기록한다.
Type 3의 장점은 저장 용량 절감된다는 점. 웨어하우스의 레코드 수를 적게 유지하므로 처리 효율이 높다. 반면 단점은 제한된 데이터 히스토리로 인해서, 변경된 데이터 이력을 완벽히 이해하기 어렵다.
포스팅 자료 출처
본 포스팅은 유데미(Udemy) 사이트의 "The Complete dbt (Data Build Tool) Bootcamp: Zero to Hero" 강의의 내용을 발췌하여 작성했습니다. (광고 X)
'Data Science > DBT' 카테고리의 다른 글
CTEs(Common Table Expressions) 개념 및 사용법 (0) | 2024.09.02 |
---|---|
Airbnb 데이터 모델 프로젝트 준비하기 (Windows, DBT 프로젝트) (7) | 2024.09.01 |
현대 데이터 스택 (과거와 현재, DBT 툴의 중요성) (0) | 2024.08.11 |
데이터레이크(Data Lake)와 데이터레이크하우스(Data Lakehouse) (0) | 2024.08.11 |
데이터 웨어하우스 이해하기 (온프레미스 vs 클라우드 DW) (0) | 2024.08.05 |
댓글