본문 바로가기

데이터베이스

[데이터베이스] 3. 물리 데이터모델 설계

반응형

필요 지식

  • 물리 데이터 모델링은 논리 모델을 적용하고자 하는 기술에 맞도록 상세화해 가는 과정이다. 따라서 앞으로 기술되는 내용은 특정 적용기술이나 DBMS를 전제할 수밖에 없기 때문에 시장 점유율을 고려하여 범용적으로 활용되는 기술과 제품을 선택하여야 한다. 앞으로 제시되는 내용은 시장에서 대부분 활용되고 있는 관계형 데이터베이스(RDBMS)의 오라클 데이터베이스를 기준으로 제시한다.

반정규화(Denormarlization) 개념

  • 정의
    • 정규화에 충실하여 모델링을 수행하면 종속성, 활용성은 향상되나 수행속도가 증가하는 경우가 발생하여 이를 극복하기 위해 성능에 중점을 두어 정규화하는 방법
  • 특징
    • 데이터 모델링 규칙에 얽매이지 않고 수행한다.
    • 시스템이 물리적으로 구현되었을 때 성능향상을 목적으로 한다.
  • 사용시기
    • 정규화에 충실하였으나 수행속도에 문제가 있는 경우
    • 다량의 범위를 자주 처리해야 하는 경우
    • 특정범위의 데이터만 자주 처리하는 경우
    • 처리범위를 줄이지 않고는 수행속도를 개선할 수 없는 경우
    • 요약 자료만 주로 요구되는 경우
    • 추가된 테이블의 처리를 위한 오버헤드를 고려하여 결정
    • 인덱스의 조정이나 부분범위처리로 유도하고, 클러스터링을 이용하여 해결할 수 있는지를 철저히 검토 후 결정

반정규화(Denormalization) 유형

  1. 중복 테이블 추가
    • 용도
      • 다량의 범위를 자주 처리하는 경우
      • 특정 범위의 데이터만 자주 처리되는 경우
      • 처리범위를 줄이지 않고는 수행속돌르 개선할 수 없는 경우
    • 방법
      • 집계 테이블의 추가
        • 활용하고자 하는 집계정보를 위한 테이블을 추가하고, 각 원본테이블에 트리거를 등록시켜 생성하여 활용하는데, 이때 트리거의 오버헤드에 유의해야 한다.
      • 진행 테이블의 추가
        • 이력관리 등의 목적으로 사용되며 활용도가 좋아지도록 기본키를 적절히 설정하여햐 한다.
      • 특정 부분만을 포함하는 테이블 추가
        • 거대한 테이블의 특정 부분만을 사용하는 경우 자주 사용되는 부분으로 새로운 테이블 생성하여 활용한다.
  2. 테이블 조합
    • 용도
      • 대부분 처리가 두 개 이상의 테이블에 대해 항상 같이 일어나는 경우에 활용한다.
    • 방법
      • 해당 테이블을 통합하여 설계한다.
    • 고려사항
      • 데이터 액세스가 보다 간편하지만 Row수가 증가하여 처리량이 증가하는 경우가 발생될 수 있으므로 이를 고려해야 한다.
      • 입력, 수정, 삭제 규칙이 복잡해질 수 있음에 유의해야 한다.
      • Not Null, Default, Check 등의 Constraint를 완벽히 설계하기 어려운 점이 있다.
  3. 테이블 분할
    •  용도
      • 칼럼의 사용빈도의 차이가 많은 경우
      • 각각의 사용자가 각기 특정한 부분만 지속적으로 사용하는 경우
      • 상황에 따라 SUPER-TYPE을 모두 내려 SUB-TYPE 별로 분할하거나 SUPER-TYPE만은 따로 테이블을 생성하는 경우
    • 방법
      • 수직 분할
        • 칼럼별 사용빈도의 차이가 많은 경우 자주 사용되는 칼럼들과 그렇지 않은 칼럼으로 분류하여 테이블을 분할하는 방법이다.
      • 수평 분할
        • 특정 범위별 사용 빈도의 차이가 많은 경우 해당 범위 별로 테이블을 분할하는 방법이다.
    • 고려사항
      • 특정 칼럼 또는 범위를 사용하지 않는 경우 수행속도에 많은 영향이 있음을 고려해야 한다.
      • 기본키의 유잀성 관리가 어려워진다.
      • 액세스 빈도나 처리할 데이터양이 적은 경우는 분할이 불필요함을 고려하여야 한다.
      • 데이터 프로세싱 관점이 아니라 검색에 중점을 두어 결정하여야 한다.
  4. 테이블 제거
    • 용도
      • 테이블 재정의나 칼럼의 중복화로 더 이상 액세스 되지 않는 테이블 발생할 경우
    • 방법
      • 해당 테이블을 삭제한다.
    • 고려사항
      • 관리 소홀로 인해, 누락시 유지보수 단계에서 많이 발생하는 현상임을 고려해야 한다.
      • 유지보수 단계에서 초기 설계 시 예상하지 못했던 새로운 요구사항이 증가하게 되면 눈앞의 해결에만 급급하여 테이블의 추가나 변경이 함부로 이렁나게 되어 시스템은 일관성과 통합성이 무너지게 된다는 사실을 간과해서는 안된다.
  5. 칼럼의 중복화
    • 용도
      • 자주 사용되는 칼럼이 다른 테이블에 분산되어 있어 상세한 조건에도 불구하고 액세스 범위를 줄이지 못하는 경우
      • 대량 데이터에서 Row별 연산 결과를 얻고자 할 때 성능향상을 위한 파생(Derived)칼럼을 추가할 경우
      • 기본 키의 형태가 적절하지 않거나 너무 많은 칼럼으로 구성된 경우
      • 정규화 규칙에 얽매이지 않으면서 성능 향상을 목적으로 한 반정규화(Denormalization)를 통한 중복 데이터를 허용하는 경우
    • 방법
      • 필요한 해당 테이블이나 칼럼을 추가한다.
    • 고려사항
      • 테이블 중복과 칼럼의 중복을 고려한다.
      • 데이터 일관성 및 무결성에 유의해야 한다.
      • SQL Group Function을 이용하여 해결 가능한지 검토한다.
      • 저장공간의 지나친 낭비를 고려해야 한다.

 

 

 

참고자료

  • NCS학습모듈 - 데이터입출력구현
반응형