Storage Devices

호이·2024년 11월 27일

Database

목록 보기
4/5
post-thumbnail

4.1 물리적 저장 매체

  • 데이터 접근 속도에 따라
  • 데이터 저장 비용에 따라
  • 신뢰성(Reliability): 손실 여부에 따라
    휘발성(Volatile) / 비휘발성(Non-Volatile)

Cache & Main Memory

Cache (캐시)
가장 빠름, 가장 비쌈
휘발성
CPU 내에 존재 (하드웨어 시스템이 관리)

Main Memory
매우 작고, 매우 비쌈
DB 전체에 저장
데이터 접근 속도: nanosecond
(현대 컴퓨터의 메인메모리 용량은 GB단위)

Flash Memory

  • 비휘발성 메모리
  • Reads(읽기): 메인메모리 수준
  • Writes(쓰기)/Erases(지우기): 마이크로 초 단위
    (백만번 이하 쓰기와 지우기를 할 수 있음)

NOR Flash Memory & NAND Flash
가격: NOR 플래쉬 메모리 > NAND Flash 메모리
NOR 플래쉬 메모리 - 단어 단위
NAND 플래쉬 메모리 - 블록 단위

NAND Flash Memory

전송속도: 20MB/sec(SSD)
병렬로 배치하여 속도를 더 높일 수 있음
지우기 속도: 밀리초 단위
지우기 횟수에 제한이 있음
평화작업(wear leveling): 내부적으로 자주 지우는 데이터를 구분하여 저장함 -> 골고루 평등하게 분포하고자 함

Magnetic Disk (자기디스크)

장기 데이터 저장을 위함
spinning disk, 자기적으로 read/written
온라인으로 장기간 데이터를 저장
직접 접근 (순차 접근 X)
최대 3TB의 용량 (빠르게 성장 중)
내구성이 우수함 (failure & system crashes)
비용면으로 성능면으로 적절한 대용량 데이터 저장장치

Optical Disks (광디스크)

  • CD-ROM (640 MB)
  • DVD (4.7 to 17 GB)
  • Blu-ray disks (27 GB to 54 GB) -> 최대 54G 저장용량
    Write-one, read-many (WORM): 쓰기 한번 읽기 다수번(기본적)(쓰기 다수번 지원하는 형태도 있음)
    Version: CD-RW, DVD-RW, DVD+RW, and DVD-RAM (CD-R, DVD-R)
    읽기 및 쓰기 속도는 자기 디스크보다 늦음, 대용량 데이터 저장 측면에서 좋음

Magnetic Tapes (마그네틱 테이프)

Non-Volatile, 백업 데이터 저장용
속도가 느림
순차 접근만을 허용
수백 TB가 훨씬 넘는 대용량 데이터 저장이 저렴한 비용으로 가능
Tape는 저렴하지만 Drive비용이 매우 높다

  • 주기억장치(Primary storage):
    가장 빠른 미디어이지만 변동성이 큼
    (캐시, 메인 메모리)
  • 이차저장장치(Secondary storage):
    비휘발성, 적당히 빠른 액세스 시간, 온라인 스토리지라고도 함
    (플래시 메모리, 마그네틱 디스크)
  • 삼차저장장치(Tertiary storage):
    비휘발성, 느린 액세스 시간, 오프라인 스토리지라고도 함
    (마그네틱 테이프, 광학 스토리지)

차수가 높을수록: 빠른 접근을 제공, 비싼 비용, 활성메모리

4.2 자기 디스크

Magnetic Hard Disks

  • 디스크 판은 다수의 동심원(트랙)으로 구성되어 있음
  • 트랙은 다수개의 섹터로 구성되어 있음
  • 트랙을 상하로 연결한 가상의 공간을 실린더 라고 함
  • write는 실린더 기준으로 발생 (A실린더 완료시 B실린더)
  • 디스크 암을 이동시키는 탐색시간(seek time)을 줄이기 위함
    이동경로:
    원하는 트랙까지 암이 이동 -> 디스크가 회전하여 암 헤드 밑에 원하는 섹터가 오도록

