오답노트

  1. 성능을 고려한 데이터 모델링 순서
    1. 데이터 모델링을 할 때 정규화를 정확하게 수행
    2. 데이터베이스 용량산정 수행
    3. 데이터베이스에 발생되는 트랜잭션 유형 파악
    4. 용량과 트랜잭션 유형에 따라 반정규화 실행
    5. 이력모델의 조정, PK/FK조정, 슈퍼타입/서브타입 조정 등을 수행
    6. 성능관점에서 데이터 모델을 검증
  2. 3차 정규화가 필요한 2차 정규형의 모습
  3. 4차 정규화가 필요한 3차 정규형의 모습
  4. 특정 컬럼만 지나치게 많이 조회될 경우 이는 따로 테이블을 분할하여 부분테이블 추가를 진행해주는 것이 좋음.
    1. 굳이 전체 테이블을 복사하는 중복 테이블을 추가할 필요는 없음
  5. 반정규화 대상
    1. 반정규화 정보에 대한 재현의 적시성으로 판단
    2. EX)
      • 다수 테이블에 대한 다량의 조인이 불가피할 경우 데이터 제공의 적시성 확보를 위한 필수 반정규화 대상 정보가 됌
    3. 주의사항
      • 탐색 대상의 데이터 크기로 판단하지 않음. 다량 데이터에 대한 인덱스를 활용한 탐색 방법은 Random처리의 특성으로 성능 저하가 불가피
      • 이럴 때는 클러스터나 파티션을 활용해 해결하지 반정규화를 사용하지 않음
  6. 트랜잭션의 처리방식
    1. 항상 전체를 대상으로 일괄 처리
      1. 때문에 테이블은 서브타입별로 개별 유지하는 것으로 변환하면 Union연산에 의해 성능이 저하될 수 있음
    2. 항상 서브타입은 개별로 처리
      1. 때문에 테이블은 하나로 통합하여 변환하면 불필요하게 많은 양의 데이터가 집적되어 있어 성능이 저하될 수 있음
    3. 항상 슈퍼+서브타입은 함께 처리
      1. 때문에 개별로 유지하면 조인에 의해 성능이 저하될 수 있음
    4. 항상 전체를 통합하여 분석 처리
      1. 때문에 하나의 테이블로 통합되어 있으면 분석관점에서는 처리 속도가 빨라짐(성능이 좋아짐)
  7. 조회가 많이되는 두 테이블의 연관 속성
    1. FK로 지정된 속성에 대해서도 Index를 생성해주는 것이 조회 성능을 증가 시킴
    2. 설사 테이블간 관계 설정을 하였을 때 FK를 지정하지 않았더라도 INDEX를 생성해주는 것이 성능상 유리함(어차피 차후 JOIN할거니)
  8. PK순서 지정시에는 최대한 조회된 결과를 줄이기 위해 제일 먼저 '=' 비교가 가능한 값 그 다음은 '<', '>', 'BETWEEN'과 같은 최소 범위 값이 오는 것이 좋음
  9. 분산데이터베이스

데이터 모델링 순서

  1. 정규화를 정확히 수행
  2. 데이터베이스 용량산정 수행
  3. 데이터베이스에 발생되는 트랜잭션의 유형 파악
  4. 용량과 트랜잭션의 유형에 따라 반정규화를 수행
  5. 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정등을 수행