권순용의 데이터모델링 이야기
근본 Entity의 분할 2 0 1 99,999+

by axiom 엔티티 Entity [2014.05.06]


데이터 모델의 중요한 요소 중의 하나가 Entity이다. 이와 같은 Entity는 여러 가지 형태로 탄생되며, 그 Entity에 의해 데이터베이스의 생명이 결정된다. 그렇기 때문에 정보 시스템을 구축함에 있어서 Entity는 매우 중요한 역할을 하게 된다.

Entity의 효과적인 구성은 데이터의 효과적인 구축과 동일하다고 할 수 있다. 이번 호에서는 데이터 모델링에서 Entity의 분할 중 중심 Entity/결과 Entity의 분할을 확인해 보자. 또한 1:1 OR 0 분할에 대해서도 살펴본다.

중심 Entity/결과 Entity의 분할

Entity를 2개 이상의 Entity로 분리하는 경우 중심 Entity와 결과 Entity가 도출되는 경우가 발생한다. 이와 같다면 Entity 분할 후 어떤 현상이 발생하게 될까?

  • - 조인 발생 시 성능 저하 : 2개의 Entity로 분할되므로 2개의 Entity에 의한 조인 발생 시 성능 저하가 발생하게 된다.
  • - 교차 Entity 필요 가능 : 2개의 Entity가 M:N 관계라면 교차 Entity를 도출하게 된다.
  • - 온라인 처리 : 온라인 처리 시 업무에 따라 통합 Entity가 유리한지 Entity 분리가 유리한지가 달라진다. 예를 들어, 카드 테이블에 거래내역 Data까지 저장돼 있다고 가정하자. 만약 과거 이력까지 조회하고자 한다면 통합 Entity가 온라인 처리 시 유리하다. 하지만 현재 Data만 조회하고자 한다면 통합 Entity일 경우 하나의 카드번호의 현재 Data를 빠르게 추출할 수 있는 방법이 제공돼야만 한다.
  • - 배치 처리 : 배치처리 시에는 중심 Entity로 분할한 경우가 Entity의 크기가 작아지므로 유리하다.
  • - 업무 유연성(Entity별) : Entity별로 업무가 변경될 경우에는 해당 Entity만 수정하면 되므로 중심 Entity로 분리하는 경우가 유리하다.
  • - 업무 유연성(전체) : 전체 업무 유연성은 중심 Entity를 분리하는 것과는 관계가 없으므로 두 가지 모두 동일하다.
  • - 관리 : 중심 Entity로 분리하는 경우에는 Data와 분리해 작업이 가능하기 때문에 더 유리하다.
  • - 저장 공간 : 근본 Entity로 분리한 경우 Entity의 크기가 감소하므로 저장 공간은 감소하게 된다.
  • - Data 정합성 : 중심 Entity로 분리한 경우에는 중복된 Data를 제거하게 되므로 성능은 향상된다.
  • - 업무 분석 : 중심 Entity로 분리한 경우에는 Entity가 분리돼 있으므로 유리할 수 있다.

  • [그림1] 중심 Entity와 결과 Entity의 분할
  • 중심 Entity와 결과 Entity의 분할

  • [표1] 통합 Entity와 중심 Entity 분리
  • 항목 통합 Entity 중심 Entity 분리 비고
    온라인 처리 - - - 업무에 따라 다음
    - 이력 데이터까지 조회하는 경우에는 분리가 불리
    배치 처리 불리 유리 - Data 감소 및 개별작업 가능
    업무 유연성 (Entity 별) 불리 유리 - 별도의 Entity
    업무 유연성 (전체) - -
    관리 불리 유리 - 개별 작업 가능
    저장 공간 불리 유리 - Entity의 크기감소 가능
    Data 정합성 불리 유리 - 중복된 Data 제거시에는 Data 정합성 강화
    업무분석 불리 유리 - Entity Name으로 구분가능

