IT/정보처리기사실기 공부

[정보처리기사실기] 인덱스, 뷰, 클러스터, 파티션, 데이터베이스 용량 설계

phobi-k 2020. 9. 30. 21:37

1. 인덱스 설계 (A) <키 값, 포인터>

 

  • 인덱스의 개념: 인덱스는 데이터 레코드에 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성된 데이터 구조이다.
    • 인덱스가 없으면 값을 찾을 때 TABLE SCAN이 발생한다.
    • 클러스터드 인덱스 : 인덱스 키의 순서에 따라 데이터가 정렬되어 있는 방식 (한 개의 릴레이션에 하나의 인덱스만 생성)
    • 넌-클러스터드 인덱스 : 인덱스의 키 값만 정렬되어 있을 뿐 실제 데이터는 정렬되지 않는 방식 (한 개의 릴레이션에 여러 개의 인덱스 생성)
    • 트리 기반 인덱스 : 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것
      • B 트리 인덱스
      • B+ 트리 인덱스 : 인덱스 세트와 순차 세트로 구분
        • 인덱스 세트 : 단말 노드가 아닌 노드로 구성
        • 순차 세트 : 단말 노드로만 구성
    • 비트맵 인덱스
      • 인덱스 컬럼의 데이터를 Bit값인 0 , 1로 변환하여 인덱스키로 사용하는 방법
      • 분포도가 좋은(10~15%) 컬럼에 적합
    • 함수 기반 인덱스
      • 컬럼의 값 대신 컬럼에 특정 함수나 수식을 적용하여 산출된 값을 사용하는 것으로 B+ 트리 인덱스 또는 비트맵 인덱스를 생성하여 사용한다.
    • 비트맵 조인 인덱스
      • 다수의 조인된 객체로 구성된 인덱스
    • 도메인 인덱스 (확장형 인덱스)
      • 개발자가 필요한 인덱스를 직접 만들어 사용하는 것 

2. 뷰 설계 (A) (가상 테이블)

  • 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 사용하는 가상 테이블이다.
    • 물리적으로 존재하지 않는다
    • 데이터의 논리적 독립성을 제공한다.
    • 기본 테이블의 기본키를 포함해야 삽입, 삭제, 갱신이 가능하다
    • 접근 제어를 통한 자동 보안이 제공된다.

3. 클러스터 설계 (A) (비슷한 것끼리 묶는다)

  • 데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
    • 클러스터링키로 지정된 컬럼 값의 순서대로 저장된다
      • 클러스터링키 : 클러스터링된 테이블에서 각각의 행에 접근할 때 기준이 되는 열 (Row)
    • 클러스터의 특징
      • 클러스터링 된 테이블은 데이터 조회 속도는 향상시키지만 데이터 입력, 수정, 삭제는 저하시킨다.
      • 데이터의 분포도가 넓을수록 유리하다 (인덱스는 좋을 수록 유리)
    • 클러스터 대상 테이블
      • 분포도가 넓은 테이블
      • 자주 조인되는 테이블
      • 대량의 범위를 자주 조회하는 테이블
      • 입력, 수정, 삭제가 자주 발생하지 않는 테이블

4. 파티션 설계 (A)

  • 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것
    • 대용량DB의 경우 중요한 몇 개의 테이블에 데이터가 집중되므로 작은 단위로 나눠 분산시키기 위해 사용
    • 테이블이나 인덱스를 파티셔닝 하면 파티션키(파티션을 나누는 기준이 되는 열) 또는 인덱스키에 따라 물리적으로 별도의 공간에 저장!
  • 장점
    • 데이터가 분산되어 저장되어 디스크의 성능 향상
    • 파티션별로 백업. 복구하므로 속도가 빠름
    • 데이터 가용성 향상
  • 단점
    • 테이블간 조인에 대한 비용 증가
    • 용량이 작은 테이블에 파티셔닝하면 오히려 성능 저하
  • 파티셔닝 종류
    • 범위 분할 : 열의 값을 기준으로 분할 (일별, 월별, 분기별)
    • 해시 분할 : 해시 함수를 적용한 결과 값에 따라 분할
      • 데이터를 고르게 분산할 때 유용
      • 특정 데이터가 어디에 있는지 모른다
    • 조합 분할 : 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할한다.
  • 인덱스 파티션 : 파티션된 테이블의 데이터를 관리하기 위해 인덱스를 나눈 것
    • Local Partitioned Index : 테이블 파티션과 인덱스 파티션 1:1 대응 ( 데이터 관리가 쉽다)
    • Global Partitioned Index : 테이블 파티션과 인덱스 파티션이 독립적으로 구성 

데이터베이스 용량 설계 (C)

  • 목적: 데이터베이스의 용량을 정확히 산정하여 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 을 높인다
  • 절차
    • 1. 데이터 예상 건수, 로우 길이, 보존 기간, 증가율 등 기초 자료를 수집하여 용량을 분석한다.
    • 2. 분석된 자료를 바탕으로 DBMS에 이용될 테이블, 인덱스 등 오브젝트별 용량을 산정한다.
    • 3. 테이블과 인덱스의 테이블스페이스 용량을 산정한다.
    • 4. 데이터베이스에 저장될 모든 데이터 용량과 데이터베이스 설치 및 관리를 위한 시스템 용량을 합해 디스크 용량을 산정한다.