차원 모델링(Dimensional Modeling)은 데이터 웨어하우스 설계의 핵심 기법임에도 불구하고, 이에 대한 몇 가지 오해가 여전히 퍼져 있습니다. 이번 글에서는 대표적인 오해들을 짚어보고 그 진실을 살펴보겠습니다.
오해 1: 차원 모델은 '스토브파이프' 시스템을 낳는다?
차원 데이터 모델을 구축하면 서로 연결되지 않은 독립적인 의사결정 지원 시스템, 이른바 '스토브파이프(stovepipe)' 시스템만 양산하게 된다는 주장이 있습니다. 나아가 비정규화(denormalization)가 특정 소프트웨어에만 종속되어 수정이 불가능한 결과를 초래한다고 비난하기도 합니다. 그러나 이는 차원 모델링을 단편적으로 해석한 것으로, 정확히 반대의 결론에 이르게 됩니다.
첫째, 모든 개체-관계(ER) 모델에는 동일한 정보를 담고 있는 차원 모델 집합이 반드시 존재합니다. 둘째, 조직 변화나 최종 사용자의 요구 사항 변화가 발생하더라도 차원 모델은 형태를 바꾸지 않고도 유연하게 확장됩니다. 오히려 SQL을 계속해서 다시 작성하도록 강요하며 애플리케이션 설계자와 최종 사용자를 괴롭히는 것은 ER 모델입니다.
실제로 우리가 직접 만난 적 없는 실무자들이 수행한 수백 건의 훌륭한 차원 설계 사례를 확인할 수 있습니다. 지난 15년간 생활용품 소매 및 제조 산업에서 차원 데이터베이스를 활용하고 설계해 온 한 세대의 설계자들이 이미 존재합니다.
이러한 오해는 차원 모델링의 역사적 기원에서 비롯된 것이지, 오늘날의 현실을 반영하는 것이 아닙니다. 차원 모델링은 이미 소매 은행, 기업 은행, 재산·손해 보험, 건강 보험, 생명 보험, 증권 고객 분석, 통신사 운영, 신문 광고, 석유 회사 연료 판매, 정부 기관 지출, 제조업 출하 관리, 의료 등 다양한 비즈니스 영역에서 폭넓게 활용되고 있습니다.
오해 2: 스노우플레이킹은 차원 모델링과 다른 기법인가?
스노우플레이킹(snowflaking)이란 카디널리티가 낮은 텍스트 속성을 차원 테이블에서 제거하여 '2차' 차원 테이블로 분리하는 기법을 말합니다. 예를 들어 제품 카테고리를 이러한 방식으로 처리하여, 저수준의 제품 차원 테이블에서 물리적으로 분리해 낼 수 있습니다.
그러나 스노우플레이킹은 차원 모델링과 별개의 것이 아닙니다. 우리는 스노우플레이킹을 기본 차원 모델의 단순성을 보완하는 장식적 기법으로 간주합니다. 이 기법이 사용자의 이해도를 높이고 전반적인 성능을 향상시킨다면, 설계자는 아무런 거리낌 없이 스노우플레이킹을 적용해도 좋습니다.
한편, 스노우플레이킹이 차원 테이블의 유지보수성에 도움이 된다는 주장은 그럴듯해 보이지만 실질적이지 않습니다. 유지보수 문제는 실제로 ER 방식과 유사한 규율을 통해 관리되지만, 이 모든 작업은 데이터가 차원 스키마에 적재되기 전인 데이터 스테이징 영역에서 이루어져야 합니다.
ER 모델링의 구조적 한계
개체-관계(ER) 모델링은 비즈니스 자체를 모델링하는 것이 아니라, 데이터 요소 간의 미시적인 관계를 모델링합니다. 즉, ER 모델링에는 비즈니스 규칙이 아니라 데이터 규칙만이 존재합니다.
또한 ER 모델은 구조가 매우 가변적입니다. 이러한 구조의 심한 변동성 때문에 각 데이터 웨어하우스마다 맞춤형으로 작성하고 세밀하게 튜닝한 SQL이 필요합니다. 더욱이 튜닝된 스키마는 비대칭적인 형태를 띠기 때문에, 고객의 조회 패턴이 변화할 때 매우 취약하다는 의미이기도 합니다.