정보처리기사 실기 2장. 데이터 입출력 구현_6
2-19. 인덱스
• 인덱스 (Index)
< 키 값, 포인터 > 쌍으로 구성된 데이터 구조
‣ 인덱스를 활용하면 데이터 레코드에 빠르게 접근 가능
• 인덱스의 종류
| 1. 트리 기반 인덱스 | 인덱스를 저장하는 블록들이 트리 구조로 구성 |
| 2. 비트맵 인덱스 | 인덱스 컬럼의 데이터를 Bit 값으로 변환하여 인덱스 키로 사용 |
| 3. 함수 기반 인덱스 | 컬럼에 특정 함수나 수식을 적용한 산출된 값을 사용 |
| 4. 비트맵 조인 인덱스 | 다수의 조인된 객체로 구성된 인덱스 |
| 5. 도메인 인덱스 | 개발자가 필요한 인덱스를 직접 만듦 |
• 클러스터드 / 넌클러스터드 인덱스
| 클러스터드 인덱스 (Clustered Index) |
인덱스 키의 순서에 따라 데이터가 정렬되어 저장 |
| 실제 데이터가 순서대로 저장되어 있어 인덱스를 검색하지 않아도 빠르게 데이터를 찾을 수 있음 | |
| 넌클러스터드 인덱스 (Non-Clustered Index) |
인덱스의 키 값만 정렬되어 있고, 실제 데이터는 정렬되어 있지 않음 |
| 데이터 삽입, 삭제 시 데이터를 재정렬해 순서를 유지해야함 |
2-20. 뷰 / 클러스터
• 뷰 (View)
가상 테이블
‣ 하나 이상의 기본 테이블로부터 유도
‣ 저장장치 내 물리적으로 존재하지 않지만, 사용자에게는 있는 것 처럼 간주됨
‣ 데이터를 안전하게 보호하는 효율적인 기법으로 사용 가능
• 뷰의 장단점
| 장점 | 단점 |
| 논리적 데이터 독립성을 제공 | 독립적인 인덱스를 가질 수 없음 |
| 동일 데이터에 대해 여러 사용자의 상이한 요구를 지원 | 뷰의 정의를 변경할 수 없음 |
| 간단하게 사용자의 데이터 관리 | 뷰로 구성된 내용에 대해 삽입, 삭제, 갱신 연산에 제약이 존재 |
| 접근 제어를 통해 자동 보안이 제공 |
• 클러스터 (Cluster)
동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
‣ 데이터의 분포도가 넓을수록 유리 → 비슷한 것 끼리 묶기 때문
‣ 단일 테이블 클러스터링 = 처리 범위가 넓은 경우
‣ 다중 테이블 클러스터링 = 조인이 많이 발생하는 경우
‣ 장점 : 데이터 조회 속도 향상
분포도가 넓은 테이블의 경우 저장 공간 절약 가능
‣ 단점 : 입력, 수정, 삭제시 작업 성능 저하
✓ 분포도

인덱스 = 분포도가 좁은 테이블에 유리
클러스터링 = 분포도가 넓은 테이블에 유리
2-21. 파티션
• 파티션 (Partition)
대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것
‣ 데이터 처리 = 테이블 단위
‣ 데이터 저장 = 파티션 단위
‣ 장점 : 성능 저하 방지 및 데이터 관리 용이
• 파티션의 장단점
| 장점 | 데이터 접근 시 액세스의 범위를 줄임 | 쿼리 성능 향상 |
| 파티션별로 데이터가 분산되어 저장 | 디스크 성능 향상 | |
| 파티션별로 백업 및 복구 수행 | 속도 향상 | |
| 시스템 장애 시 데이터 손상 정도를 최소화 | ||
| 데이터 가용성 향상 | ||
| 파티션 단위로 입출력을 분산시킬 수 있음 | ||
| 단점 | 하나의 테이블을 세분화 | 세심한 관리가 요구됨 |
| 테이블간 조인에 대한 비용이 증가 | ||
| 용량이 작은 테이블에 파티셔닝을 수행하면 오히려 성능이 저하됨 | ||
• 파티션의 종류
| 범위 분할 (Range Partitioning) |
지정한 열의 값을 기준으로 분할 |
| 기간에 따라 분할이 가능 | |
| 해시 분할 (Hash Partitioning) |
해시함수를 적용한 결과 값에 따라 데이터를 분할 |
| 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것 = 데이터의 고른 분산 | |
| 특정 데이터가 어디에 있는지 판단할 수 없음 | |
| 조합 분할 (Composite Partitioning) |
범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식 |
| 범위 분할한 파티션이 너무 커서 관리가 어려울 때 유용 |