2024. 5. 1. 13:57ㆍ데이터베이스
DBMS는 데이터베이스의 주요 저장소를 비휘발성 저장소인 디스크에 두고 있다.
디스크에서 필요한 정보만 휘발성 저장소인 램으로 이동시켜 사용한다.
저장소 계층 구조

Random Access는 Sequential Access보다 대부분 훨씬 느리기 때문에
DBMS는 순차적 접근법을 최대화하려 함.
- 알고리즘은 데이터가 연속된 블록에 저장되도록
무작위 페이지에 대한 쓰기 횟수를 줄이려고 함 - 여러 페이지를 동시에 할당하는 것을 extent라 한다
DBMS의 설계 목표
- 메모리를 초과하는 데이터베이스를 관리할 수 있게 하고
- 디스크 읽기/쓰기의 비용을 줄이며
- random access보다 sequential access를 최대화하는 것.
운영체제의 메모리 매핑(mmap)을 사용하면 파일 내용을 프로그램의 주소 공간에
저장할 수 있지만 여러 문제가 생김.
- 트랜잭션 안전성 문제
- I/O 지연 문제
- 오류 처리 문제
- 성능 문제
DBMS는 운영체제보다 데이터 관리를 더 잘할 수 있기 때문에 직접 제어하길 원한다.
- 더티 페이지를 디스크에 올바른 순서로 플러싱(Flushing)
- 전문화된 프리페칭(Prefetching)
- 버퍼 교체 정책
- 스레드/프로세스 스케줄링
DBMS가 디스크의 파일에 데이터베이스를 어떻게 표현하는가?
DBMS가 데이터베이스를 하나 이상의 전용 포맷 파일로 디스크에 저장한다.
저장 관리자(Storage Manager)는 데이터베이스 파일을 관리하고 페이지 모음으로 구성한다.
- 읽기/쓰기 작업에 대한 스케줄링을 담당하여 페이지의 공간 및 시간적 지역성을 향상합니다.
- 데이터베이스 파일을 페이지 모음으로 구성합니다.
- 페이지에 대한 데이터 읽기/쓰기를 추적합니다.
- 가용 공간을 추적합니다.
database pages
1. 페이지는 고정된 크기의 데이터 블록
-> 페이지에는 튜플, 메타데이터, 인덱스, 로그 레코드 등이 포함될 수 있다.
-> 대부분의 시스템은 페이지 유형을 혼합하지 않으며, 몇몇 시스템은 페이지가 자체 포함되도록 요구
2. 각 페이지에는 고유한 식별자가 부여
-> DBMS는 간접 계층을 사용하여 페이지 ID를 물리적 위치에 매핑합니다.
3. Database Page는 보통 512B-16KB
4. Page Storage Architecture
-> Heap File Organization
: 튜플이 무작위 순서로 저장된 페이지들의 정렬되지 않은 모음
-> 여러 파일이 있는 경우, 어떤 페이지가 존재하는지 추적하고
어떤 페이지에 여유 공간이 있는지 메타데이터가 필요.
Page Layout
1. 모든 페이지에는 페이지 내용에 대한 메타 데이터를 포함하는 header가 있다.
-> header에는 페이지 크기, 체크섬, DBMS 버전, 트랜잭션 가시성, 압축 정보 등이 포함
2. 페이지 내부에 데이터를 구성하는 방식은
tuple-oriented와 log-structured 두 가지 접근법이 있다.
3. Tuple-oriented 방식
-> 어떻게 페이지에 튜플을 저장할까?
- 가장 일반적인 레이아웃은 슬롯 페이지(slotted pages)
- slot array는 slot을 튜플의 시작 위치 오프셋에 매핑
- 헤더는 사용된 슬롯 수와 마지막 사용된 슬롯의 시작 위치 오프셋을 추적(기록)
- 이를 통해 고정 및 가변 길이 튜플 데이터를 효율적으로 관리 가능
4. record ID
: DBMS가 개별 튜플을 추적하는 데 사용되는 고유 식별자.
- 가장 일반적인 레코드 ID 형식은 page_id + offset/slot 조합
- 레코드 ID에는 파일 위치 정보도 포함될 수 있다.
Tuple layout
1. tuple은 sequence of byte이다.
DBMS는 byte를 속성의 타입과 값을 해석한다.
2. 각 튜플의 앞부분에는 메타데이터를 포함하는 header가 있다.
header에 포함되는 정보는
- 속성이 NULL인지 여부를 비트로 표시
- 해당 튜플에 접근할 수 있는지 여부 추적
*스키마에 대한 메타데이터는 저장할 필요 x
3. 속성들은 일반적으로 테이블 생성 시 지정한 순서대로 저장됨.
그러나 효율적일 수 있도록 레이아웃(배치)을 다르게 할 수도 있음
4. Denormalized Tuple Data
- DBMS는 관련된 튜플들을 물리적으로 비정규화하여
동일한 페이지에 미리 조인하여 저장할 수 있다. - 이를 통해 I/O량을 줄일 수 있다.
- 하지만 업데이트 비용이 더 들 수 있다.


'데이터베이스' 카테고리의 다른 글
| B+ Tree Index (3) | 2024.06.11 |
|---|---|
| Hash Tables (0) | 2024.05.15 |
| 6. Normalization (0) | 2024.04.16 |
| 5. E-R model (0) | 2024.04.08 |
| 4. Modern SQL (1) | 2024.04.02 |