[DB] Physical Storage System

impala·2023년 3월 21일
0

[CS] Database

목록 보기
1/14

데이터베이스의 실체

데이터베이스는 여러 사람이 공유하고 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이다. - 위키백과

위키백과에서 정의한 것처럼 데이터베이스는 말 그대로 데이터들의 집합이고, DBMS에 의해 관리된다. 따라서 데이터베이스란 물리적 저장매체에 저장된 데이터들을 모아놓은 것이라고 볼 수 있다.

저장매체의 종류

물리적 저장매체는 크게 휘발성 스토리지와 비 휘발성 스토리지로 나눌 수 있다. 휘발성 스토리지는 전원 공급이 중단되면 데이터가 날아가지만 비 휘발성 스토리지는 전원 공급이 중단되어도 영구적으로 보존된다.

저장매체는 속도, 가격, 신뢰성에 의해 구분될수 있는데, 이로인해 계층구조가 만들어진다.

  1. primary storage : 가장 빠르지만 휘발성. 캐시, 메인메모리
  2. secondary storage : 두번째로 빠르고 비 휘발성. 플래시 메모리, 자기 디스크
  3. tertiary storage : 가장 느리고 비휘발성. 자기테이프, 광학 저장소
    • 백업용으로 사용

특히 데이터를 읽고 쓰는 작업인 I/O는 primary storage와 secondary storage사이에서 DBMS에 의해 이루어진다.

자기 디스크(HDD)의 구조

HDD는 현대 컴퓨터 시스템에서 가장 대중적인 2차 스토리지로, platter라는 원판 위에 자성을 띈 물질을 통해 데이터를 저장한다. 플래터의 표면은 동심원 형태의 track으로 나누어지고, 각 트랙은 데이터를 읽고 쓰는 가장 작은 단위인 sector로 나뉜다. 전형적으로 한 섹터의 크기는 512byte정도이다.

sector의 데이터를 읽고 쓰기 위해서는 sector의 위치에 read-write head가 지나가야 한다. head는 disk arm의 끝에 부착되어 있으므로 head의 위치를 조정하기 위해서 arm이 움직인다. 즉, HDD에서 데이터를 읽고 쓸 때에는 아래와 같은 순서로 동작한다.

  1. disk arm을 움직여 찾는 sector가 있는 track으로 head를 이동한다. - Seek
  2. platter가 회전하여 sertor를 head의 위치로 돌린다. - Rotation

하나의 HDD에는 여러 platter들이 있고, 각각의 platter마다 양쪽으로 head-arm쌍이 있다. 이때, 모든 head는 같이 움직이므로 platter가 한번 회전하면 모든 head들은 각각의 platter의 중심으로부터 같은 거리만큼 떨어진 track위의 sector를 탐색하게 된다. 따라서 논리적인 개념으로 모든 platter에서 반경이 같은 track들의 집합을 cylinder라고 부른다.

Disk Access Time

디스크의 한 sector에 데이터를 읽고 쓰는데 걸리는 시간은 총 3가지 요소의 합으로 구성된다.

  1. Seek time : 찾는 sector가 있는 track까지 head가 이동하는데 걸리는 시간
  2. Rotation latency : sector를 head의 위치로 맞추기 위해 platter가 회전하는 시간
  3. Data transfer time : 데이터를 읽고 전송하는 시간

이중 Seek time과 Rotation latency는 기계적인 움직임이기 때문에 이 구간에서 병목이 발생한다.

디스크에 접근하는 패턴은 크게 Sequential accessRandom access로 나눌 수 있다. 전자는 디스크에 물리적으로 연속된 블록에 접근하는 방식으로 1번의 seek으로 원하는 데이터를 찾을 수 있고, 후자는 디스크상에 물리적으로 떨어져있는 블록에 접근하는 방식으로, 각 데이터에 접근할 때마다 seek이 발생한다는 단점이 있다.

디스크 블록과 DBMS버퍼

DBMS는 데이터베이스에 접근하려는 사용자의 요청을 받아 실제 데이터가 저장되어있는 디스크에서 메인 메모리로 데이터를 올린 뒤 처리 후 사용자에게 데이터를 제공한다. 이때, 디스크로부터 메모리로 데이터를 불러오는 단위를 Disk Block이라 한다.

  • Disk Block : 디스크와 버퍼 사이의 I/O의 단위로 인접한 sector들의 집합이다. 디스크는 논리적으로 디스크 블록의 집합으로 볼 수 있으며, 데이터베이스의 모든 데이터들은 이 블록에 저장된다.

DBMS에 의해 메모리로 올라온 데이터(블록)은 DBMS Buffer에 저장된다. DBMS Buffer는 기본 단위인 page들의 집합으로 1 page의 크기는 1 block의 크기와 같다. 또한 DBMS Buffer는 디스크에 비해 훨씬 적은 공간을 가지고 있기 때문에, 사용자에 의해 자주 접근되고 최근에 사용된 디스크 블록들이 캐싱되는 공간이다.

일반적으로 디스크는 DBMS Buffer(메모리)보다 느리기 때문에 Buffer와 디스크 사이에서 데이터가 이동(I/O) 병목이 발생한다. 따라서 DBMS는 사용자에게 빠른 데이터 접근 속도를 제공하기 위해서 I/O작업을 최소화하는 방향으로 시스템을 최적화한다.

0개의 댓글