본문 바로가기
컴퓨터과학/데이터베이스

[데이터베이스] Storage and File Structure - Block, File organization, Fixed/Variable Records 저장 방식

by 윤호 2021. 12. 19.

Overview of Physical Storage Media

데이터의 이동 : CPU ↔ 메인메모리디스크

  1. 디스크에서 필요한 데이터가 있는 블록을 메인 메모리로 이동
  2. 메인 메모리에서 CPU가 원하는 데이터를 찾음

Blocks : 데이터에 접근하고 이동하는 기본 단위 - DB 시스템은 블록의 전환 최소화를 추구함

Buffer : 메인메모리의 영역으로, 디스크의 블록을 복사해해서 저장한다

Buffer manager : 메인메모리 안의 버퍼 공간을 할당하는 서브 시스템

Buffer manage의 동작

  1. 필요한 블록이 현재 버퍼 안에 있는 경우, 블록의 주소를 반환
  2. 필요한 블록이 현재 버퍼 안에 없는 경우
    1. 버퍼에 공간을 할당한다
      1. 필요한 경우 새 블록과 교체함
      2. Replaced block written back to disk only if it was modified since the most recent time that it was written to/fetched from the disk
    2. 디스크에서 블록을 읽어오고, 블록을 반환

Buffer-Replacement Policy - LRU(Least Recently used)

  • 버퍼의 블록을 교체할 때, 가장 오래된 블록을 새 블록으로 교체함

File Organization

데이터베이스는 파일의 집합으로 구성되고, 파일은 일정 크기의 블록(Page)들로 나뉘어짐

블록은 몇몇의 레코드를 포함하고, 레코드는 엔티티와 속성으로 작성됨

Fixed-length records

고정길이 레코드의 경우 레코드의 크기를 쉽게 예측 가능하다. (5+20+20+8)

i 번째 레코드에 접근하려면 n*(i-1) byte 를 찾으면 됨

 

free list : 레코드를 제거했을 때, 제거된 레코드의 주소를 연결리스트로 구현 (처음 시작은 header, 다음은 레코드)

Variable-length records

header에 가변 속성의 정보가 담김 : 가변 속성의 시작 주소(offset), 길이 정보(length)

Null bitmap : 몇 번째 속성이 null인지 알려준다.

  • 0001 : 첫 번째 속성이 null인 경우, 0101: 첫번째, 세번째 속성이 null인 경우

Slotted Page Structure

variable length records를 저장하는 방법

header가 갖는 정보

  • 레코드의 갯수
  • Free space의 끝 지점
  • 각 레코드의 위치와 크기

레코드가 추가될 경우

  • 헤더의 레코드 갯수가 올라감
  • free space 앞 부분에 record의 정보가 들어감 (위치, 크기)
  • free space 뒷 부분에 실제 record가 들어감

레코드가 삭제될 경우

레코드가 삭제될 경우, 헤더의 레코드 정보에 -1을 표시.

빈 공간보다 크기가 같거나 작은 레코드를 넣으면 빈 공간에 레코드가 들어간다. (크기가 더 작을 경우엔 메모리가 낭비됨)

빈 공간보다 크기가 클 경우엔 free space에 레코드를 저장

Organization of Records in Files

sequential file organization

  • search-key로 레코드를 정렬
  • 레코드가 많아져 블록을 초과(overflow)할경우 새로운 블록을 생성하고 거기다가 레코드를 넣음

Data-Dictionary Storage

데이터에 관한 정보를 저장하는 곳 - meta data를 저장

  • relation(테이블) 정보 : 테이블 이름, 각 속성의 이름 타입 길이, 뷰의 정의와 이름, 조건들
  • 유저 정보
  • 등등

메타데이터 또한 relation으로 관리된다

 


reference : 상명대학교 김종욱 교수님

댓글