ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 입출력 구현 - 물리 데이터 저장소 구성
    정보처리기사(자격증)/데이터 입출력 구현 2020. 10. 2. 16:42

    물리 데이터 저장소 구성

     

     물리 데이터 저장소 구성을 위해 DBMS를 선정한 이후의 활동으로 구성된다.

     

     

    테이블 제약조건(Constraint) 설계

     

    참조무결성 제약조건

     

     - 릴레이션과 릴레이션 사이에 대해 참조의 일관성을 보장하기 위한 조건

     

     - 두 개의 릴레이션이 기본키, 외래키를 통해 참조 관계를 형성할 경우, 참조 하는 외래키의 값은 항상 참조되는 릴레이션에 기본키로

     

       존재해야 한다.

     

    1. 제한(Restricted)

     

     - 참조 무결성 원칙을 위배하는 연산을 거절하는 옵션

     

    2. 연쇄(Cascade)

     

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

     

    * 튜플 : 릴레이션의 행

     

    3. 널 값(Nullify)

     

    - 참조되는 릴레이션에서 튜플을 삭제하고, 참조하는 릴레이션에서 해당 튜플을 참조하는 튜플들의 외래 키에 Null 값을 넣는 옵션

     

     - 만일 릴레이션을 정의할 때 참조하는 릴레이션에서 Null 값이 들어갈 애트리뷰트에 'Not null' 이라고 명시되어 있다면 삭제 연산 거절

     

    * 애트리뷰트 : 릴레이션의 열

     

    인덱스 설계 

     

    인덱스 적용 기준, 컬럼 선정 등을 고려하여 설계한다.

     

    인덱스 개념

     

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

     

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

     

    인덱스 적용 기준

     

     인덱스 분포도가 10~15% 이내인 경우 아래 수식을 참고한다.

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

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

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

     

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

     

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

     

    인덱스 컬럼 선정

     

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

     

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

     

     - 결합 인덱스는 구성되는 컬럼 순서 선정(사용빈도, 유일성, 정렬 등) 에 유의한다.

     

     - 가능한 한 수정이 빈번하지 않은 컬럼을 선정한다.

     

    설계 시 고려 사항

     

     - 지나치게 많은 인덱스는 오버헤드(Overhead)로 작용

     

     - 인덱스는 추가적인 저장 공간이 필요함을 고려해야 한다.

     

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

     

     - 인덱스와 테이블 저장 공간을 적절히 분리될 수 있도록 설꼐해야 한다.

     

     뷰(View) 설계

     

     - 뷰의 속성 및 고려 사항을 참고하여 설계

     

    뷰 속성

     

     대표적인 뷰의 속성으로 REPLACE, FORCE, NOFORCE 등이 있다.

    속성 설명
    REPLACE 뷰가 이미 존재하는 경우 재생성
    FORCE 본 테이블의 존재 여부의 관계없이 뷰 생성
    NOFORCE 기본 테이블이 존재할 때 뷰 생성
    WITH CHECK OPTION 서브 쿼리 내의 조건을 만족하는 행만 변경
    WITH READ ONLY 데이터 조작어(DML) 작업 불가

     

    클러스터(Cluster) 설계

     

     클러스터의 적용 기준 및 고려사항을 참고하여 설계

     

     * 클러스터 : 대상이 되는 범위(모집단)의 요소를 몇개 모든 단위체

     

    적용 기준

     

     - 인덱스의 단점을 해결한 기법으로, 분포도가 넓을 수록 오히려 유리

     

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

     

     - 분포도가 넓은 테이블의 클러스터링은 저장 공간의 절약이 가능

     

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

     

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

     

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

     

     클러스터 설계 시 고려 사항

     

     - 검색 효율은 높여주나 입력, 수정, 삭제 시는 부하가 증가함을 고려

     

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

     

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

     

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

     

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

     

     

    파티션(Partition) 설계

     

     파티션의 종류, 장점 등을 확인

     

     파티션의 종류

     

     - 레인지 파티셔닝, 해시 파티셔닝, 리스트 파티셔닝, 컴포지트 파티셔닝 등이 있다.

     

    1. 레인지 파티셔닝(Range Partitioning)

     

     - 연속적인 숫자나 날짜를 기준으로 하는 파티셔닝 기법

     

     - 손쉬운 관리 기법을 제공하여 관리 시간의 단축이 가능

     

     * 우편번호, 일별, 월별, 분기별 등의 데이터에 적합

     

    2. 해시 파티셔닝(Hash Partitioning)

     

     - 파티션 키의 해시 함수 값에 의한 파티셔닝 기법이다.

     

     - 균등한 데이터 분할이 가능하고 질의 성능 향상 가능

     

    * 파티션을 위한 범위가 없는 데이터에 적합

     

     3. 리스트 파티셔닝(List Partitioning)

     

     - 특정 파티셔넹 저장 될 데이터가 대한 명시적 제어가 가능한 파티셔닝 기법

     

     - 분포도가 비슷하고 데이터가 많은 SQL에서 컬럼의 조건이 많이 들어오는 경우 유용

     

    4. 컴포지트 파티셔닝(Composite Partitioning)

     

     - 범위분할에 이후 해시 함수를 해시 함수를 적용하여 재분할 하는 파티셔닝 기법

     

     - 큰 파티션에 대한 I/O 요청을 여러 파티션으로 분산할 수 있다.

     

    * 레인지 파티셔닝할 수 있는 컬럼이나, 파티션이 너무 커서 효과적으로 관리할 수 없을 때 유용

     

     파티션의 장점

     

     - 파티션의 장점으로는 성능 향상, 가용성 향상, 백업 가능, 경합 감소 등이 있다.

    속성 설명
    성능 향상 데이터 엑세스 범위를 줄여 성능 향상
    가용성 향상 전체 데이터의 훼손 가능성 감소 및 데이터 가용성 향상
    백업 가능 분할 영역을 독립적으로 백업하여 복구 가능
    경합 감소 디스크 스트라이핑으로 입출력 성능을 향상
    디스크 컨트롤러에 대한 경합의 감소

    * 디스크 스트라이핑(Disk Striping) : 성능 향상을 위해 데이터를 1개 이상의 디스크 드라이브에 저장하여 드라이브를 병렬로 사용

     

    디스크 구성 설계

     

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

     

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

     

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

     

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

     

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

     

     

    댓글

Designed by Tistory.