Theory/CS

[Data Structures_39] 색인 파일

zzzzzooooo0000099999 2025. 4. 7. 18:04

1. 색인 파일(Indexing File)이란?

> 색인 파일(Indexing File)은 데이터 파일에서 원하는 레코드를 빠르게 검색하기 위해 생성된 별도의 파일이다.  
> 마치 책의 목차처럼, 키 값을 기준으로 데이터의 위치를 저장하여 빠르게 찾아갈 수 있도록 한다.

 

- 목적

  - 직접적인 검색 속도 향상

  - 대용량 데이터에서 순차 검색의 비효율성 해결

 

2. 색인 파일 구조

  색인 파일은 보통 다음과 같은 쌍(Key, 주소) 형태로 구성된다 :

키(Key) 주소(Address)
1001 0x0000
1002 0x0020
1003 0x0040

> 이 정보를 이용해 데이터 파일의 정확한 위치로 빠르게 이동 가능하다.

 

3. 색인 파일 구성 방식

  (1) 단일 레벨 색인 (Single-Level Index)

- 모든 키를 대상으로 인덱스를 생성
- 인덱스를 이진 탐색하여 위치 탐색

 

  (2) 다단계 색인 (Multi-Level Index)

- 인덱스가 너무 클 경우, 인덱스의 인덱스를 또 생성  
- B-Tree, B+Tree 구조 사용

[최상위 인덱스] → [하위 인덱스] → [데이터 레코드]

 

  (3) 블록 색인 (Block Index)

- 모든 레코드가 아닌 블록마다 대표 키만 색인에 저장
- 대용량 파일에서 색인 크기를 줄이기 위한 전략

 

4. 색인 파일 탐색 순서

1. 사용자가 검색할 키 입력  
2. 색인 파일을 이진 탐색 또는 트리 탐색  
3. 해당 키에 연결된 파일 오프셋(offset) 확인  
4. 실제 데이터 파일에서 해당 위치로 이동 → 레코드 검색

 

5. 색인 파일 예제 (Python 개념 구현)

# 색인 파일 (key, address)
index_file = {
    "A001": 0,
    "A002": 128,
    "A003": 256
}

# 데이터 파일은 바이너리 파일로 가정
with open("data_file.bin", "rb") as f:
    key = "A002"
    offset = index_file.get(key)
    if offset is not None:
        f.seek(offset)
        record = f.read(128)  # 레코드 길이 고정
        print(f"Record: {record}")
    else:
        print("Key not found.")

 

6. 색인 파일의 장단점

- 장점

항목 설명
검색 속도 향상 전체 파일 순회를 피하고 즉시 접근
정렬 불필요 색인만 정렬되어 있으면 됨
구현 용이 단일/다단계 모두 구조적 구현 가능

 

- 단점

항목 설명
색인 파일 자체도 관리 필요 삽입/삭제 시 색인 갱신
추가 저장 공간 필요 색인을 별도로 유지해야 함
레코드 크기 가변이면 복잡 고정 길이보다 관리 어려움

 

7. 색인 파일 vs 해시 기반 검색

항목 색인 파일 해시 검색
키 정렬 필요함 불필요
범위 검색 가능 (1000~2000) 불가능
랜덤 접근 속도 빠름 (O(log n)) 매우 빠름 (O(1))
데이터 정렬 활용 가능 불가능

 

8. 실전 활용 사례

분야 활용 예
DBMS B-Tree 인덱스, Hash 인덱스
파일 시스템 디렉터리 구조 색인
검색엔진 역색인 파일로 키워드 → 문서 매핑
대용량 로그 분석 색인 파일을 통해 빠르게 탐색

 

9. 결론

- 색인 파일은 데이터 접근 성능을 극적으로 향상시키는 구조
- 키 → 위치 매핑을 통해 빠른 탐색 및 범위 검색이 가능
- 크기가 큰 파일에서 검색 속도와 성능 최적화에 필수적인 역할을 함

 

 

색인 파일은 데이터의 네비게이션 시스템이다.