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): 특정 기간동안 가장 여러번 사용된 블록을 선택해 블록 교체
버퍼 관리자의 추가 기능
- 블록 고정
- 특정 블록을 제거 대상에서 제외(중요 블록 보호)
- 장애로 메모리의 데이터가 손실되어 작업이 중단될 경우, 중단된 작업의 결과물이 디스크에 기록되는 것을 방지
- 블록 강제 출력
- 버퍼공간이 필요 없어도 강제로 디스크에 기록
- 시스템 로그와 같이 중요한 데이터는 디스크에 영구적으로 기록되어야 할 필요