[DB] 데이터베이스의 물리적 구조

티라노·2025년 5월 27일

데이터베이스

목록 보기
10/11

Chapter 12: Physical Storage Systems

1. 저장 매체의 분류

  • 휘발성 저장장치(Volatile Storage): 전원이 꺼지면 데이터가 사라짐 (예: 캐시, 메인 메모리)
  • 비휘발성 저장장치(Non-Volatile Storage): 전원이 꺼져도 데이터 유지. 보조 저장장치 및 테이프, SSD 등 포함
  • 저장장치 선택 시 고려 요소: 접근 속도, 저장 단가, 신뢰성

2. 저장 계층 구조 (Storage Hierarchy)

  • 주기억장치: 가장 빠르지만 휘발성
  • 보조기억장치: 하드디스크, SSD 등. 느리지만 비휘발성
  • 3차 저장장치: 테이프, 광디스크 등. 가장 느리고 주로 백업/아카이브용

3. 주요 저장 인터페이스

  • SATA: 최대 6 Gbps
  • SAS: 최대 12 Gbps
  • NVMe: PCIe 기반, 최대 24 Gbps
  • SAN / NAS: 네트워크 기반 저장 방식. SAN은 블록 수준, NAS는 파일 수준 공유

4. 테이프 및 광디스크 저장

  • 테이프: 순차 접근, 대용량, 저렴한 저장 비용. 백업 및 아카이빙에 주로 사용
  • 광디스크: CD/DVD/블루레이 등. 비교적 느린 속도. 일회용(WORM) 또는 다회 기록 가능

5. 자기 디스크 (하드디스크) 구조

  • 플래터(Platter) 위에 트랙(Track) → 섹터(Sector) 구성
  • 디스크 암이 회전하며 섹터 위치 탐색
  • 섹터 크기: 보통 512바이트
  • 컨트롤러: 섹터 I/O 명령 처리, 체크섬 검증, 불량 섹터 remap

6. 디스크 성능 지표

  • 접근 시간(Access Time) = 탐색 시간(Seek Time) + 회전 지연(Rotational Latency)

    • 평균 탐색 시간: 4~10ms
    • 평균 회전 지연: 4~11ms
  • 데이터 전송률: 25~200 MB/s

  • IOPS: 랜덤 I/O 처리량. 자기 디스크 기준 50~200 IOPS


7. 플래시 저장소 (Flash Storage)

  • NAND 플래시: SSD에 사용. 페이지 단위 읽기, 블록 단위 삭제
  • SSD: 고속 읽기/쓰기, 높은 IOPS (최대 수십만), SATA나 NVMe 인터페이스
  • Flash Translation Layer (FTL): 논리 주소 ↔ 물리 주소 매핑
  • 수명 제한: 블록마다 최대 쓰기 횟수 있음 → Wear Leveling 필요

8. SCM (Storage-Class Memory)

  • 예: Intel Optane (3D XPoint)
  • 플래시보다 낮은 지연 시간, DRAM과 비슷한 속도, 비휘발성

9. RAID (Redundant Arrays of Independent Disks)

  • 목적: 고속 데이터 접근 + 장애 복구
  • 기법: 디스크 병렬화, 중복 저장

주요 RAID 레벨:

  • RAID 0: 스트라이핑, 중복 없음 → 성능만 향상
  • RAID 1: 미러링 → 고신뢰성, 고속 읽기
  • RAID 5: 데이터 + 패리티 분산 저장 → 성능/공간 절충
  • RAID 6: RAID 5 + 이중 패리티(P, Q) → 디스크 2개 동시 장애에도 안전

10. RAID 성능 비교

  • RAID 1: 작은 랜덤 쓰기에 유리
  • RAID 5: 큰 순차 쓰기에 유리
  • RAID 6: RAID 5보다 신뢰성 높음 (두 디스크 장애 허용)
  • 선택 시 고려 요소: 비용, 성능, 장애 복구 시간

11. 하드웨어 관련 이슈

  • 소프트웨어 RAID vs 하드웨어 RAID: 후자는 전용 하드웨어, 비휘발성 RAM 포함
  • 라이트 오류 감지 및 복구: 전원 차단 등으로 중단된 쓰기 복구 필요
  • 핫스왑스페어 디스크 지원으로 가용성 향상
  • 중복 전원, 컨트롤러로 단일 장애점 제거

12. 디스크 블록 최적화

  • 버퍼링: 디스크 블록 캐시
  • Read-Ahead: 다음 읽기 예상하여 미리 읽음
  • 디스크 암 스케줄링: 엘리베이터 알고리즘 등으로 탐색 시간 최소화
  • 파일 단편화 방지: 연속 블록 할당 및 디스크 조각 모음

RAID

Redundant Arrays of Independent Disks의 줄임말이다.

  • 여러 개의 디스크를 병렬로 쓴다.
  • 용량이 크고 속도도 빠르다.
  • 하나의 디스크에서 오류가 발생하더라도 백업이 있으므로 안정적이다.

미러링(섀도잉)
모든 디스크를 복제해서 논리 디스크가 두 개의 물리 디스크로 구성되도록 하는 기법이다. write는 두 디스크 모두에, read는 둘 중 아무 디스크에서나 할 수 있다. 디스크 하나에서 오류가 발생해도 복제본이 있어 안정적이다.

Mean time to data loss 는 데이터가 유실된 시간을 나타낸다.

RAID에서는 패리티 비트를 활용해 레벨을 나눈다.

RAID level 0 : block striping, non-redundant, 에러 시 데이터가 분실되기 때문에 중요하지 않은 데이터에 사용
RAID level 1 : mirrored disks with block striping
RAID level 6 : 패리티에 오류를 수정할 수 있는 코드를 추가했다. 디스크가 2개 고장나도 복구할 수 있어서 안정적이다.

패리티 블럭
패리티를 이용해 데이터를 저장하면 한 개의 에러가 발생했을 때 복구할 수 있다.
패리티는 많이 사용하면 병목 현상이 발생할 수 있으므로 분산시키는 편이 좋다.

RAID 레벨을 선택할 때는 비용, 성능, 에러 대처, 고치는 동안의 성능을 고려한다.

Hardware issue


Buffer replacement

  • LRU
  • MRU
  • 비휘발성 버퍼
    성능이나 복구 측면에서 도움이 된다.
  • Log 디스크
    데이터 리커버리 시 많이 쓰인다. 로그를 일반 디스크보다 별도의 전용 디스크에 저장하는 편이 성능이 좋다.

Columnar representation

  • IO 횟수를 줄일 수 있다.
  • 병렬처리가 가능해진다.
  • CPU 캐시 성능을 개선할 수 있다.

0개의 댓글