Storing Data: Disks and Files
데이터 저장: 디스크와 파일
9.1 The Memory Hierarchy (메모리 계층 구조)
Primary Storage | - Volatile - Cache, Main Memory |
Secondary Storage | - Nonvolatile - Magnetic Disk |
Tertiary Storage | - Nonvolatile - Tape |
Magnetic Disk (Disk; 자기 디스크)
- 데이터가 위치한 영역으로의 Direct Access가 가능하고, DB Application에 널리 사용되는 저장장치이다.
Disk Block (디스크 블록) |
- 데이터가 디스크 상에 저장·입출력되는 단위이다. - Contiguous Sequence of bytes 형태이다. - Disk Block은 Platter상의 Track 중 한 곳에 배치된다. - Disk Block의 크기는 Disk를 초기화할 때 Sector 크기의 배수로 결정된다. |
Platter (원반) |
- Magnetic Disk의 내부에는 하나 이상의 Platter로 구성되어 있다. - Platter가 회전하며 Read-Write Head에 원하는 데이터가 위치하도록 조정한다. - Single-Sided Disk (단면 디스크)는 Platter의 한쪽 면만 사용하는 디스크이다. - Double-Sided Disk (양면 디스크)는 Platter의 양쪽 면 모두를 사용하는 디스크이다. |
Track (트랙) |
- Platter를 구성하는 동심원들을 의미한다. - Track은 Platter의 한면 혹은 양면에 위치하여 데이터가 기록될 수 있다. |
Cylinder (실린더) |
- 직경이 같은, 다른 Platter에 위치한 Track들의 집합이다. - 하나의 Cylinder는 Platter의 한 Side당 하나의 Track을 가진다. |
Sector (섹터) |
- Track을 구성하는 원호이다. - Sector의 크기는 Disk 자체의 특성이며 변경될 수 없다. - Data가 Sector에 저장될 때, Checksum도 함께 저장되는데 이는 Sector의 손상 등으로 인한 Data의 손실 여부를 판단하는 데 사용된다. |
Disk Head (Read-Write Head) (디스크 헤드) |
- 기록 가능한 Platter의 Side마다 하나씩 구성되는 장치이다. - 하나의 Disk Head가 원하는 Disk Block위에 위치하게 되면, 다른 Disk Head들도 각자의 Platter Side의 해당 위치에 놓이게 된다. (즉, 여러 Disk Head들이 같이 움직인다.) - 여러 Disk Head들 중, 한번에 하나의 Disk Head만 Read-Write Operation을 수행한다. |
Disk Controller (디스크 제어기) |
- Disk Driver와 Computer를 상호 연결시키는 장치이다. - Disk Controller는 Arm Assembly를 조작하여 원하는 Sector 위로 위치시켜 데이터를 관리한다. |
Disk Performance (디스크 성능)
- DBMS가 Operation을 수행할 동안 Data는 Main Memory에 위치해 있어야 한다.
- Disk와 Main Memory 간 I/O시, 데이터는 Block 단위로 전송된다.
- DB Operation에 소요되는 시간의 대부분은 I/O 과정에서 발생된다.
- Data Block을 I/O하는데 걸리는 시간을 Access Time이라 하며, 아래와 같이 계산된다.
Access Time = Seek Time + Rotational Delay + Transfer Time
Seek Time (탐색시간) |
- Disk Head를 원하는 Disk Block이 있는 Track으로 위치시키는 데 소요되는 시간이다. - Platter의 크기가 작아질수록 Seek Time도 작아진다. |
Rotational Delay (회전지연) |
- 원하는 Disk Block이 Disk Head 아래로 회전(위치)하기까지 대기한 시간이다. - 일반적으로 회전각이 180˚ 이하이면 Rotational Delay는 Seek Time보다 작다. |
Transfer Time (전송시간) |
- Disk Head가 원하는 Disk Block 위를 Scan하는데 걸리는 시간이다. - 즉, Disk Head가 데이터를 Read-Write하는데 소요되는 시간이다. |
Data Placement Priority (데이터 배치 우선순위)
- 만약 다수의 데이터가 함께 사용되는 경우가 빈번히 일어난다면,
아래와 같은 우선순위에 따라 Disk상에서 최대한 서로 가깝게 배치해야한다.
- Same Block
- Same Track
- Same Cylinder
- Adjacent Cylinder
9.2 Redundant Arrays of Independent Disks (RAID)
* RAID는 Redundant Arrays of Inexpensive Disks의 약자이기도 하다.
- Data Stripiing(데이터 스트라이핑)과 Redundancy(중복) 메커니즘을 사용한 Disk Array(디스크 배열)를 의미한다.
- RAID는 구성 방법에 따라 여러 Level로 나뉘며, 각각의 RAID Level은 Performance와 Reliability에 차이가 있다.
- Disk와 Process간 극심한 성능차이로 인한 병목현상과
Disk를 구성하는 Mechanical Part의 고질적인 고장으로부터 발생되는
Performance 문제와 Reliability 문제를 해결하는 메커니즘이다.
Disk Array (디스크 배열)
- 여러 개의 디스크로 구성한 저장 시스템이다.
Data Striping (데이터 스트라이핑)
- 데이터를 같은 크기의 여러 Segment(조각)로 나누어
디스크 배열내의 여러 디스크에 분산 저장하는 메커니즘이다.
(디스크 배열에 D개의 디스크가 있을 경우, Segment i는 디스크 i mod D에 저장된다.)
- Segment의 크기를 Striping Unit(스트라이핑 단위)이라 한다.
- n개의 디스크에 대해 데이터 스트라이핑을 수행할 경우 Transfer Rate(전송률)은 n배 증가되어
Performance를 향상시킨다.
Redundancy (중복)
- 데이터를 여러 복사본을 만들어 저장하는 메커니즘이다.
- Disk Failure(디스크 장애)가 발생하여 데이터가 손실되었을 때 복사본을 통해 복구하여
Reliability를 높인다.
- Disk Array 설계에 Redundancy를 반영하고자할 때의 결정 사항은 아래와 같다.
- 중복 데이터를 저장할 위치
- Parity를 Check Disk(점검 디스크)에 저장하거나,
데이터 복사본을 모든 디스크상에 균등하게 분산시켜 저장할 수 있다. - 중복 데이터를 계산할 방법
* MTTF (Mean Time to Failure; 장애발생 평균시간)
- 어떠한 장치를 처음 사용한 이후부터 고장이 나기까지 경과된 시간들의 평균값을 의미한다.
- Redundancy는 Disk Array의 MTTF를 향상시킬 수 있다.
Redundancy Scheme (중복 기법)
Hamming Code (해밍 코드) |
- 단일 디스크 장애 복구 뿐 아니라 복수 디스크 장애 발생 시 어느 디스크에 장애가 발생했는지에 대해서도 식별할 수 있다. |
Reed-Solomon Code (리드-솔로몬 코드) |
- 최대 두 개의 디스크에서 동시에 장애가 발생되어도 복구할 수 있다. |
Reliability Group (신뢰 그룹)
- Disk Array를 Data Disk와 Check Disk로 나누어 구성한 개념이다.
- 각각의 신뢰 그룹에는 공통된 중복 기법이 적용된다.
- Check Disk의 수는 RAID Level에 따라 달라진다.
RAID Levels (RAID 레벨)
RAID Level 0: Nonredundant
- Data Striping을 사용하여 Bandwidth을 최대로 끌어올린다.
- Data Redundancy 메커니즘을 전혀 사용하지 않는다.
- 구성 비용이 가장 저렴하다.
- Write Performance가 최상이다.
- Space Utilization(공간 활용도)이 항상 100%이다.
- 중복을 허용하는 시스템과 달리 Disk Access Scheduling을 적용하지 않아, Read Performance는 최상이 아니다.
- 디스크 드라이브 개수에 비례하여 MTTF가 낮아져 Reliability가 저해된다.
RAID Level 1: Mirrored
- 디스크의 모든 Disk Block들을 다른 디스크에 똑같이 복사하여 유지한다.
- Space Utilization(공간 활용도)이 항상 50%이다.
- 복사하여 저장하되, Level 1에서는 한 Disk Block을 두 디스크에 동시에 Write하지 않는데,
이는 Write할 때 장애가 발생되어 해당 데이터를 복구할 수 없게 하기 때문이다.
- 구성 비용이 가장 높다.
- Data Striping을 사용하지 않아 Transfer Rate은 단일 디스크와 비슷하다.
RAID Level 0+1: Striping and Mirroring
- Striping과 Mirroring을 조합하여 운영하는 방식이다.
- Space Utilization(공간 활용도)이 항상 50%이다.
- Write Cost는 Level 1과 비슷하다.
RAID Level 2: Error-Correcting Codes
- Striping Unit = 1 bit 이다.
- Redundancy Scheme으로 Hamming Code를 사용한다.
- Check Disk의 수는 Data Disk의 수에 Logarithmically 증가한다.
- Large Request에 적합하다.
(각 요청에 대해 모든 데이터 디스크의 통합 대역폭이 사용되기 때문이다.)
- Small Request에는 부적합하다.
- Space Utilization(공간 활용도)는 데이터 디스크의 수에 비례하여 증가한다.
RAID Level 3: Bit-Interleaved Parity
- 한번에 한 건의 I/O만을 처리한다.
- D개의 데이터 디스크를 가질 때 최소 전송 단위는 D개의 데이터 블록이다.
- Write Operation을 위해 한 번의 Read-Modify-Write Cycle을 필요로 한다.
- Redundancy Scheme으로 Parity 정보를 저장하고 있는 단일 Check Disk를 유지한다.
RAID Level 4: Block-Interleaved Parity
- Striping Unit = 1 Block 이다.
- 하나의 Block을 Write하는데 한번의 Read-Modify-Write Cycle이 소요된다.
- 하나의 Check Disk를 유지한다.
- Space Utilization(공간 활용도)는 데이터 디스크의 수에 비례하여 증가한다.
RAID Level 5: Block-Interleaved Distributed Parity
- Parity Block을 모든 디스크에 균등하게 분산시킨다.
- 여러 Write Operation들을 병렬처리할 수 있으며,
Read Operation도 더 높은 수준의 Parallelism을 가질 수 있다.
RAID Level 6: P + Q Redundancy
Summary
RAID 0
- 데이터 손실이 중요하지 않은 경우, 가장 낮은 비용으로 높은 성능을 낼 수 있다.
RAID 0+1
- RAID 1보다 월등히 좋다.
- 미러링 비용이 크지 않은 소규모 저장 서브시스템에 적합하다.
- Write 성능이 최고로 좋다.
RAID 2
- RAID 3에 비해 열등하다.
RAID 3
- 단일 디스크 블록에 대한 소규모 요청이 많은 경우 나쁜 성능을 보인다.
RAID 4
- RAID 5에 비해 열등하다.
RAID 5
- 범용적이다.
- 소규모 및 대규모 요청에 우수한 성능을 보인다.
RAID 6
- RAID 5보다 더 높은 수준의 신뢰도가 요구될 때 적합하다.
9.3 Disk Space Management (디스크 공간 관리)
- Disk Space Manager는 데이터를 Page 단위로 관리하며
Page의 할당·반환·Read·Write에 대한 명령을 제공한다.
9.4 Buffer Manager (버퍼 관리기)
9.5 Files of Records (레코드 파일)
9.6 Page Formats (페이지 형식)
9.7 Record Formats (레코드 형식)
Reference: Database Management Systems 3E (Raghu Ramakrishnan, Johannes Gehrke 저, McGrawHill, 2003)