위와 같이 중심 Entity에 대한 분리가 장점이 많지만 온라인 처리에서 문제가 발생할 수 있다면 Entity 분리를 하지 않거나 온라인 처리에 대한 최적화 방안이 제시돼야 할 것이다.

1:1 OR 0 분할

0 분할은 조인이 발생하지 않는다면 성능에 유리하다. 1:1 OR 0 분할은 조인의 증가와 OUTER 조인 또는 FULL OUTER 조인이 발생할 가능성이 높아지며 이는 성능을 저하시키게 된다. 또한 태생이 같은 Entity를 수직 분할했기 때문에 정합성에는 불리하다.

예를 들면, 민원 목록까지는 자주 조회하고 민원 내용은 자주 조회되지 않을 경우 1:1 OR 0 분할을 고려해 1:1 OR 0 분할을 수행한다면 두 테이블을 조인할 경우 OUTER 조인이 수행될 가능성이 높다. OUTER 조인은 실행계획이 고정돼 유연성이 없게 된다.

일반적으로 조인 수행 시 (+)가 없는 Entity를 먼저 액세스하게 되므로, 각각의 Entity에는 반드시 필요한 인덱스가 정해진다. 만약, 해당 인덱스가 존재하지 않는다면 성능 저하가 발생한다.

  • - 온라인 처리 : 1:1 OR 0 분할 시 조인이 자주 발생한다면 성능은 저하되며 조인이 발생하지 않는다면 온라인 처리 시 성능은 향상된다.
  • - 배치 처리 : 배치처리 시에는 1:1 OR 0 분할한 경우가 개별적으로 배치 처리를 수행할 수 있으므로 유리하다.
  • - 업무 유연성(Entity별) : Entity별로 업무가 변경될 경우에는 해당 Entity만 수정하면 되므로 1:1 OR 0 분할을 수행한 경우가 유리하다.
  • - 업무 유연성(전체) : 전체 업무 유연성은 두 가지 모두 동일하다.
  • - 관리 : 1:1 OR 0 분할의 경우에는 개별적으로 작업이 가능하기 때문에 더 유리하다.
  • - 저장 공간 : 1:1 OR 0 분할은 동일한 Entity를 수직 분할한 것이므로 저장 공간은 두 가지 모두 동일하다.
  • - Data 정합성 : 1:1 OR 0 분할은 동일한 Entity를 수직 분할한 것이므로 Data 정합성에 문제가 발생할 수 있다.
  • - 업무 분석 : 1:1 OR 0 분할은 동일한 Entity를 수직 분할한 것이므로 업무 분석에는 불리해진다.

  • [그림2] 1:1 or o 분할
  • 1:1 or o 분할

  • [표2] 통합 Entity와 1:1 OR 0 Entity 분리
  • 항목 통합 Entity 1:1 OR 0 Entity 분리 비고
    온라인 처리 - - - 조인 발생시에는 Entity 분리가 불리
    배치 처리 불리 유리 - 개별작업 가능
    업무 유연성 (Entity 별) 불리 유리 - 별도의 Entity
    업무 유연성 (전체) - -
    관리 불리 유리 - 개별 작업 가능
    저장 공간 - -
    Data 정합성 유리 불리 - 생성이 동일한 Data의 분리
    업무분석 유리 불리

위와 같이 1:1 OR 0 분할은 단점이 많을 수 있으며 조인이 자주 발생한다면 1:1 OR 0 분할을 수행하지 않는 것이 유리할 수 있다. 1:1 OR 0 분할한 후 조인을 자주 사용해야 한다면 SQL 최적화를 수행해야 할 것이다.

- 강좌 URL : http://www.gurubee.net/lecture/2738

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 초보 개발자 [2017.08.07 11:43:54]

요즘 DB 공부를 이 사이트를 통해서 하고 있습니다. 좋은 설명 감사드립니다. 쉽게 이해가 되서 좋네요

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입