Loading [MathJax]/jax/output/HTML-CSS/config.js

Ch2_02 물리 데이터 저장소 설계

Study/정보처리기사 2020. 10. 11. 01:00

1. 물리 데이터 모델 설계

 

1. 물리 데이터 모델링 개념 : 논리모델을 적용하고자 하는 기술에 맞도록 상세화하는 과정

 

2. 물리 데이터 모델링 변환 절차

  A. 개체를 테이블로 변환

  B. 속성을 컬럼으로 변환

  C. UID를 기본키로 변환

  D. 관계를 외래키로 변환

  E. 컬럼 유형과 길이 정의

  F. 반정규화 수행

 

2. 물리 데이터 저장소 설계

 

1. 테이블 제약조건 설계

  A. 참조무결성 제약조건 : 릴레이션과 릴레이션 사이에 대해 참조의 일관성 보장하기 위한 조건

    i. 제한 : 참조무결성 원칙을 위배하는 연산을 거절하는 옵션

    ii. 연쇄 : 참조되는 릴레이션에서 튜플을 삭제하고, 참조되는 릴레이션에서 이 튜플을 참조하는 튜플들도 함께 삭제하는 옵션

    iii. 널값 : 참조되는 릴레이션에서 튜플을 삭제하고, 참조하는 릴레이션에서 해당 튜플을 참조하는 튜플들의 외래키에 NULL 값을넣는 옵션, 만약 릴레이션에서 NULL값이 들어갈 애트리뷰트에 NOT NULL이라고 명시되어 있다면 삭제연산 거절

 

2. 인덱스 설계

  A. 인덱스 개념 : 검색 연산 최적화를 위해 DB 내 열에 대한 정보를 구성한 데이터 구조

  B. 인덱스 적용 기준 : 인덱스 분포도가 10~15%이내인 경우

    i. 분포도 = 1/컬럼값의 종류 * 100

    ii. 분포도 = 컬럼값의 평균 row / 테이블의 충 row * 100

  C. 인덱스 컬럼 선정

    i. 분포도가 좋은 컬럼은 단독적으로 생성

    ii. 자주 조합되어 사용되는 컬럼은 결합 인덱스로 생성

  D. 설계 시 고려사항 : 지나치게 많은 인덱스는 오버헤드로 작용, 추가적인 저장공간이 필요함을 고려

 

3. 뷰 설계

  A. 뷰 속성

    i. REPLACE : 뷰가 이미 존재하는 경우 재생성

    ii. FORCE : 본 테이블의 존재 여부에 관계없이 뷰 생성

    iii. NOFORCE : 기본 테이블이 존재할 때 뷰 생성

    iv. WITH CHECK OPTION : 서브 쿼리 내의 조건을 만족하는 행만 변경

    v. WITH READ ONLY : 데이터 조작어 작업 불가

  B. 뷰 설계시 고려사항 : 뷰 사용에 따라 수행속도에 문제가 발생할 수 있음

 

4. 클러스터 설계

  A. 적용 기준 : 인덱스의 단점을 해결한 기법, 분포도가 넓을수록 유리, 액세스 기법이 아니라 액세스 효율 향상을 위한 물리적 저장 방법

  B. 클러스터 설계 시 고려사항

    i. 검색 효율을 높여주나 입력, 수정, 삭제시는 부하 증가

    ii. UNION, DISTINCT 등 빈번한 컬럼이면 검토 대상

 

5. 파티션 설계

  A. 파티션의 종류

    i. 레인지 파티셔닝 : 연속적인 숫자나 날짜를 기준으로 하는 파티셔닝 기법

    ii. 해시 파티셔닝 : 파티션 키의 해시 함수 값에 의한 파티셔닝 기법. 균등한 데이터 분할이 가능, 질의 성능이 향상 가능

    iii. 리스트 파티셔닝 : 특정 파티션에 저장 될 데이터에 대한 명시적 제어가 가능한 파티셔닝 기법

    iv. 컴포지트 파티셔닝 : 범위분할에 이후 함수를 적용하여 재분할 하는 파티셔닝 기법

  B. 파티션의 장점

    i. 성능 향상

    ii. 가용성 향상

    iii. 백업 가능

    iv. 경합 감소 : 디스크 스트라이핑으로 입출력 성능 향상

 

6. 디스크 구성 설계

  A. 정확한 용량 산정, 효율 높임

  B. 업무량이 집중되어 있는 디스크 분리 설계

 

TOP