[DB] 저장과 파일구조 - 디스크, 파일, 플래시 저장장치
저장 장치 계층
분류 기준 : 액세스 속도, 데이터 단위당 비용, 매체 신뢰성
magnetic tapes, optical disk, magnetic disk, flash memory, main memory, cache
신뢰성은 왼쪽으로 갈 수록 높다. 액세소 속도와 비용은 오른쪽으로 갈수록 높다.
- flash memory, main memory, cache (전자적)[반도체]
- magnetic tapes, optical disk, magnetic disk (기계적)
캐시
- 가장 빠름
- 가장 고가
- 하드웨어가 관리
- 캐시보다 더 빠른건 레지스터
- 버퍼링해서 속도 높임.
메인 메모리
- 연산에 이용하는 데이터 저장
- 개인 컴퓨터 : 수Giga (8GB, 16GB)
- 대용량 서버 : 수백Giga -> 그래도 전체db를 저장하기에는 태부족, 고가
- 정전, 시스템 오류 -> 내용 손실
- 버퍼링 + 데이터 저장
플래시 메모리
- 비휘발성, 주기억장치보다 저렴
- 자기디스크 드라이브 대체
- ssd(solid state drive) (read는 확실히 빠르지만, write는 그냥 그렇다…)
- ssd에 os 설치된 경우 부팅 빠름
- 적절한 용량일 경우
- hdd보다 빠름 -> 데이터 캐시 역할
자기 디스크 저장장치
- 온라인으로 장기간 데이터 저장을 위한 중심 매체
- 비휘발성
- 전체 db저장
- 저장장치 자체 고장에 따른 데이터 손상 발생 가능 -> 시스템 고장보다 훨씬 적음
광 저장장치
- CD(compact disk)
- DVD(digital video disk) : 한면당 4.7G or 8.5G저장. 양면 최대 17G 저장. 블루레이:27G, 더블 레이어 디스크:54G. 광학적으로 저장, 레이저로 읽음. 비디오 저장 뿐만 아니라 임의의 디지털 데이터 저장 가능.
- CD-ROM, DVD-ROM : 기록 불가
- CD-R, DVD-R : WORK(write once read many)
- CD-RW, DVD-RW : write many read many
- 광학 디스크 주크박스
테이프 저장장치
- 데이터 백업, 보관용
- 저렴
- 순차접근 장치
- 고용량
- 테이프 Library, 테이프 Jukebox : 매우 큰 규모 데이터 저장, 인공위성 수집 데이터
- 여전히 많이 사용되고 있음
분류
1차 저장장치 : 캐시, 메인 메모리
2차 저장장치 혹은 온라인 저장장치 : 디스크 + SSD
3차 저장장치 혹은 오프라인 저장장치 : 자기테이프, 광디스크 주크박스
휘발성 vs 비휘발성
디스크
-
일정 속도로 회전
-
크기 대부분 3.5인치, 휴대용 장비는 더 작음
- 구성 디스크당 판수 1~5 디스크 표면 -> 트랙 -> 섹터 디스크 면당 트랙 수 : 50000~100000 트랙 당 섹터 수 : 내부는 500~1000, 외부는 1000~2000 섹터 : 디스크로부터 읽고 쓸 수 있는 가장 작은 단위. 보통 512바이트 블락(block)은 여러개의 섹터로 구성 섹터의 크기는 기계적으로 정해져있지만, block은 섹터 크기의 배수 형태로. 섹터는 기계적 물리적이고, 블락은 논리적, 추상적이다. Database -> file -> block
- 판독-기록 헤드 자기적으로 섹터위에 데이터를 기록 각 면당 헤드를 가짐 판 표면 위를 움직이며 다른 트랙을 접근 디스크 암이라는 하나의 조립대에 연결됨 모든 디스크판 위의 헤드는 함께 움직임 : 모든 디스크의 i번째 트랙의 집합은 i번째 실린더 디스크 표면을 micron 거리만큼 떠 있음 : 충돌 시 데이터가 파괴됨.
디스크 컨트롤러
-
software
-
컴퓨터시스템과 디스크 드라이버의 하드웨어를 연결
-
디스크 드라이브 내에 구현
-
섹터 읽고, 쓰기 위한 고수준 명령어를 받아서 디스크 암을 정확하게 해당 트랙에 이동해 실제 데이터를 읽고 쓰도록함.
-
각 섹터에 checksum 점검 : 오류 발생 시 읽기를 몇 차례 시도한 후 오류 여부를 판단
- 컴퓨터시스템과 연결을 위한 공용 인터페이스 PATA(Parallel ATA), IDE 확장기기, 전송속도 한계, 40,80개 가닥, 46cm SATA(Serial ATA)(1.5Gb/s), SATA 2(3Gb/s), SATA 3(6Gb/s): 7가닥, Hot swap SCSI(Small Computer System Interconnect)(640Mb/s): 서버용 SAS(Serial Attached SCSI)(3Gb/s), SAS2(6Gb/s): SATA와 SCSI의 장점 모음 Fiber Channel Interface
- SAN(Storage Area Network): 많은 디스크들이 고속 네트워크에 의해 서버들과 연결 여러 서버들에 의한 디스크 공유 디스크 구성: RAID(Redundant Arrays of Independent Disks) 통신: SCSI, Fiber Channel Interface
하드 디스크 성능 측정
엑세스 시간과 데이터 전송속도가 중요.
- 액세스 시간(Access Time) 읽기/쓰기 요구부터 데이터 전송시작까지 시간 탐색시간 + 지연시간 (탐색시간이 중요한 요소). 8msec ~ 20msec 탐색시간(Seek Time) : 디스크 암을 원하는 실린더에 위치시키는 시간. 2msec ~ 30msec 평균탐색시간 : 최악 탐색시간의 1/3 정도. 4msec~10msec 회전지연시간(Rotational Latency Time) : 헤드가 원하는 트랙에 도달한 후 원하는 섹터가 헤드 아래에 오는데 걸리는 시간. 4msec ~ 11msec 평균회전지연시간: 회전지연시간의 ½ 회전 지연 시간은 어떻게 할 수 없지만, 탐색 시간은 컨트롤 할 수 있음. 디스크 컨트롤러를 통해 seek time 줄여줄 수 있음.
- 데이터 전송속도(Data Transfer Rate) 첫 섹터가 접근된 후 데이터가 디스크로부터 R/W 되는 속도 초당 25Mb ~ 100 Mb(안쪽이 바깥쪽보다 낮음)
- MTTF(Mean Time To Failure) 평균적으로 디스크가 아무 실패 없이 계속 동작할 수 있는 시간 일반적으로 5년 정도
block
파일 입출력 단위로 고정된 수의 (물리적으로) 연속적인 섹터들 크기는 섹터크기의 배수로 512Bytes ~ 수K Bytes로 일반적으로 4~16K Bytes block이 모여서 file이 됨.
블록에 대한 요청은 순차적 접근과 임의적 접근이 있음. 순차적 접근은 seek time이 한번만 발생해 더 빠름.
-
순차적 접근 일련의 요청이 같은 트랙 혹은 인접한 트랙에 있는 연속적인 블록들을 접근 첫 요청에만 탐색시간이 발생함 가까운 블록을 접근하므로 단위시간당 전송률이 높음
-
임의적 접근 일련의 요청이 디스크상의 임의 위치들을 접근하도록 함 각 요청마다 탐색시간이 요구됨 단위시간당 전송률이 낮음
디스크 블록 액세스 최적화
디스크 암 스케줄링(Disk Arm Scheduling) 블록에 대한 요구를 헤드가 지나가는 순서대로 요구함 디스크 컨트롤러가 블록 요구 순서를 재구성 디스크 컨트롤러는 디스크 블록 구성, 디스크 판의 회전 위치, 디스크 암 위치 등을 상세하게 알고 있으므로 가능함 원하는 블록이 다른 실린더에 있을 경우 디스크 암의 움직임을 최소화 승강기 알고리즘(Elevator Algorithm)
버퍼링(Buffering) 디스크로부터 읽어 온 블록을 나중을 대비하여 메모리 버퍼에 임시로 저장
미리 읽기(Read Ahead) 블록에 대한 요청이 없더라도 동일 트랙 내 연속적인 블록을 일단 읽어 들임 순차적 접근에 유리
파일구성
파일은 논리적, 블록도 논리적.
- 블록 액세스 시간을 줄이기 위하여 예상되는 데이터 액세스 형태에 부합하게 디스크에 블록을 배치 한 파일이 연속적으로 액세스 될 것으로 예상될 경우 그 파일의 모든 블록을 인접한 실린더에 연속적으로 배치
디스크컨트롤러가 어디가 비어있는지 알고있다. 그래서 빈 곳에 저장해 순차탐색이 가능하게 한다.
-
현재 대부분의 OS들은 다중의 연속적인 블록을 한번에 파일에 할당함 하지만, 시간이 지나면 삽입, 삭제를 통해 단편화(Fragmentation) 발생해 연속적인 액세스는 디스크 암의 이동 경로를 길게 한다.
-
조각모음(Defragmetation) 디스크에 있는 데이터 백업 본을 구성해 디스크 전체에 다시 저장 이때, 각 파일의 블록을 연속적으로 다시 기록 -> 성능향상
플래시 저장장치
NOR 플래시, NAND 플래시가 있다.
NAND 플래시가 NOR 플래시 보다 저렴하고 많은 용량 제공 -> NAND 플래시 사용
NAND 플래시
-
자기디스크 보다 더 빠른 임의접근 제공 : 데이터 페이지를 1~2 us 이내 검색 (플래시에서의 페이지는 디스크에서의 섹터와 유사한 개념) 전송속도: 100 ~ 200MB/s -> 디스크 전송속도에 근접
-
쓰기작업 : 다소 복잡: 수 ms 소요 한 곳에 쓰기가 이루어지면 그 곳에 덮어쓰기를 할 수가 없고 지우고 다시 쓰기를 해야 함 동일 페이지당 지우기 횟수에 제한이 있음: 100,000 ~ 1,000,000회로 초과 시 오류 발생 가능성 높아짐