방송대/데이터베이스 시스템
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 )
- 특정 기간 동안 가장 여러 번 사용된 블록을 선택하여 블록을 교체
- LRU ( Least Recently Used )
- 블럭 고정
- 장애로 메모리의 데이터가 손실되어 작업이 중단될 경우, 중단된 작업의 결과물이 디스크에 기록되는 것을 방지
- 디스크 블럭이 교체되는 것을 제한
- 블럭 강제 출력
- 시스템 로그와 같이 중요한 데이터는 디스크에 영구적으로 기록되어야 할 필요
- 버퍼 공간이 필요 없어도 강제로 디스크에 기록
728x90