디스크 공간 관리 모듈(disk space management)
- 대부분의 데이터베이스 시스템은 디스크와 SSD에 정보를 저장한다.
- 디스크 공간 관리 모듈의 바로 위 계층 모듈인 버퍼 관리 모듈은 디스크 공간 관리 모듈을 호출하여 페이지를 읽고 쓰고, 논리 페이지를 할당하고 해제한다.
- 디스크 공간 관리 모듈은 DBMS 아키텍처의 맨 아래층으로 디스크 상의 공간을 관리하는 역할을 한다.
- 특정 페이지가 물리적으로 디스크의 어느 지점에 위치하는지 추적하여 읽기
- 페이지를 디스크에 쓰는 작업
- 디스크 드라이브는 Block(블록)이라는 큰 연속적인 바이트를 읽고 쓰는 인터페이스를 제공한다.
- Block이란 디스크와 RAM사이의 전송 단위로 데이터베이스 시스템 설정에 따라 달라진다.(4KB, 16KB, 64KB, 128KB..)
- 페이지는 현재 메모리에 있는 Block을 의미한다.
- 디스크에서 I/O 작업 시 블록의 사용을 최대화하는 게 좋다.
- 읽기 작업시: 최대한 물리적으로 연속된 페이지로 읽기 작업을 수행하면 좋다. 인기 있는 페이지라고 생각되는 블록을 메모리에 보관해서 캐싱할 수도 있고, 미리 예상하여 블록을 가져올 수도 있다.(prefetch)
- 쓰기 작업시: 쓰려고 하는 페이지를 버퍼에 담아두었다가 한 번에 처리할 수도 있다.
Table: Records = File: Pages
- RDB의 기본 데이터 단위는 레코드(행)이다. 레코드가 모여서 테이블을 구성한다.
- 디스크의 기본 데이터 단위는 페이지이다.
- 디스크와 호환되는 형식으로 관계형 데이터베이스를 표현하기 위해 각 릴레이션(테이블)은 자체 파일에 저장되고 해당 파일 내에서 레코드들은 페이지로 구성된다.
DB File
- record를 포함하고 있는 페이지의 collection
- record Id 는 [페이지의 ID, 페이지내에서의 위치]를 가리키는 포인터다.
- record Id를 이용해서 레코드를 입력, 수정, 삭제할 수 있다.
DB File의 종류
- Heap File
- 레코드가 특정한 순서 없이 페이지에 임의로 배치된다.
- Sorted File
- 페이지와 레코드가 특정 정렬 순서로 보관된다.
- Index File
- 자체적으로 레코드를 포함하고 있으며 다른 파일의 레코드에 대한 포인터도 포함될 수 있다.
- B+ Tress, Linear Hashing, ...
더 좋은 파일 구조는 정해져있지 않다. 파일을 사용하는 패턴에 따라 달라진다.
'Database' 카테고리의 다른 글
| DBMS 버퍼 관리 (0) | 2023.05.27 |
|---|---|
| DBMS 아키텍처 (0) | 2023.05.06 |
| SQL (0) | 2023.04.22 |
| 데이터베이스 시스템 (0) | 2023.04.15 |
댓글