dbt에서의 Surrogate Key 생성 전략
🧩 Surrogate Key란?
- 데이터 웨어하우스에서 조인 성능을 높이고, 변화 추적(SCD 등)을 위해 사용되는 의미 없는 대체 키입니다.
자연 키(Natural Key)
와 달리, 비즈니스 의미 없이 단순히 데이터 식별자 역할만 수행합니다.
- 고전적인 사용 방법으로는 주로 정수형이었습니다.
- 예: user_sk = 123456
(참고용 1) 🌱 Natural Key란?
- 운영 시스템에서 이미 존재하는 고유 식별자로, 비즈니스적으로 의미가 있는 키입니다.
- 예: 주민등록번호, 이메일, 고객 ID, 제품 코드 등
- 장점: 기존 시스템과의 연동이 쉬움
- 단점: 변경될 가능성, 중복 위험, 복잡한 조합 등으로 인해 DW에선 보통 Surrogate Key로 대체합니다.
(참고용 2) 🌱 Durable Key란?
- 한 엔티티를 일관되게 식별하기 위한 불변의 식별자입니다.
- Surrogate Key와 비슷하지만, SCD(Slowly Changing Dimension) 처리 등으로 속성이 바뀌더라도 ID는 유지됩니다.
- 보통 ETL이 할당하고 관리하며, supernatural key, persistent identifier라고도 부릅니다.
- 많이 사용하는 예제 (uuid)
- UUID는 전역에서 유일(unique)하므로, 여러 시스템을 통합할 때 고유 ID 보장에 매우 유리합니다.
- 특히, 고객 ID나 글로벌 식별자처럼 시간이 지나도 변하지 않아야 하는 key를 만들기에 적합합니다.
- 다만 16바이트라는 용량으로 인해, 스토리지 부담이 존재합니다.