[정보처리기사 실기] 04. 데이터 입출력 구현 - 물리 데이터 저장소 설계
참조무결성, 파티션의 종류 숙지
1. 물리 데이터 모델 설계
물리 데이터 모델링 : 논리 모델을 적용하고자 하는 기술에 맞도록 상세화 해가는 과정
2. 물리 데이터 저장소 구성
(1) 테이블 제약 조건(Constraint) 설계
참조무결성 제약 조건
- 릴레이션과 릴레이션 사이에 대해 참조의 일관성을 보장하기 위한 조건
- 두 개의 릴레이션이 기본키, 외래키를 통해 참조 관계를 형성할 경우, 참조하는 외래키의 값은 항상 참조되는 릴레이션에 기본키로 존재해야 한다.
- 제한(Restricted) - 참조무결성 원칙을 위배하는 연산을 거절하는 옵션 (참조되는 튜플 삭제 거절)
- 연쇄(Cascade) - 참조되는 튜플 삭제시 해당 튜플을 참조하는 튜플들도 함께 삭제하는 옵션
- 널값(Set NULL) - 참조되는 튜플 삭제시 해당 튜플을 참조하는 튜플들의 외래키에 NULL 값을 넣는 옵션
/ 속성(Attribute)이 NOT NULL인 경우 연산 거부
(2) 인덱스(Index) 설계
인덱스 적용 기준, 컬럼 선정 등을 고려하여 설계
인덱스 개념
- 전체 데이터의 검색 없이 필요한 정보를 빠르게 조회가 가능하게 하는 데이터 구조
인덱스 적용 기준
- 조회 및 출력 조건으로 사용되는 컬럼인 경우 적용
- 분포도가 10~15% 이내인 경우 적용
(컬럼 값의 평균 Row 수) / (테이블의 총 Row 수) x 100 = 분포도
분포도(Selectivity) 란?
- 특정 컬럼의 데이터가 테이블에 평균적으로 분포되어 있는 정도
- 분포도 좋음은 분포도가 낮음을 의미
인덱스 컬럼 선정
- 분포도가 좋은 컬럼은 단독적으로 생성
- 자주 조합되어 사용되는 컬럼은 결합 인덱스로 생성
인덱스 설계 시 고려 사항
- 지나치게 많은 인덱스는 오버헤드(Overhead)로 작용한다
- 넓은 범위를 인덱스 처리 시 오히려 전체 처리보다 많은 오버헤드를 발생시킬 수 있음을 유의
(3) 뷰(View) 설계
- 뷰의 속성 및 고려 사항을 참고하여 설계
대표적인 뷰의 속성
- REPLACE : 뷰가 이미 존재하는 경우 재생성
- FORCE : 본 테이블의 존재 여부에 관계없이 뷰 생성
- NOFORCE : 기본 테이블이 존재할 때 뷰 생성
뷰 설계 시 고려 사항
- 뷰 사용에 따라 수행속도에 문제가 발생할 수 있음
- 뷰의 조건은 최적의 액세스 경로를 사용할 수 있도록 한다
(4) 클러스터(Cluster) 설계
클러스터 : 대상이 되는 범위(모집단)의 요소를 몇 개 모은 단위체
클러스터의 적용 기준 및 고려 사항을 참고하여 설계
적용 기준
- 인덱스의 단점을 해결한 기법으로, 분포도가 넓을수록 오히려 유리
- 대량의 범위를 자주 액세스하는 경우 적용
클러스터 설계 시 고려 사항
- 검색 효율은 높여주나 입력, 수정, 삭제 시는 부하가 증가함을 고려
파티션(Partition) 설계
- 파티션의 종류, 장점 등을 확인
파티션의 종류 - 레해리컴라
- 레인지(Range) 파티셔닝 : 연속적인 숫자나 날짜 기준으로 하는 파티셔닝 기법
- 해시(Hash) 파티셔닝 : 파티션 키의 해시 함수 값에 의한 파티셔닝 기법
- 리스트(List) 파티셔닝 : 특정 파티션에 저장 될 데이터에 대한 명시적 제어가 가능한 파티셔닝 기법
- 컴포지트(Composite) 파티셔닝 : 레인지, 해시, 리스트 중 2개 이상의 파티셔닝 결합하는 파티셔닝 기법
- 라운드로빈 파티셔닝(Round-Robin) 파티셔닝 : 회전하면서 새로운 행이 파티션에 할당하는 방식
파티션의 장점
- 성능 향상, 가용성 향상, 백업 가능, 경합 감소 등이 있다.