본문 바로가기
KNOU/요약정리

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

by bottlesun 2024. 5. 25.
728x90

물리적 저장장치

물리적 저장장치의 구성

  • 물리적 저장장치는 데이터 접근 속도, 용량을 기준으로 다양한 장치로 구성

← 속도, 가격

레지스터 - 캐시 - 메인메모리 - 자기디스크 , 플래시메모리 - 광학디스크 자기 테이프

→ 저장용량

물리적 저장장치 별 특징

  1. 휘발성

→ 캐시 : 고비용 저장장치로 빠른 접근 속도를 보장

→ 메인 메모리 : 실제 프로그램과 데이터 적재 공간

  1. 비 휘발성

→ 플래쉬 메모리 : 메인 메모리와 유사하나 비휘발성

→ 자기 디스크 : 데이터베이스 전체를 안정적으로 저장

→ 광학 디스크 드라이브 : CD , DVD , Blue-ray 등

→ 테이프 장치 : 용량이 크고 저렴하나 순차 접근 방식으로 속도가 느림

파일

데이터베이스 구성

  • 데이터베이스

논리적이고 추상적으로 데이터들을 묶어 놓은 사용자 들을 위한 단위

  • 파일

데이터를 영구적으로 저장하기 위해 사용되는 가장 기초적인 논리적 구조

  • 블럭

파일을 고정적인 길이로 분할하여 생기는 균등한 크기의 데이터 묶음

일반적으로 메모리와 디스크 간 데이터 전송 단위로 결정

  • 레코드

블럭을 구성하는 요소

더 이상 분리될 수 없는 최소 데이터 저장 단위

고정 길이 레코드

고정적인 바이트 수를 갖는 레코드를 저장하는 기법

강의 내용 중 발췌

데이터 접근

→ 모든 레코드는 42바이트 크기로 구성

→ i 번째 레코드 접근

  • (i - 1) * 42 + 1 번째 바이트 부터 42개의 바이트를 읽어 접근

잔여 고정 길이 레코드 할당

  1. 블럭의 길이가 레코드 길이로 정확히 나눠지지 않아 잔여 공간을 비워두는 방법

→ 블럭 내의 남은 공간 낭비

강의 내용 중 발췌

2. 블럭의 길이가 레코드 길이로 정확히 나눠지지 않아 한 레코드를 두 블럭에 나눠 저장하는 방법

→ 레코드 접근 시 두 블럭을 접근

강의 내용 중 발췌

고정 길이 레코드 할당의 문제

  1. 레코드 삭제 시

→ 해당 레코드가 저장된 위치에 빈공간이 생성

→ 장시간 레코드의 삽입 및 삭제 발생 시, 저장 공간에 많은 낭비가 발생

  1. 레코드 삭제 시 대처 방안

→ 마지막 레코드로 공백 대체

→ 삭제 레코드 이후의 레코드를 이동

→ 가용 리스트 관리

레코드 삭제 대처

  1. 마지막 레코드로 공백 대체

→ 레코드 중간이 삭제 되면 맨 마지막 레코드로 대체 한다.

단점 : 레코드의 순서가 입력 순서와 달라져 검색 시간이 늘어난다.

  1. 삭제 레코드 이후의 레코드를 이동

→ 삭제된 레코드 아래 모든 값이 위로 쉬프트 된다.

단점 : 한번 이동 시 그 밑으로 다 이동해야 하기 때문에 비용이 커질 수 있다.

  1. 가용 리스트 관리

→ 공백 레코드 포인터로 그 공백에 대한 링크를 저장 , 새로 생성 시 해당 첫 포인트 부분부터 채운다.

가변 길이 레코드

  1. 블럭에 저장되는 레코드의 길이가 서로 다른(가변적) 레코드를 할당하는 방법
  2. 가변 길이 레코드가 사용되는 상황

→ 한 블럭 내에 저장되는 레코드 유형이 둘 이상

→ 길이가 고정되지 않은 컬럼의 개수가 하나 이상

→ 레코드가 멀티셋을 허용한 컬럼을 가질 때

멀티셋 이란?

레코드의 컬럼 값이 여러 개인 컬럼

파일 구조화 방법

파일 구조화 : 파일 수준에서 레코드 관리(순서 등) 하는 기법

파일 구조화 방법의 종류

  1. 힙 파일 구조 : 저장 순서 고려 없이 파일 . 내임의의 위치에 배치
  2. 순차 파일 구조 : 레코드 들이 탐색 키 기준으로 정렬되어 저장
  3. 해시 파일구조 : 해시 함수를 사용하여 블럭 주소를 계산

순차 파일 구조

  1. 레코드가 검색키 순서대로 정렬
  2. 레코드가 파일 삽입되는 시점에서 키 값이 부여
  3. 장점

→ 검색키에 대한 정렬 연산이 불필요, 키 값들의 순서로 레코드를 판독하는 연산에 효율적

→ 현재 레코드에서 정렬된 키 순서로 다음 레코드를 찾을 때 부가적인 블럭 접근이 불필요

→ 이진 탐색을 사용하면 더 빠르게 레코드를 검색

  1. 단점

→ 레코드 삽입, 삭제에 많은 비용 소요

오버플로우 블럭

순차 파일 구조에서 레코드의 정렬된 상태 유지를 위해 삽입된 신규블럭

저장 장치 관리

저장장치 접근

  1. 파일은 논리적 관점에서의 저장 객체
  2. 실제 저장될 때에는 여러 개의 물질적 단위인 블럭으로 저장

→ 블럭은 메모리와 디스크 간 데이터의 전송 단위

→ 일반적으로 2KB ~ 32 KB 사용

→ 블럭 전송을 최소화 할수록 입출력 소요 시간이 단축

  • 사용중인 블럭을 지속적으로 메모리에 적재
  • 한정적 공간으로 인하여 필요에 따라 특정 블럭 할당을 해지
  • 메모리 내부에 버퍼라는 공간에 블럭을 저장하고 이를 관리하기 위한 버퍼 관리자를 사용

버퍼관리자

DBMS 상의 소프트웨어는 필요한 블럭이 있을때 버퍼 관리자에게 해당 블럭을 요청

→ 요청된 블럭이 버퍼에 있다면, 버퍼 관리자는 블럭이 위치한 메모리 주소를 프로그램에게 전달

→ 요청된 블럭이 없는 경우, 버퍼 관리자는 버퍼내의 새로운 공간을 할당하고 해당 블럭을 적재

→ 더 이상 적재할 공간이 없다면, 버퍼에 있는 기존 블럭을 선택하여 할당을 해지하고 해당 블럭을 적재

버퍼 관리자의 기능

버퍼 교체 전략

→ 가용 공간을 확보하기 위해 기존에 적재된 블럭의 할당을 특정 기준에 의하여 해지

→ 미래에 가장 적게 사용될 블럭을 선택하여 디스크로 내보내는 것이 이상적인 버퍼 교체 전략

→ 버퍼 교체 전략 기법

  • LRU(Lesast Recently Used) 최근에 가장 적게 참조된 블럭을 교체
  • MFU(Most Frequently Used) 특정 기간동안 가장 여러번 사용된 블럭을 선택하여 블럭을 교체

고정블럭

→ 장애로 인하여 메모리의 데이터가 손실되어 작업이 중단될 경우, 중단된 작업의 결과물이 디스크에 기록되는 것을 방지

→ 디스크 블럭이 교체되는 것을 제한

블럭 강제 출력

→ 시스템 로그와 같이 중요한 데이터는 디스크에 영구적으로 기록되어야 함

→ 버퍼 공간이 필요 없어도 강제로 디스크에 기록

728x90

댓글