방송대/데이터베이스 시스템

10강. 데이터 저장과 파일

monimoni 2025. 4. 23. 21:27

1. 물리적 저장장치의 구성

  • 물리적 저장장치는 데이터 접근 속도, 용량을 기준으로 다양한 장치로 계층적( hierarchical ) 구성
  • 구성
    • 위에서 아래로 갈수록 저장 용량이 증가하고, 아래에서 위로 갈수록 접근 속도와 가격이 증가함
    • 레지스터
      • 가장 빠른 접근 속도를 가짐
      • 저장 용량은 매우 작음
    • 캐시
      • 레지스터보다 느리지만 여전히 매우 빠름
      • CPU 근처에 위치
    • 메인 메모리
      • 주기억장치, RAM
      • 속도는 다소 느리지만 저장 용량이 큼
    • 자기 디스크, 플래시 메모리
      • 하드디스크나 SSD 같은 저장 장치
      • 용량이 크고, 가격은 저렴함
    • 광학 디스크, 자기 테이프
      • 가장 느리고 가장 큰 용량을 제공
      • 백업 및 아카이브용으로 사용

2. 물리적 저장장치별 특징

  • 기억 지속성 관점으로 휘발성과 비휘발성으로 구분
  • 휘발성 저장장치
    • 특징
      • 속도가 매우 빠름
      • 전원이 끊기면 데이터가 모두 날라감( 휘발성 )
    • 캐시
      • CPU 내부에 위치하여 자주 사용될 것으로 예상되는 데이터를 저장
    • 메인 메모리
      • 임의 접근이 가능한 고속의 저장공간
    • 레지스터
      • CPU에서 향후에 사용할 데이터를 저장
  • 비휘발성 저장장치
    • 플래시 메모리
      • 메인 메모리와 유사하나 비휘발성
    • 자기 디스크
      • 자성체를 통해 영구적으로 데이터를 저장
    • 광학 디스크 드라이브
      • CD, DVD, Blu-ray 등
    • 테이프
      • 용량이 크고 저렴하나, 순차 접근 방식으로 접근 속도가 매우 느림

3. 데이터베이스 저장 구조

  • 데이터베이스는 데이터를 저장할 때 여러 개의 파일( File ) 단위로 나누어 저장
  • 각 파일은 다시 여러 개의 블록( Block ) 으로 구성
  • 각 블록 안에는 실제 데이터인 레코드( Record )들이 저장

4. 데이터베이스 구성 요소

  • 파일
    • 데이터를 영구적으로 저장하기 위해 사용되는 가장 기초적인 논리적 구조
  • 블록
    • 파일을 고정적인 길이로 분할하여 생기는 균등한 크기의 데이터 묶음
    • 일반적으로 메모리와 디스크 간 데이터 전송 단위로 결정
  • 레코드
    • 블록에 저장되는 요소
    • 관계형 모델에서 분리될 수 없는 최소 데이터 저장 단위
      • 속성 단위로는 데이터를 전송할 수 없음

5. 고정 길이 레코드

  • 고정적인 바이트 수를 갖는 레코드 저장 시 고려되는 기법
  • 데이터 접근
    • 모든 레코드는 42 바이트 크기로 구성
    • i번째 레코드 접근 공식
      • (i - 1) * 42 + 1번째 바이트부터 42개의 바이트를 읽어 접근

6. 고정 길이 레코드 할당

  • 블럭의 길이가 레코드 길이로 정확히 나누어지지 않아 잔여 공간을 비워두는 방법
    • 블럭 내의 남은 공간 낭비
  • 블록의 길이가 레코드 길이로 정확히 나눠지지 않아 한 레코드를 두 블록에 나누어 저장하는 방법
    • 레코드 접근 시 두 개의 블록에 접근 필요

7. 고정 길이 레코드 할당 시 고려사항

  • 레코드 삭제 시
    • 해당 레코드가 저장된 위치에 빈 공간이 생성됨
    • 장시간 레코드의 삽입 및 삭제 발생 시, 저장 공간에 많은 낭비가 발생
  • 레코드 삭제 시 대처 방안
    • 마지막 레코드로 공백 대체
      • 맨 마지막의 레코드를 공백의 자리로 이동하는 방법
      • 삽입의 순서와 접근의 순서가 달라질 수 있음
    • 삭제 레코드 이후의 레코드를 이동
      • 순서는 유지되나, 성능 측면에서 떨어지게 됨
    • 가용 리스트 관리
      • 포인터 정보를 연속적으로 유지, 보유해야 함

8. 레코드 삭제 대처

  • 마지막 레코드로 공백 대체
  • 삭제 레코드 이후의 레코드를 이동
  • 가용 리스트 관리

9. 가변 길이 레코드

  • 블록에 저장되는 레코드의 길이가 서로 다른( 가변적 ) 레코드를 할당하는 방법
  • 가변 길이 레코드가 고려되어야 하는 상황
    • 한 블록 내에 저장되는 레코드 유형이 둘 이상
    • 길이가 고정되지 않은 컬럼의 개수가 하나 이상
    • 레코드가 멀티셋을 허용하는 컬럼을 가질 때
  • 멀티셋이란?
    • 레코드의 컬럼값이 여러 개인 컬럼
  • 특징
    • 가변길이와 고정길이를 구분하는 1byte의 null이 들어간다.
    • 가변 길이 데이터가 있으면 반드시 어디서 시작하는지 알려주는 위치 정보 + NULL이 필요함

