데이터 모델의 중요한 요소 중의 하나가 Entity이다. 이와 같은 Entity는 여러 가지 형태로 탄생되며, 그 Entity에 의해 데이터베이스의 생명이 결정된다. 그렇기 때문에 정보 시스템을 구축함에 있어서 Entity는 매우 중요한 역할을 하게 된다.
Entity의 효과적인 구성은 데이터의 효과적인 구축과 동일하다고 할 수 있다. 이번 호에서는 데이터 모델링에서 Entity의 분할 중 중심 Entity/결과 Entity의 분할을 확인해 보자. 또한 1:1 OR 0 분할에 대해서도 살펴본다.
Entity를 2개 이상의 Entity로 분리하는 경우 중심 Entity와 결과 Entity가 도출되는 경우가 발생한다. 이와 같다면 Entity 분할 후 어떤 현상이 발생하게 될까?
항목 | 통합 Entity | 중심 Entity 분리 | 비고 |
---|---|---|---|
온라인 처리 | - | - | - 업무에 따라 다음 - 이력 데이터까지 조회하는 경우에는 분리가 불리 |
배치 처리 | 불리 | 유리 | - Data 감소 및 개별작업 가능 |
업무 유연성 (Entity 별) | 불리 | 유리 | - 별도의 Entity |
업무 유연성 (전체) | - | - | |
관리 | 불리 | 유리 | - 개별 작업 가능 |
저장 공간 | 불리 | 유리 | - Entity의 크기감소 가능 |
Data 정합성 | 불리 | 유리 | - 중복된 Data 제거시에는 Data 정합성 강화 |
업무분석 | 불리 | 유리 | - Entity Name으로 구분가능 |
위와 같이 중심 Entity에 대한 분리가 장점이 많지만 온라인 처리에서 문제가 발생할 수 있다면 Entity 분리를 하지 않거나 온라인 처리에 대한 최적화 방안이 제시돼야 할 것이다.
0 분할은 조인이 발생하지 않는다면 성능에 유리하다. 1:1 OR 0 분할은 조인의 증가와 OUTER 조인 또는 FULL OUTER 조인이 발생할 가능성이 높아지며 이는 성능을 저하시키게 된다. 또한 태생이 같은 Entity를 수직 분할했기 때문에 정합성에는 불리하다.
예를 들면, 민원 목록까지는 자주 조회하고 민원 내용은 자주 조회되지 않을 경우 1:1 OR 0 분할을 고려해 1:1 OR 0 분할을 수행한다면 두 테이블을 조인할 경우 OUTER 조인이 수행될 가능성이 높다. OUTER 조인은 실행계획이 고정돼 유연성이 없게 된다.
일반적으로 조인 수행 시 (+)가 없는 Entity를 먼저 액세스하게 되므로, 각각의 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
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.