Disk Controller

  • 디스크 하드웨어와 컴퓨터 시스템을 연결하는 인터페이스 제공
  • 디스크 드라이브 내에 구현되어있기도 함
  • 데이터 read/write 명령을 수행, 하드웨어를 제어
  • checksum: 체크섬(checksum)을 이용하여 읽기/쓰기 데이터를 검증하고, 손실된 섹터 재배치등의 기능을 수행

디스크 인터페이스 표준
SCSI (Small Computer System Interconnect)
ATA (AT adaptor) (also known IDE)
SATA (Serial ATA), SATA II, SATA III
SAS (Serial Attached SCSI)
Fiber Channel interface
IEEE 1394 FireWire interface (Apple)
Several variants of each standard (different speeds and capabilities)

디스크 연결

컴퓨터 시스템에 직접 연결: DAS
고속 네트워크에 연결: SAN, NAS, RAID
서버와 디스크 간 인터페이스: SCSI, SAS, Fiber channel

SAN (Storage Area Network

  • 블록 단위의 연산
  • File은 SAN 상위에서 형성되는 개념
    서버 뒤에 존재하는 네트워크 (저장장치 연결을 위한)
    흔히 알고 있는 LAN, 그 뒤에 SAN이 존재

NAS (Network Attached Storage)

File 중심의 규약
다양한 통신 규약을 지원
자체 CPU, 메모리
NAS의 기능을 제공하는 최적화된 운영체제 운영

DAS(Direct Attached Storge)

컴퓨터 서버에 직접 저장 장치를 연결

  • Nas와 대비됨

디스크 성능 평가

접근 시간 (Access time)

데이터는 대부분 디스크에 위치해 있고 필요에 따라 메인메모리로 이동함
-> 디스크 접근 횟수를 줄이는 것이 시스템 성능에 효과적 (메인메모리에서의 연산 성능 개선보다)

  • 데이터베이스 분야에서 주기억장치의 성능 향상을 완전히 무시하기도 함
  • 기계적인 특성은 향후 획기적인 발전 기대 불가
  • 플래시 메모리 성능은 기계적인 특성에 제한을 받지 않음

전송 속도 (Transfer rate)

데이터 전송 규약에 따라 차이를 보임
십만 또는 백만 MB 사이
(ex. MB = megabytes, Mb = megabits)

SATA: 150 MB/sec
SATA II (SATA 3Gb/s): 300 MB/sec
SATA III (SATA 6Gb/s): 600 MB/sec
Ultra 320 SCSI: 320 MB/s
SAS: 3 to 6 Gb/sec
Fiber Channel (FC 2Gb or FC 4Gb): 256 to 512 MB/s

MTTF: 평균 고장 시간 (Mean time to failure)

장애 없이 디스크를 지속적으로 사용할 수 있는 시간
(새 디스크 약 500,000 ~ 1,200,000시간)
평균고장시간은 시간의 흐름에 따라 급속히 감소
자기 디스크의 평균 사용 연한: 3-5년

성능 향상

타 디스크 대비 장단점

  • 용량 장점
  • 비굥 장점
  • 접근시간 단점

Improvement #1. 블록 단위 데이터 접근

Improvement #2. 디스크 암 스케줄 변경(elevator algorithm)

Improvement #3. 데이터 집약화(clustering)

Improvement #4. 비활성 RAM 쓰기연산 우선 (NVRAM)

4.3 RAID

Redundant Arrays of Independent Disks

Disk drive용량이 빨리 증가하지만, 데이터 저장 요구량이 훨씬 빠르게 증가하고 있음
데이터를 저장하는데 다수의 디스크가 필요함

다수개의 디스크를 큰 용량의 단일 디스크처럼 보이게 하는 디스크 구축/관리 기술

  • 대용량
  • 빠른 접근시간
  • 고신뢰성 (데이터 중복 신뢰성 향상, 다수 디스크 병렬 처리)

중복에 의한 신뢰성 향상

N개 디스크 중의 한 디스크가 실패할 경우는 비교적 많음
-> 데이터 중복을 사용하여 데이터 손실을 제거하는 기술

  • 디스크 미러링 (평균 55년 - 110년)
    모든 Disk를 중복으로 함 (항상 both에 작성)

병렬에 의한 성능 향상

다수개의 디스크에 데이터를 분산시켜 데이터 전속 속도를 향상

  • 비트 단위 스트라이핑 (현재 사용하지 않음)
  • 블록 단위 스트라이핑 (널리 사용)

RAID Level

level 0

  • 데이터 보호가 필요없는 응용에서 사용
  • 중복성 없음
  • 블록단위 스트라이핑 지원

level 1

  • 대부분의 응용에서 주로 사용됨
  • 거울화 디스크
    -> 데이터 저장공간이 절반으로 축소
  • 블록단위 스트라이핑 지원

level 2 (현재 사용 X)

  • 2개 이상의 추가 비트 (손상되면 재구성)
  • Error-Correcting-Codes
  • 비트 스트라이핑 지원

level 3 (현재 사용 X)

  • 전송속도가 빠르지만 모든 디스크가 I/O마다 참여
  • 성능 저하 발생
  • 레벨 2를 흡수

level 4 (현재 사용 X)

  • Parity 블록이 병목현상 유발 가능
  • 블록 레벨 스트라이핑 지원

level 5

  • 데이터 갱신이 적고, 대용량인 응용에서 사용
  • 블록 분산 Parity
  • N+1 디스크에 데이터와 Parity를 저장
    (N: 블록, 1: Parity)
    -> 데이터 갱신 시에 2번 read/write 접근시간 소요
  • 동일 디스크에 블록과 블록을 위한 Parity를 함께 저장할 수 없음
  • 레벨 4를 흡수
    (디스크 실패시에 데이터와 Parity가 모두 손실되어 복구가 불가할 수 있기 때문

level 6

  • level 5 보다 신뢰성을 강화
  • Parity 대신 에러 정정코드 사용(Reed-Solomon코드)
  • 2개 이상의 디스크 오류시에도 데이터 복구 가능
  • 데이터 안전이 아주 중요한 분야에서나 사용

소프트웨어/하드웨어 RAID

소프트웨어 RAID 제공

  • 운영체제 수준에서 지원
  • 비용측면에서 유리
  • 운영체제 성능에 영향
  • 모든 RAID level 지원 X
  • 호환성 문제 발생

하드웨어 RAID 제공

  • RAID 제어 카드가 장착된 확장보드를 연결
  • RAID 제어기능이 하드웨어적으로 구현
  • single failure에 의해 서비스 중단/손실이 발생하지 않음

    하드웨어 이슈

    • Data scrubbing: 데이터 저장 에러를 검사하고 교정하는 에러 수정 테크닉
    • hot swapping: 고장난 하드디스크를 시스템 중단 없이 교체

4.4 File 구성

DB -> 여러 file -> 여러 record -> 여러 field

단일 길이 레코드

  • 같은 타입의 단일 길이 레코드만 지원
  • 한 file에 단일 관계 레코드만 저장
  • 실제에서 운영하지 않음 (이해용)

    단일 길이 레코드의 삭제 record가 삭제되어도 실제 데이터를 삭제하지 않고 표시만
    -> 삭제 record를 연결하는 포인터는 삭제된 record field에 저장 (공간 절약)

가변 길이 레코드

  • 처음 3개 속성: 가변 길이 레코드
  • 4 bytes를 차지하는 (offset, length)

4번째 속성: 단일 길이 속성: (offset, length)정보 대신 실제 필드값 (여기서는 65000)

레코드 구성

  • Heap: record 간에 순서가 없고, 여유공간이 있는 아무장소에 record 위치 (보편적으로 사용)
  • Sequential(순차)
  • Hashing

순차(Sequential) File 구조


첫 번째 field인 "id" field 값으로 정렬됨

  • 삭제: 포인터 chain 사용
  • 삽입: 사용 가능한 공간에 삽입, 없으면 overflow block 삽입(chain update)
  • 수시로 file 재구성

실제 상황에서 사용하기에 제한이 많음
(레코드 길이가 동일, 타입이 동일해야 하기 때문)

멀티테이블 집약(Multitable Clustering) File 구조

필요에 따라서 다수관계 record를 단일 File에 저장하기도 함
(보편적으로, 동일한 관계의 record를 단일 File에 저장)

두 개 테이블 record를 하나 File에 저장하는데 조인연산이 용이하도록 record를 저장

아래와 같은 질이어 처리에 효율적

Select * from department natural join instructor

Select * from department

profile
배운 이론 내용 기록 용!!!

0개의 댓글