정보처리기사

3.2 물리 데이터 저장소 설계

추띠기 2022. 9. 13. 17:50

1) 물리 데이터 모델 설계

물리 데이터 모델링이란?

논리모델을 적용하고자 하는 기술에 맞도록 상세화해가는 과정.

 

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

논리 -> 물리

1. 개체를 테이블로 변환

2. 속성을 컬럼으로 변환

3. UID를 기본키로 변환

4. 관계를 외래키로 변환

5. 컬럼 유형과 길이 정의

6. 반 정규화 수행

 

2) 물리 데이터 저장소 구성

테이블 제약 조건 설계

- 참조무결성 제약 조건

> 제한(Restricted) : 릴레이션과 릴레이션 사이에 대해 참조의 일관성을 보장하기 위한 조건.

> 연쇄(Cascade)

> 널값(Nullify) : 참조되는 릴레이션에서 튜플 삭제하고 참조하는 릴레이션에서 해당 튜플을 참조하는 튜플들의 외래 키에 NULL값을 넣는 옵션.

 

인덱스란?

검색 연산의 최적화를 위해 DB 내 열에 대한 정보를 구성한 데이터 구조.

인덱스를 통해 전체 데이터의 검색 없이 필요한 정보에 대해 신속한 조회가 가능.

 

인덱스 적용 기준

인덱스 분포도가 10~ 15% 이내인 경우.

더보기

분포도 = (1/컬럼값의 종류) *100

분포도 = (컬럼 값의 평균 Row 수) / (테이블의 총 Row 수) *100

분포도가 범위 이상이더라도 부분처리를 목적으로 하는 경우 적용.

조회 및 출력 조건으로 사용되는 컬럼인 경우 적용.

인덱스 자동생성 기본키와 Unique 키의 제약 조건을 사용할 경우 적용.

 

인덱스 컬럼 선정

분포도가 좋은 컬럼은 단독 생성!

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

결합 인덱스는 구성되는 컬럼 순서 선정에 유의.

가능한 한 수정이 빈번하지 않은 컬럼으로 선정.

 

인덱스 설계 시 고려사항

지나치게 많은 인덱스는 오버헤드 작용.

인덱스는 추가적인 저장 공간이 필요함을 고려.

넓은 범위를 인덱스 처리 시 오히려 전체 처리보다 많은 오버헤드를 발생시킬 수 있음에 유의.

인덱스와 테이블의 저장 공간을 적절히 분리될 수 있도록 설계.

 

뷰 속성

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

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

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

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

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

 

뷰 설계 시 고려 사항

뷰 사용에 따라 수행속도에 문제 발생 가능.

뷰의 조건은 최적의 액세스 경로를 사용할 수 있도록!

 

클러스터의 적용 기준

인덱스의 단점 해결.

액세스 기법이 아니라 액세스 효율 향상을 위한 물리적 저장 방법

분포도가 넓을수록 유리. 분포도가 넓은 테이블의 클러스터링은 저장 공간의 절약 가능

대량의 범위를 자주 액세스하는 경우 적용

인덱스를 사용한 처리 부담이 되는 넓은 분포도에 활용

여러 개의 테이블이 빈번하게 조인을 일으킬 때 활용

 

클러스터 설계 시 고려사항

검색 효율은 높여주지만 입력, 수정, 삭제 시에 부하 증가.

UNION, DISTINCT, ORDER BY, GROUP BY가 빈번한 컬럼이면 검토 대상.

수정이 자주 발생하지 않는 컬럼은 검토 대상.

처리 범위가 넓어 문제가 발생하는 경우 단일 테이블 클러스터링 고려.

조인이 많아 문제가 발생되는 경우 다중 테이블 클러스터링 고려.

 

파티션의 종류

- 레인지 파티셔닝 : 연속적인 숫자나 날짜를 기준으로 하는 기법. 손쉬운 관리 기법으로 시간 단축 가능

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

- 리스트 파티셔닝 : 특정 파티션에 저장 될 데이터에 대한 명시적 제어가 가능한 기법. 분포도 비슷하고 데이터가 많은 SQL에서 컬럼의 조건이 많이 들어오는 경우 유용.

- 컴포지트 파티셔닝 : 2개 이상의 파티셔닝 결합하는 기법. 큰 파티션에 대한 I/O 요청을 여러 파티션으로 분산 가능.

- 라운드로빈 파티셔닝 : 라운드로빈 분할로 회전하면서 새로운 행이 파티션에 할당하는 방식. 파티션에 행의 고른 분포를 원할 때 사용.

 

파티션의 장점

- 성능 향상 : 데이터 액세스 범위를 줄여 성능 향상

- 가용성 향상 : 전체 데이터의 훼손 가능성이 감소 및 데이터 가용성 향상

- 백업 가능 : 분할 영역을 독립적으로 백업하고 복구 가능

- 경합 감소 : 디스크 스트라이핑으로 입출력 성능 향상. 디스크 컨트롤러에 대한 경합 감소

 

디스크 구성 설계

- 정확한 용량을 산정하여 디스크 사용의 효율 높임.

- 업무량이 집중되어 있는 디스크를 분리하여 설계.

- 입출력 경합을 최소화하여 데이터의 접근 성능 향상.

- 디스크 구성에 따라 테이블스페이스 개수와 사이즈 등 결정.

- 파티션 수행 테이블은 별도 분류.