안녕하세요 코딩도치입니다.
오늘은 데이터베이스의 Physical Storage Systems, 물리 저장소에 대해서 알아보도록 하겠습니다.
먼저 Storage는 두가지로 구분할 수 있습니다.
- Volatile storage(휘발성 저장소)
: RAM이 대표적인 휘발성 저장소로, 전원이 꺼지면 안에 저장된 데이터들이 날라가게 됩니다.
- Non-Volatile storage(비휘발성 저장소)
: Hard disk가 대표적인 비휘발성 저장소로, 데이터들이 영구적으로 저장되는 저장소입니다.
데이터베이스의 저장은 주로 비휘발성 저장소에 데이터를 저장하고,
DBMS 메모리영역 버퍼로 데이터 입출력(I/O)을 통해 읽어들여 접근하는 방식을 사용합니다.
저장소를 선택할 때는 속도, 비용, 신뢰성 등을 고려하여 선택하게 됩니다.
속도가 빠른 저장소는 그만큼 비싸기 때문에 용량을 많이 사용할 수 없고, 속도가 느린 저장소는 많은 용량을 사용할 수 있습니다.
Storage 계층구조는 다음과 같습니다.
- Primary storage
속도가 가장 빠르지만 휘발성이고, 용량이 작은 stroage입니다.
(E.g. cache, main memory)
- secondary storage
적당히 빠른 접근 시간을 가지는 비휘발성 storage입니다.
통상적으로 데이터베이스가 저장되는 storage입니다.
(E.g. flash memory - SSD, magnetic disk)
- Tertiary storage
데이터 접근 속도가 느린 비휘발성 storage입니다.
속도가 매우 느리기 때문에 주로 backup, archiving용으로 사용되는 storage입니다.
(E.g. optical disk, magnetic tapes)
다음은 데이터베이스가 주로 저장되는 Magnetic Hard Disk의 구조를 살펴보겠습니다.
Magnetic Hard Disk는 platter라는 원판으로 구성되어 있습니다.
그리고 이 platter의 표면은 여러 track으로 구성되어 있습니다.
track은 데이터가 저장되는 위치입니다.
read-write head가 track을 옮겨다니면서 데이터의 저장 위치를 찾습니다.
이 track은 여러 sector로 구성되어 있습니다.
sector는 데이터 read/write의 기본적인 사이즈 단위로, read-write head가 sector의 크기만큼 데이터 읽고, 쓰기를 반복하는 것입니다.
이러한 Disk의 접근 시간은
Seek time(탐색 시간), Rotatinal latency(회전 지연 시간), Data transfer time(데이터 전송 시간)으로 구성됩니다.
이 중에서 주된 접근 시간은 Seek time과 Rotatinal latency입니다.
- Seek time
: read-write head를 원하는 track에 위치시키는데 걸리는 시간
- Rotatinal latency
: 해당 track에서 원하는 sector가 head에 위치하도록 회전시키는데 걸리는 시간
위 두 가지가 I/O가 오래 걸리는 이유입니다.
여기서 cylinder의 효용을 알 수 있습니다.
모든 원판의 동일한 위치에 있는 track들을 묶음으로 보아 cylinder라고 하는데요.
여러 데이터가 cylinder에 저장되어 있다면 한번만 seek time을 가지면 그 뒤로는 track을 옮기는 비용을 줄일 수 있는 것입니다.
그래서 관련된 데이터를 cylinder에 저장하는 방식으로 접근시간을 줄일 수 있게 됩니다.
Disk에서 데이터를 입출력(I/O)하는데 block이라는 개념이 등장합니다.
Disk block은 I/O 데이터 단위입니다.
block이 메모리 버퍼로 읽어들여지면 page라고 부르기도 합니다.
이 block 사이즈를 작게 하면 I/O 횟수가 많아지고, 그에 따라 seek가 증가하여 느려지게 됩니다.
또 block 사이즈를 크게 하면 공간낭비 문제가 있습니다.
데이터에 접근 방식에는 Sequential access(순차 접근)과, Random access(임의 접근)가 있습니다.
순차 접근의 경우 인접 섹터에 접근하는 것이기 때문에 Seek가 오직 한번만 일어납니다.
하지만 임의 접근은 여러번의 Seek가 발생할 수 있어 속도가 느려집니다.
데이터베이스 접근에 대한 것은 정리하면 다음과 같습니다.
감사합니다.