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