10. 슬롯페이지 구조

  • 블록은 여러 요소로 구성되어 있으며, 다음과 같은 구조를 가짐
  • 블록 헤더
    • 레코드 개수 등 메타데이터를 저장
    • 각 레코드에 대한 요약 정보 포함
      • 몇 번째 레코드를 읽어야 하는지 파악
  • 가용 공간
    • 실제 레코드 데이터가 저장되는 공간
    • 가장 마지막 레코드부터 역순으로 저장됨 ( ex ) 레코드 1, 2, 3, 4 순서로 오른쪽에서 왼쪽으로 )
  • 레코드 요약 정보
    • 각 레코드가 저장된 위치를 가리키는 포인터 역할 수행
    • 이 포인터들은 레코드 개수만큼 존재하며, 블록 헤더 뒤에 위치
  • 가용 공간의 끝
    • 레코드가 점점 추가되면 가용 공간이 줄어들며, 요약 정보와 충돌하지 않도록 조정됨

11. 파일 구조화 방법

  • 파일 구조화
    • 파일 수준에서 레코드를 관리( 순서 등 )하는 기법
      • 테이블에 존재하는 블록 중 어느 순서에( 어디에 ) 저장을 해야할지

12. 파일 구조화 방법의 종류

  • 힙 파일 구조
    • 저장순서 고려 없이 파일 내 임의 블록에 배치
    • 장점 : 저장 순서가 빠름
    • 단점 : 검색의 속도가 떨어짐
  • 순차 파일 구조
    • 레코드가 탐색키 기준으로 정렬되어 저장
    • 장점 : 검색 순서가 빠름
    • 단점 : 힙 파일 구조보다는 저장 속도가 떨어짐
  • 해시 파일 구조
    • 해시 함수를 사용하여 블록 주소를 계산

13. 순차 파일 구조

  • 레코드가 탐색키 순서대로 정렬
  • 레코드가 파일에 삽입되는 시점에서 키 값이 부여됨
  • 장점
    • 검색키에 대한 정렬 연산이 불필요하며, 키 값들의 순서로 레코드를 판독하는 연산에 효율적
    • 현재 레코드에서 정렬된 키 순서로 다음 레코드를 찾을 때 부가적인 블록 접근이 불필요
    • 이진 탐색을 사용하면 더 빠르게 레코드를 검색할 수 있음
  • 단점
    • 레코드 삽입, 삭제에 많은 비용 소요

14. 오버플로우 블록

  • 순차 파일 구조에서 레코드의 정렬된 상태 유지를 위해 삽입된 신규 블록
    • 순차 리스트의 순서 변경

15. 저장장치 접근

  • 파일은 논리적 관점에서의 저장 객체
  • 실제 저장될 때에는 여러 개의 물리적 단위인 블럭으로 저장
    • 블럭은 메모리와 디스크 간 데이터의 전송 단위
    • 일반적으로 2KB ~ 32KB 사용
    • 블럭 전송을 최소화할수록 입출력 소요 시간이 단축됨
      • 사용 중인 블럭 지속적으로 메모리에 적재
      • 한정적 공간으로 인해 필요에 따라 특정 블럭 할당을 해제
      • 메모리 내부에 버퍼라는 공간에 블럭을 저장하고, 이를 관리하기 위한 버퍼 관리자를 사용

16. 버퍼 관리자

  • DBMS가 메모리 내부의 공간인 버퍼( buffer )를 효율적으로 관리하기 위한 하위 시스템
  • DBMS상의 소프트웨어는 필요한 블럭이 있을 때 버퍼 관리자에게 해당 블럭을 요청
    • 요청된 블럭이 버퍼에 있다면, 버퍼 관리자는 블럭이 위치한 메모리 주소를 프로그램에게 전달
    • 요청된 블럭이 없는 경우, 버퍼 관리자는 버퍼 내의 새로운 공간을 할당하고 해당 블럭을 적재
    • 더 이상 적절할 공간이 없다면, 버퍼에 있는 기존 블럭을 선택하여 할당을 해제하고 해당 블럭을 적재

17. 버퍼 관리자의 기능

  • 버퍼 교체
    • 가용 공간이 없을 때, 가용 공간을 확보하기 위해 기존에 적재된 블록을 특정 기준에 의하여 해지
    • 미래에 가장 적게 사용될 블록을 선택하여 디스크로 내보내는 것이 이상적인 버퍼 교체 전략
    • 버퍼 교체 전략
      • LRU ( Least Recently Used )
        • 최근에 가장 적게 참조된 블록을 교체
      • MFU ( Most Frequently Used )
        • 특정 기간 동안 가장 여러 번 사용된 블록을 선택하여 블록을 교체
  • 블럭 고정
    • 장애로 메모리의 데이터가 손실되어 작업이 중단될 경우, 중단된 작업의 결과물이 디스크에 기록되는 것을 방지
    • 디스크 블럭이 교체되는 것을 제한
  • 블럭 강제 출력
    • 시스템 로그와 같이 중요한 데이터는 디스크에 영구적으로 기록되어야 할 필요
    • 버퍼 공간이 필요 없어도 강제로 디스크에 기록
728x90