데이터 집합의 분리, 확장, 통합

최건우·2023년 6월 20일
0

집합의 통합과 분리

얼마나 통합해야 좋고, 얼마나 분리해야 좋을까?

데이터 모델링은 단순하고 명확한 관계를 가지도록 하는 것이 바람직하다. 따라서, 동질성이 확보된 유사한 엔티티는 가능한 한 통합하는 것이 유리하다. 엔티티들의 동질성을 기준으로 데이터 모델을 통합하고, 분리하는 것이 좋다.

엔티티 사이에 배타적 관계가 존재한다는 것은 하나의 엔티티가 두 개 이상의 상위(부모) 엔티티와 관계를 가지며, 그 관계가 상호 배타적일 때를 말한다. 하위(자식) 엔티티의 각 인스턴스는 여러 상위 엔티티 중 하나와 관계를 가진다.

데이터의 성격, 정체성, 주제가 본질적으로 동일하지만 개별 엔티티로 분리된 모델의 경우가 이러하다. 배타 관계는 모델의 구조를 복잡하게 만들고 복잡한 조인이 발생하게 하는 등 일반적으로 바람직하지 않다.

동질의 엔티티를 통합함으로써 다음과 같은 장점을 얻을 수 있다.

  • 데이터 모델의 구조가 단순하고 명확해진다.
  • SQL이 단순해지고 코딩량이 줄어 개발 생산성이 좋아진다.
  • 조인이 최소화되어 성능 이슈도 없어진다.
  • 통합되지 않은 모델과 비교해서 요건 변경에 따른 유연성이 극대화된다.

엔티티 통합과 테이블 통합

집합의 통합과 분리를 얘기하려면, 먼저 논리 모델과 물리 모델의 경계, 그리고 엔티티 통합과 테이블 통합을 구체적인 기준을 가지고 구분해야 한다.

논리 모델과 물리 모델을 통합과 분리 관점에서 살펴보기

논리 모델은 업무에서 어떤 데이터가 어떻게 발생하고 존재하는지 인간이 이해하기 좋은 수준으로 분류하거나 묶은 형태이다. 이는 설계자와 사용자 등 이해관계자가 쉽게 이해할 수 있도록 박스와 관계선 등으로 현실 업무의 모습을 정형화하여 표현한다. 따라서, 논리 모델은 DBMS나 하드웨어를 위한 것이 아니므로, 끝까지 그대로 유지하려고 해서는 안 된다.

반면 물리 모델은 말 그대로 물리적 요소인 하드웨어가 최고의 성능을 발휘하도록 만들어야 한다.

논리 모델에서는 데이터를 분리하여 표현하는 것이 개별 정보가 발생하는 시점이나 데이터 집합의 의미 차이를 인간이 이해하는 데 도움이 된다. 논리 모델은 정규화 이론에 기반하여 데이터 무결성을 극한으로 끌어올려 준다. 반면 물리 모델링에서는 성능 최적화에 목표를 두기 때문에 이러한 관점들을 통합하는 등 논리 모델을 변형하는 작업이 수반된다. 힘들게 도출하여 정의하고 분리하고 유형화한 개체들을 다시 모을 수도 있다는 것이다.이렇듯, 둘의 목적과 뷰는 유사한 듯 다르다.

1:1 관계의 엔티티들은 물리 단계에서 통상 통합하는 것이 유리하다. 업무에서의 활용 유형(데이터 접근 패턴, access pattern)을 봤을 때 해당 엔티티들은 하나의 뷰로 자주 조회되는 경향이 있기 떄문이다.

엔티티 통합과 테이블 통합

엔티티 통합

논리 모델에서는 통합할지 분리할지 애매한 집합은 일단 통합하고 시작한다. 그리고 상세화하는 과정에서 그대로 통합한 채로 둘지, 분리하는 것이 효율적일지 판단한 후 최종 결정한다. 이는 유사한 집합의 동질성을 확장하는 쪽으로 엔티티를 관리한다는 의미이지, 정규화 논리(함수 종속성에 기반하여 이질적인 집합을 분리)에 어긋나는 것이 아니다.

통합과 분할의 일차적 기준은 데이터의 성격이어야 한다. 업무 행위의 최상위에 놓이는 마스터 데이터들은 유사하다는 기준을 다소 관대하게 적용해서 강하게 통합해도 괜찮다. 단, 통합된 것들의 독립성을 유지하기 위해 서브타입을 명확히 표현해야 한다. 최상위 엔티티를 통합함으로써 모델 구조를 단순하게 할 수 있고, 그에 따른 SQL 구현 난이도와 성능 이슈 등의 위험요소를 줄여주며, 업무 변화에도 유연하게 대응할 수 있게 된다. 반대로 상위 계층의 복잡도가 높을수록 하위 엔티티는 더더욱 복잡하고 성격 또한 불명확하게 된다.

데이터 모델링에서 주제 영역(subject area)이라고 흔히 부르는 것이 바로 이러한 최상위 엔티티들이 다시 추상화된 영역이라고 볼 수 있다. 그리고 업무 행위, 즉 트랜잭션 수준의 엔티티도 그것들의 하위 엔티티의 유사성 등을 기준으로 상위 부모 엔티티를 통합할 수 있다. 이러한 관점에서 논리 모델통합되어야 한다.

단, 논리 모델의 분리에서는 주의할 점이 있다. 집합을 분리하게 되리라 판단되면 일찌감치 분리해버리는 편이 바람직하다. 상위 모델의 골격이 바뀌면 하위 엔티티와 관계 등 전반적인 형태가 틀어지는 등 side effect가 크기 때문이다. 통상적으로 상위 엔티티는 통합되는 것이 이익이 많다.

테이블 통합

서브타입의 물리 모델 전환 방법 3가지를 적용할 수 있다.
1. 하나의 테이블로 통합(Roll up)
2. 서브타입별 테이블로 분할(Roll down)
3. 공통 속성만 통합하고 공통적이지 않은 속성은 1:!로 분할(Hacksaw)

여기에 한 가지 추가하면, 기본 키(PK)와 최소 속성만 통합하고 나머지는 모두 분할하는 방법이 있다. 그 외에도 테이블의 파티셔닝, 1:1 관계의 통합과 분리 등 다양한 설계 전략이 존재한다.





출처: 프로젝트 성패를 결정짓는 데이터 모델링 이야기(김상래 저, 한빛미디어)

profile
부족한 경험을 채우기 위한 나만의 기록 공간

0개의 댓글