CS/데이터베이스시스템

데이터 저장과 파일

haong_ 2025. 4. 30. 11:22

물리적 저장장치와 파일

물리적 저장장치의 구성과 특징

  • 저장장치는 접근 속도, 용량, 가격 등을 기준으로 계층적 구조를 이룸
저장장치 특징 속성
레지스터 CPU 내부에 위치, 매우 빠름, 용량 작음 비휘발성
캐시 고속 접근 가능한 저장공간 휘발성
메인 메모리 주 기억장치, 접근 빠름 휘발성
자기 디스크 자성을 이용해 데이터 저장, 보조 저장장치 비휘발성
광학 디스크/자기 테이프 CD, DVD, Blu-ray / 순차 접근, 매우 느림 비휘발

데이터베이스 구성요소

  • 파일: 데이터를 영구 저장하기 위한 논리적 단위
  • 블록: 파일을 일정 크기로 나눈 데이터 전송 단위 (메모리-디스크 사이 전송)
  • 레코드: 블록에 저장되는 최소 데이터 단위 (관계형 모델 기준)
  •  

고정 길이 레코드 

  • 고정적인 바이트 수를 갖는 레코드 저장 시 고려되는 기법 
  • 데이터 접근
    • 모든 레코드는 42 바이트 크기로 구성
    • i번째 레코드 위치: (i - 1) x 42(레코드의 크기) + 1번째 바이트부터 접근
  • 레코드 할당시 문제점
    • 블록크기와 레코드 크기가 맞지 않으면 잔여 공간 낭비 
    • 하나의 레코드를 두 블록에 나눠 저장 시 레코드 접근할때 두 개 블록 접근필요 > I/O 오버헤드

레코드 삭제

  • 레코드를 삭제하면 해당 레코드가 저장된 위치에 빈 공간이 생성
  • 장시간 레코드의 삽입 및 삭제 발생 시 저장 공간에 많은 낭비가 발생

레코드 삭제 대처 방안

  • 마지막 레코드로 공백 대체 → 저장 순서가 달라질수 있음 
  • 삭제 레코드 이후의 레코드를 이동 → 저장 순서 유지, 이동할 개수가 많을수록 성능저하 
  • 가용 리스트 관리 → 삭제된 위치들을 포인터로 연결해 재사용, 포인터 정보를 유지해야함

가변 길이 레코드 

  • 블록에 저장되는 레코드의 길이가 서로 다른 레코드를 할당하는 방법
  • 한 블록내에 저장되는 레코드 유형이 둘 이상
  • 길이가 고정되지 않은 컬럼의 개수가 하나 이상
  • 레코드의 컬럼값이 여러개인 컬럼(멀티셋)을 허용하는 컬럼을 가질때  

슬롯 페이지 구조

  • 슬롯 테이블로 레코드 위치 추적
  • 삽입/삭제 시 위치 변경을 유연하게 처리 가능 

파일 구조화 방법

파일 수준에서 레코드를 관리하는 기법 

1. 힙 파일 구조 

  • 저장순서 고려없이 파일 내 임의 블록에 배치 
  • 장점: 삽입 빠름
  • 단점: 검색 느림

2. 순차 파일 구조

  • 레코드가 탐색키 기준으로 정렬되어 저장
  • 레코드가 파일에 삽입되는 시점에서 키 값이 부여 
  • 장점 
    • 정렬 상태 유지로 검색 효율↑ (이진 탐색 가능)
    • 인접 레코드 순차 탐색 시 추가 I/O 불필요
  • 단점
    • 삽입/삭제에 많은 비용
    • 오버플로우 블록 삽입

오버플로우 블록

  • 순차 파일 구조에서 정렬 상태를 유지하기 위해 삽입된 신규 블록 
  • 신규 레코드 삽입시 인접 블록이 꽉 차있으면 오버플로우 블록에 저장
  • 오버플로우 블록이 많아지면 검색 시 추가 I/O 발생

3. 해시 파일 구조

  • 해시 함수로 블록 주소 계산 
  • 검색/삽입 시 빠른 위치 결정 가능

저장장치 관리

저장장치 접근

  • 파일을 실제 저장할 때는 블록(일반적으로 2KB~32KB)으로 저장
  • 한정적인 메모리 공간에서 블록을 운영하는 방법 > 버퍼 관리자

버퍼(Buffer)와 버퍼 관리자 

  • 버퍼: 메모리 내 블록 임시 저장소 
  • 버퍼 관리자: 버퍼를 효율적으로 관리하기 위한 하위 시스템
  • DBMS상 소프트웨어는 필요한 블록이 있을때 버퍼 관리에게 해당 블록 요청 
    • 버퍼 히트 (요청 블록 존재) → 메모리 주소 전달
    • 버퍼 미스 (요청 블록 미존재) 
      • 빈 슬롯 있으면 → 해당 슬롯에 디스크에서 블록 적재 
      • 빈 슬롯 없으면 → 버퍼에 있는 기존 블록 선택 후 해지하고 해당 블록 적재 

버퍼 교체 대상 선정 

  • 가용 공간을 확보하기 위해 기존에 적재된 블록을 특정 기준에 의해 해지
  • 버퍼 교체 전략
    • LRU(Least Recently Used): 최근에 가장 적게 참조된 블록 교체
    • MFU(Most Frequently Used): 특정 기간동안 가장 여러번 사용된 블록을 선택해 블록 교체

버퍼 관리자의 추가 기능

  • 블록 고정 
    • 특정 블록을 제거 대상에서 제외(중요 블록 보호) 
    • 장애로 메모리의 데이터가 손실되어 작업이 중단될 경우, 중단된 작업의 결과물이 디스크에 기록되는 것을 방지
  • 블록 강제 출력
    • 버퍼공간이 필요 없어도 강제로 디스크에 기록
    • 시스템 로그와 같이 중요한 데이터는 디스크에 영구적으로 기록되어야 할 필요