Search

[데이터베이스 시스템] 데이터 저장과 파일

제목
Tag
작성일

물리적 저장장치와 파일

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

저장장치는 접근 속도, 용량, 가격 등을 기준으로 계층적 구조를 이룸
저장장치
특징
속성
레지스터
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): 특정 기간동안 가장 여러번 사용된 블록을 선택해 블록 교체

버퍼 관리자의 추가 기능

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