물리 데이터 모델링
물리 데이터 모델링이란 논리모델을 적용하고자 하는 기술에 맞도록 상세화 하는 과정입니다.
물리 데이터 모델링 변환 절차는 6단계로 구성되어 있습니다.
- 개체를 테이블로 변환
- 속성을 컬럼으로 변환
- UID를 기본키로 변환
- 관계를 외래키로 변환
- 컬럼 유형과 길이 정의
- 반 정규화 수행
다음은 변환 절차에 맞춰 논리모델을 물리모델로 상세화시킨 모습니다.
물리 데이터 모델링 변환 절차 중 반 정규화는 정규화 된 엔티티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복 통합, 분리 등을 수행하는 데이터 모델링의 기법입니다.
참조무결성 제약조건(Constraint)
참조무결성 제약조건이란 릴레이션과 릴레이션 사이 참조의 일관성을 보장하기 위한 조건입니다. 두 개의 릴레이션이 기본키. 외래키를 통해 참조 관계를 형성할 경우에 참조하는 외래키의 값은 항상 참조되고 있는 릴레이션에 기본키로 존재해야 합니다.
참조무결성을 지키기 위해 다음과 같은 3가지의 제약조건이 존재합니다.
제한(Restricted)
제한은 참조무결성 원칙을 위배하는 연산을 거절합니다.
예시로는 두 릴레이션이 있을 경우 첫번째 릴레이션이 두번째 릴레이션을 참조하고 있는 경우 두번째 릴레이션의 참조되는 튜플 삭제할 경우 삭제 연산을 거절하며 참조무결성 제약조건을 지키게 됩니다.
연쇄(Cascade)
연쇄는 참조되는 릴레이션에서 튜플을 삭제할 경우 이 튜플을 참조하는 튜플도 함께 삭제됩니다.
예시로는 두 릴레이션이 있을 경우 첫번째 릴레이션이 두번째 릴레이션을 참조하고 있는 경우 두번째 릴레이션의 참조되는 튜플 삭제할 경우 참조하는 튜플도 삭제되며 참조무결성 제약조건을 지키게 됩니다.
널 값(Nullify)
널 값은 참조되는 릴레이션에서 튜플을 삭제할 경우 이 튜플을 참조하는 튜플의 외래키에 NULL값을 넣습니다.
예시로는 두 릴레이션이 있을 경우 첫번째 릴레이션이 두번째 릴레이션을 참조하고 있는 경우 두번째 릴레이션의 참조되는 튜플 삭제할 경우 참조하는 튜플의 애트리뷰트에 NULL값을 넣으며 참조무결성 제약조건을 지키게 됩니다.
물리데이터 저장소
인덱스 (Index)
인덱스는 검색연산의 최적화를 위해 데이터 베이스 내 열에 대한 정보를 구성한 데이터 구조이다. 인덱스를 통해 전체 데이터 검색없이 필요한 정보에 대해 빠르게 찾을 수 있습니다.
특정 컬럼의 데이터가 테이블에 평균적으로 분포된 정도인 분포도는 10~15% 이내에 들어야 인덱스의 적정한 분포도라 이야기 됩니다.
10~15%인 경우 다음 식을 을 참고합니다.
- 분포도 = (1 / (컬럼 값의 종류)) * 100
- 분포도 = (컬럼 값의 평균 Row 수) / (테이블의 총 Row 수) * 100
분포도가 범위 이상리더라도 부분처리 목적으로 이용될 수도 있으며 또한 조회 및 출력 조건으로 사용되는 컬럼인 경우나 인덱스 자동생성 기본키와 Unique 키의 제약조건을 사용할 경우 다음 식을 적용합니다.
인덱스 컬럼 선정은 다음과 같다. 최대한 수정이 빈번하지 않으며 분포도가 좋은 컬럼의 경우 단독적으로 생성한다. 그리고 자주 조합되는 컬럼의 경우 결합 인덱스로 생성합니다.
결합 인덱스는 구성되는 사용빈도, 유일성, 정렬 등의 컬럼 순서 선정에 유의해야합니다.
인덱스 설계 시 고려할 사항으로는 첫번째로 지나치게 많은 인덱스는 오베헤드(Overhead)로 작용됩니다. 또한 넓은 범위의 인덱스 처리 시에는 전체처리보다 많은 오버헤드를 발생시킬수 있습니다. 다음으로는 인덱스는 추가적인 저장공간이 필요합니다. 마지막 고려사항으로는 인덱스는 테이블의 저장공간과 분리 될 수 있도록 설계해야합니다.
클러스터 (Cluster)
클러스터는 인덱스의 단점을 해결해 분포도가 넓을 수록 유리한 기법입니다. 즉, 분포도가 넓은 테이블의 클러스팅은 저장 공간의 절약이 가능하며 대량 범위를 자주 액세스하는 경우 적용됩니다.
클러스터 설계 시 검색 효율은 높여주지만 입력, 수정, 삭제시 부하가 증가됩니다. 만약 UNION, DISTINCT, ORDER BY, GUOUP BY가 빈번한 컬럼이거나 수정이 자주 발생하지 않으면 검토 대상입니다.
처리 범위가 넓어 발생하는 문제는 단일 테이블 클러스팅을 고려하며 조인이 많은 경우 다중 테이블 클러스팅을 고려해야합니다.
뷰 (View)
뷰의 주요 속성으로는 뷰가 이미 존재하는 경우 재생성 하는 REPLACE, 테이블의 존재 여부와 관계없이 뷰를 생성하는 FORCE, 기존 테이블이 존재할 대 뷰를 생성하는 NOFORCE가 있습니다.
뷰는 최적의 액세스 경로를 사용하도록 해야하며 사용에 따라 수행속도의 문제가 발생할 수 있습니다.
파티션 (Partition)
파티션은 레인지 파티셔닝, 해시 파티셔닝, 리스트 파티셔닝, 컴포지트 파티셔닝 총 4가지 종류로 나눠집니다.
레인지 파티셔닝(Range Partitioning)은 연속적인 숫자나 날짜를 기준으로 하는 파티션 기법 입니다. 관리가 쉬우며 관리 시간을 단축시킬수 있습니다.
해시 파티셔닝(Hash Partitioning)은 파티션 키의 해시 함수 값에 따른 파티션 기법 입니다. 균등하며 질의 성능을 향상시킬 수 있습니다.
리스트 파티셔닝(List Partitioning)은 특정 파티션에 저장 될 데이터에 대한 명시적 제어가 가능한 파티셔닝 기법 입니다. 분포도가 비슷하며 데이터가 많거나 컬럼의 조건이 많이 들어오는 경우 사용되기 좋습니다.
컴포지트 파티셔닝(Composite Partitioning)은 범위분할 이후 해시 함수를 적용하여 재분할하는 파티션 기법입니다. 큰 파티션에 대한 요청을 여러 파티션으로 분산 할 수 있습니다.
파티션을 이용하게 되면 성능과 가용성이 향상되며, 백업이 가능해 집니다. 또한 경합이 감소하게 됩니다.
디스크 (Disk)
디스크는 정확한 용량을 산정하여 디스크 사용을 효율을 높이며 입출력 경합을 최소화하여 데이터의 접근 성능을 향상시킵니다.
관련글
'공부' 카테고리의 다른 글
정보처리기사 공부 인터페이스 구현 (0) | 2021.02.16 |
---|---|
정보처리기사 공부 서버 프로그램 구현 (0) | 2021.02.15 |
정보처리기사 공부 통합 구현 (0) | 2021.02.13 |
정보처리기사 공부 요구사항확인 (0) | 2021.02.11 |
2021년 정보처리기사 시험일정 총정리 (0) | 2020.12.13 |
댓글