Ⅱ. 데이터 입출력 구현 - 물리데이터 저장소 설계.
1. 물리 데이터 모델 설계.
물리 데이터 모델 설계
- 논리모델을 적용하고자 하는 기술에 맞게 상세화 하는 과정.
- DDL을 이용해 데이터 모델 정의.
물리모델링 변환 절차
- 개체를 테이블로 변환.
- 속성을 컬럼으로 변환 - 예약어 사용 지양
- UID를 기본키로 변환.
- 관계를 외래키로 변환.
- 컬럼유형과 길이 정의.
반정규화 수행.
- ▸ 반정규화
- 정규화된 엔티티, 속성, 관계에 대해 성능향상과 개발, 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 모델링 기법.
2. 물리 데이터 저장소 구성
▷ 테이블 제약조건 설계
참조무결성 제약조건
- 릴레이션 사이의 참조의 일관성을 보장하기 위한 조건.
- 제한(Restricted) : 기본값 / 참조되는 릴레이션이 있으면 연산 거절.
- 연쇄(Cascade) : 참조되는 데이터를 함계 삭제 처리 옵션.
널값(Nullify) : 참조되는 외캐키에 Null 처리 옵션.
- 참조무결성 SQL 예시 (삭제시)
ALTER TABLE "테이블명" ADD CONSTRAINT "설정명" FOREIGN KEY ("컬럼명") REFERENCES DEPARTMENT ("컬럼명") ON DELETE {RESTRICT | CASCADE | SET NULL} ;
인덱스(Index) 설계
- 인덱스 적용 기준 ( 분포도 : 특정 컬럼에 데이터가 테이블에 평균적으로 분포되어 있는 정도 )
- 분포도가 10~15% 이내인 경우 아래 수식 참고
- 분포도 = (1/ (컬럼 값의 종류)) * 100
- 분포도 = (컬럼 값의 평균 Row 수) / (테이블의 총 Row 수) * 100
- 분포도 번위 이상이어도 부분처리 목적인 경우 적용.
- 조회 및 출력 조건으로 사용되는 컬럼인 경우 적용.
- 기본키와 Unique 키의 제약조건을 사용할 경우 적용.
- 인덱스 컬럼 선정
- 분표도 높으면 단독생성.
- 자주 조합되는 컬럼은 결합인덱스로 생성.
- 수정이 적은 컬럼 이용.
- 설계 고려사항
- 지나치게 많은 인덱스는 오버헤드(Overhead)로 작용.
- 인덱스는 추가 저장공간이 필요함을 고려.
뷰(View) 설계
- VIEW 속성
- REPLACE : 뷰가 이미 존재하는 경우 재생성.
- FORCE : 본 테이블의 존재 여부에 관계없이 뷰 생성.
- NOFORCE : 기본 테이블이 존재할 때 뷰 생성.
- WITH CHECK OPTION : 서브 쿼리 내의 조건을 만족하는 행만 변경.
- WITH READ ONLY : 데이터 조작어(DML) 작업 불가.
클러스터(Cluster) 설계
- 인덱스 단점 해결 기법으로 분포도가 넓을 수록 유리.
- 액세스 효율향상을 위한 물리적 저장 방법이다.
- 적용기준
- 대량의 범위를 자주 액세스 하는 경우 적용.
- 인덱스 사용한 처리 부담이 되는 넓은 분포도에 활용.
- 여러개의 테이블이 빈번하게 조인을 일으킬때 활용.
- 설계 고려사항
- 검색 효율이 높으나 입력, 수정, 삭제시 부하 증가.
- UNION, DISTINCT, ORDER BY, GROUP BY 가 비번한 컬럼이면 검토 대상.
- 수정이 자주 발생하지 않는 컬럼은 검토 대상.
- 처리 범위가 넓어 문제 발생시 단일 테이블 클러스터링을 고려.
- 조인이 많아 문제 발생시 다중 테이블 클러스터링 고려.
파티션(Partition) 설계 ( Tip. 레 해 리 컴 )
- 레인지 파티셔닝 (Range Partitioning)
- 연속적인 숫자나 날짜를 기준으로 파티셔닝.
- 예) 우편번호, 일별, 월별, 분기별 등 의 데이터에 적합.
- 해시 파티셔닝 (Hash Partitioning)
- 파티션 키의 해시 함수값에 의한 파티셔닝.
- 균등한 데이터 분할이 가능하고 질의 성능이 향상 가능.
- 예) 파티션을 위한 범위가 없는 데이터에 적합.
- 리스트 파티셔닝 (List Partitioning)
- 특정 파티션에 저장 될 데이터에 대한 명시적 제어가 가능한 파티셔닝.
- 분포도가 비슷하고 데이터가 많은 SQL에서 컬럼의 조건이 많이 들어오는 경우 유용.
- 예) [한국, 일본, 중국 ⟶ 아시아] [노르웨이, 스웨덴, 핀란드 ⟶ 북유럽]
- 컴포지트 파티셔닝 (Composite Partitioning)
- 범위분할 이후 해시 함수를 적용하여 재분할 하는 파티셔닝.
- 큰 파티션에 대해 I/O 요청을 여러 파티션으로 분산 가능.
- 예) 레인지 파티셔닝 할 수 있는 컬럼이나, 파티션이 너무 커서 효과적으로 관리 할 수 없을때 유용.
파티션 장점 ( Tip. 성 가 백 합 )
- 성능 향상 : 데이터 액세스 범위를 줄여 성능 향상.
- 가용성 향상 : 전체 데이터의 훼손 가능성이 감소 및 데이터 가용성 향상.
- 백업 가능 : 분할 영역을 독립적으로 백업하고 복구 가능.
- 경합 감소 : 디스크 스트라이핑으로 입출력 성능을 향상 / 디스크 컨트롤러에 대한 경합의 감소.
- ▸ 디스크 스트라이핑 (Disk Striping)
- 성능 향상을 위해 데이터를 1개 이상의 디스크 드라이브에 저장하여 드라이브를 병렬로 사용 하는 기술.
디스크(Disk) 구성 설계
- 정확한 용량을 산정하여 사용 효율을 높인다.
- 업무량이 집중되는 디스크를 분리하여 설계한다.
- 입출력 경합을 최소화 하여 데이터의 접근 성능을 향상시킨다.
- 디스크 구성에 따라 테이블 스페이스 개수오 ㅏ사이즈 등을 결정한다.
- 파티션 수행 테이블은 별도로 분류 한다.
- 정보처리기사 필기 합격 후 실기대비 정리 및 책없이 간단히 보기위해 작성하였습니다.
- 2020년 수제비 정보처리기사 책 기반으로 정리 하였습니다.
- 저작권 관련 문제가 있다면 hojunbbaek@gmail.com 으로 메일 주시면 바로 삭제 조치 하도록 하겠습니다.
[정보처리기사 실기] Ⅱ. 데이터 입출력 구현 - 물리데이터 저장소 설계. (feat.수제비)