2023. 12. 10. 22:26ㆍCS Life/Database
Database 는 essentially Data storage system
Classfication of Physical Storage Media
Storage
- Volatile (휘발성) : 전원이 꺼지면 콘텐츠 소실
- Non-Volatile (비휘발성) : 전원이 꺼져도 콘텐츠 유지
보조 나 이차 저장소 포함, 전원 유지된 메인메모리
Storage 선택에 미치는 영향 - 데이터 접근 속도
- 데이터 단위 당 비용
- 신뢰성 (Reliability)
Primary : 가장 빠르지만 휘발성이다 (cache, main memory)
Secondary : 비휘발성이고 중간 정도의 access 시간 (on-line storage : flash memory, magnetic disks)
Teriary : 최하위 수준, 비휘발성이고 느린 access 시간 (magnetic tape, optical storage)
Storage Interfaces
표준 데이터 전송 방식 이라고 생각
- SATA (Serial ATA) : SATA 3 supports data transfer speeds of up to 6 gigabits/sec
- SAS (Serial Attached SCSI) : SAS Version 3 supports 12 gigabits/sec (Faster than SATA)
- NVMe (Non-Volatile Memory Express) interface : supports 24 gigabits/sec (Faster than SAS)
PCIe 커넥터와 작동하여 낮은 지연 시간과 높은 전송 속도 지원
Network
- SAN (Storage Area Network) : 많은 디스크가 높은 속도의 네트워크로 여러대의 서버에 연결
- NAS (Network Attached Storage) : 네트워크 파일 시스템 프로토콜을 사용해서 파일 시스템 인터페이스 제공
NAS의 파일 시스템 인터페이스는 클라이언트 서버와 NAS 사이에 있습니다. 따라서, 클라이언트 서버는 NAS의 파일 시스템을 통해 직접 물리적 스토리지에 액세스할 수 있습니다. 이는 NAS가 비구조화된 워크로드에 적합한 이유 중 하나입니다. 비구조화된 워크로드는 일반적으로 파일 단위로 데이터를 읽고 쓰는 작업을 많이 수행합니다. 따라서, 클라이언트 서버가 직접 물리적 스토리지에 액세스할 수 있으면 성능과 효율성이 향상될 수 있습니다.
SAN의 파일 시스템 인터페이스는 SAN과 응용 프로그램 사이에 있습니다. 따라서, 클라이언트 서버는 SAN의 파일 시스템을 통해 간접적으로 물리적 스토리지에 액세스해야 합니다. 이는 SAN이 구조화된 워크로드에 적합한 이유 중 하나입니다. 구조화된 워크로드는 일반적으로 블록 단위로 데이터를 읽고 쓰는 작업을 많이 수행합니다. 따라서, 파일 시스템이 데이터베이스와 같은 응용 프로그램과 밀접하게 통합되어 있으면 성능과 안정성이 향상될 수 있습니다.
블록 단위로 데이터를 읽고 쓰는 것과 파일 단위로 읽는 것은 다음과 같은 차이점이 있습니다.
- 데이터 전송 단위
블록 단위로 데이터를 읽고 쓰는 것은 데이터를 일정한 크기의 블록으로 나누어 전송하는 방식입니다. 파일 단위로 읽는 것은 파일을 전체로 나누어 전송하는 방식입니다.
- 데이터 접근 방식
블록 단위로 데이터를 읽고 쓰는 것은 파일 시스템을 통해 간접적으로 데이터에 접근하는 방식입니다. 파일 단위로 읽는 것은 파일 시스템을 통해 직접 데이터에 접근하는 방식입니다.
- 성능
블록 단위로 데이터를 읽고 쓰는 것은 파일 단위로 읽는 것보다 성능이 더 좋습니다. 이는 블록 단위로 데이터를 읽고 쓰는 경우, 파일 시스템에서 파일의 위치를 찾고 파일을 읽는 등의 추가 작업이 필요하지 않기 때문입니다.
- 효율성
블록 단위로 데이터를 읽고 쓰는 것은 파일 단위로 읽는 것보다 효율적입니다. 이는 블록 단위로 데이터를 읽고 쓰는 경우, 파일의 크기가 작거나 파일의 일부만 읽는 경우에도 전체 파일을 읽을 필요가 없기 때문입니다.
- 적합한 워크로드
블록 단위로 데이터를 읽고 쓰는 것은 구조화된 워크로드에 적합합니다. 구조화된 워크로드는 일반적으로 데이터베이스, 파일 서버, 가상화 환경과 같이 블록 단위로 데이터를 읽고 쓰는 작업을 많이 수행합니다.
파일 단위로 읽는 것은 비구조화된 워크로드에 적합합니다. 비구조화된 워크로드는 일반적으로 파일 공유, 백업, 컨텐츠 관리와 같이 파일 단위로 데이터를 읽고 쓰는 작업을 많이 수행합니다.
다음은 이러한 차이점을 이해하는 데 도움이 되는 예입니다.
블록 단위로 데이터를 읽고 쓰는 예
데이터베이스 서버는 블록 단위로 데이터를 읽고 씁니다. 데이터베이스 서버는 데이터베이스의 데이터를 일정한 크기의 블록으로 나누어 저장합니다. 클라이언트가 데이터베이스에 데이터를 읽거나 쓸 때, 데이터베이스 서버는 해당 블록을 읽거나 씁니다.
파일 단위로 데이터를 읽고 쓰는 예
파일 서버는 파일 단위로 데이터를 읽고 씁니다. 파일 서버는 클라이언트가 파일을 읽거나 쓸 때, 해당 파일을 전체로 읽거나 씁니다.
이러한 예를 통해 블록 단위로 데이터를 읽고 쓰는 것과 파일 단위로 읽는 것의 차이점을 이해할 수 있습니다.
Magnetic Hard Disk Mechanism
Magnetic Disks
Read-Write head
- platter 의 표면은 원형 track 으로 나누어져 있음
- 각 트랙은 sector 로 나뉨
- Sector : 읽기 쓰기가 가능한 데이터의 가장 작은 단위
- 보통 512 byte
- 내부 트랙 : 500~1000
- 외부 트랙 : 1000~2000
- 읽거나 쓰려면 디스크 암이 움직여서 오른쪽 트랙에 위치
- 플래터는 지속적으로 회전
- 섹터가 헤드 아래를 지나갈 때 데이터가 읽기/쓰기
- head-disk assemplies
- 여러개의 디스트 플래터 (원형판) 은 하나의 스핀들 (spindle : 축) 이 할당
- 플래터 당 하나의 헤드, 공통 암에 장착됨
- 실린더 i 는 모든 플래터의 첫번째 트랙으로 구성됨
Disk Controller
- 컴퓨터 시스템과 디스크 드라이브 하드웨어 간의 인터페이스
- 섹터를 읽고 쓸때 Command 를 수락
- 디스크 암을 오른쪽으로 옮기고 실제 읽기 쓰기에 대한 동작이 실행
- 불량 섹터에 대해서는 Remapping 을 진행
Performance Measures of Disks
-
Access Time
읽기 쓰기 request 가 발생한 후 데이터 전송이 시작될 때까지 걸리는 시간 -
Seek Time
디스크 암을 올바른 트랙 위에 다시 배치하는 데 걸리는 시간 -
Rotational Latency
Access 하는 섹터가 헤드 아래에 나타날 때까지 걸리는 시간
: 일반적인 디스크에서는 4~11 밀리초
전체 지연시간은 디스크 모델에 따라 5~20 msec -
Data-transfer rate
디스크에서 데이터를 검색하거나 저장하는 속도
최대 초당 25~200mb -
Disk Block
스토리지 할당 및 검색을 위한 Logical Unit
일반적으로 4~16kb
작을수록 디스크에서 더 많은 전송
클수록 일부만 채워진 블록에 대해서 공간 낭비가 발생 -
Sequential Access Pattern
연속적인 디스크블록에 저장되고 연속적으로 요청
디스크는 첫번째 블록에 대해서만 탐색이 필요 -
Random Access Pattern
데이터가 디스크 어느 곳이나 저장되고 임의로 요청
연속적인 요청은 디스크의 어느 곳에나 있는 블록에 대한 요청
각 데이터에 접근할 때마다 탐색이 필요
탐색에 많은 시간이 발생하여 전송 속도가 느림 -
I/O Operations per second (IOPS)
디스크가 초당 지원할 수 있는 랜덤 블록 읽기 횟수
Magnetic disk 에서 50~200 IOPS 까지 가능
Flash Storage
NAND Flash
스토리지에 많이 사용된다
기존 처럼 읽는 것이 아닌 page-at-time read 가 필요
→ 한번에 한페이지씩 읽어야한다 (page : 4~8kb)
페이지 읽기에 20~100 msec
이전 sequential - random reading 과 큰 차이 없음
페이지는 한번만 쓰여질 수 있다 → 다시 쓰려면 지워야한다
Solid State Disk
Integrated Circuit Assemblies 를 사용하는 solid state storage device
→ 데이터를 영구적으로 저장
→ 일반적으로 플래시메모리를 사용
→ 컴퓨터 스토리지 계층 구조에서 두번째 스토리지로 기능
-
SATA 를 사용하면 500MB/sec ~ NVMe PCIe 를 사용하면 3GB/sec 까지 전송속도 제공
-
삭제는 블록 단위로 이루어짐
-
2~5 msecs
-
삭제 블록은 보통 256KB ~ 1MB 단위
-
논리적인 페이지 주소를 물리적 페이지 주소로 Remapping 하여 삭제 대기를 방지
→ 플래시 메모리의 내구성을 향상시키기 위해 사용되는 기술입니다. 플래시 메모리는 반복적인 쓰기/지우기 작업에 취약하기 때문에, 리매핑은 이러한 작업을 분산하여 플래시 메모리의 수명을 연장하는 데 도움 -
Flash Translation Table
매핑을 추적
플래시 페이지의 라벨 필드에 저장
플래시 번역 계층에서 리매핑을 수행
10만~100만번 이상의 삭제 이후에는 삭제 블록이 불안정하여 사용할 수 없음
Wear Leveling
- 플래시 스토리지의 모든 섹터 (sector)에 물리적 주소 (physical address)를 할당합니다.
- 섹터가 쓰기/지우기 작업으로 인해 손상된 경우, 해당 섹터의 물리적 주소를 다른 섹터의 물리적 주소로 매핑합니다.
- 호스트 시스템은 매핑된 섹터를 사용하여 데이터를 읽고 씁니다.
- LSN은 호스트 시스템이 사용하는 논리적 섹터 번호
- PSN은 플래시 스토리지에 저장된 물리적 섹터 번호
Wear Leveling
: 플래시 메모리와 같이 삭제 가능한 저장매체의 수명을 연장하는 기술
쓰기가 많은 블록에서 데이터를 가져와 쓰기가 적은 불록을 재분배(Re-distributing)하는 방식
이론적으로는 해당 디스크 주변에 쓰기를 분산시켜서 디스크 수명을 연장
Storage Class Memory
인텔이 개척한 비 휘발성 3D-X 포인트 메모리 기술
인텔 옵테인으로 제공
2017부터 출하된 SSD Interface
Flash SSD 보다 낮은 Latency 가능
2018년 발표된 비 휘발성 메모리 인터베이스
주메모리와 비슷한 속도로 직접 접근이 가능
RAID
: Redundant Arrays of Independent Disks
다수의 디스크를 하나의 디스크처럼 관리할 수 있는 디스크 구성기술
- 여러 개의 디스크를 병렬로 사용하여 고용량 고속의 데이터 저장
- 데이터를 중복으로 저장해서 디스크에 장애가 발생해도 데이터 복구 가능
특정 단일 디스크보다 다중 디스크에서 장애가 발생할 확률이 높음 - 디스크 수가 많을수록 데이터 손실을 방지하기 위해 이중화를 사용하는 기술이 중요
RAID 0
Block Striping, non-redundant
두 개 이상의 드라이브가 마치 하나의 드라이브 인 것처럼 작동
하지만 보호 기능이 제공되지 않음
장점 : 중복성이 없기 때문에 드라이브 공간을 최대한 사용 가능, 높은 성능
단점 : 보호 기능 없음
RAID 1
: Mirrored Disks with Block Striping
서로의 거울 역할을 하는 드라이브 : 중복성을 제공
드라이브의 총합 공간이 제공되는 0 과 달리 1 은 두번째 드라이브가 중복성을 위해 사용되므로 공간의 절반만 사용
- 두 하드 드라이브의 크기가 동일해야함
장점 : 중복성 존재
단점 : 공간을 효율적으로 사용하지 않음
RAID 5
: Block-interleaved Distributed Parity
단일 드라이브에 장애가 발생해도 데이터 손실이 없도록 Distributed Parity 를 통해 후속 읽기를 가능하게 함
최소 3개의 디스크가 필요
모든 디스크 간에 데이터와 Parity 를 분할
손실된 데이터를 복구하는 방법은 간단하다
남아있는 데이터와 패리티 정보 사이에 XOR 연산 수행
Improvement of Reliability via Redundacy
→ 중복성을 통한 안정성 향상
- 중복성
중복성은 디스크 장애로 인해 손실된 정보를 재구축하는 데 사용할 수 있는 추가 정보를 저장 - Mirroring or Shadowing
- 모든 디스크 복제 : 논리적 디스크는 두개의 물리적 디스크로 구성
- 모든 쓰기는 모든 디스크에서 수행 : 읽기는 어느 디스크에서나 수행 가능
- 하나의 디스크에 장애가 발생해도 다른 디스크에서 데이터를 계속 사용
- 데이터 손실은 디스크가 장애가 발생하고 시스템이 복구되기 전에 미러 디스크도 장애가 발생하는 경우에만 발생
- 복합 장애 발생 가능성 매우 낮음
- 화재와 건물 붕괴 같은 어쩔 수 없는 장애 제외
RAID Type
SW RAID
모든 구성이 OS 에 의해 처리
특별한 하드웨어 지원 없이 소프트웨어 만으로 구현
장점 : 추가 하드웨어 필요 없음 + RAID 관리 소프트우어가 대부분 OS 에 포함되어 있어 매우 저렴
단점 : 자체 하드웨어로 관리되지 않기 때문에 컴퓨터에서 리소스 빼앗음
HW RAID
장점 : 모든 것이 인터페이스 카드에 의해 처리 → 메모리나 CPU 전원을 사용할 필요가 없음
Optimization of Disk-Block Access
- Buffering : 디스크 블록을 캐시하는 인메모리 버퍼
- Read-ahead : 곧 요청될 것을 예상해서 트랙에서 추가 블록을 읽음
- Disk-arm-scheduling : 블록 요청 순서를 변경하여 디스크암 이동을 최소화
- Elevator algorithm :
대기 중인 디스크 요청 목록 : 100 50 10 20 75 → 10 20 50 75 100 처럼 오름차순 정렬
- Elevator algorithm :
- File Organization : 파일의 블록을 가능한 한 연속적인 방식으로 할당
파일이 조각화 될 수 있음
디스크의 여유 블록이 흩어져 있고 새로 생성된 파일이 디스크에 블륵으로 흩어져서 저장하는 경우
조각화된 파일에 순차적으로 접근하게 되면 디스크암의 이동이 증가
일부 시스템에는 파일 액세스 속도를 높이기 위해 파일 시스템을 defragment 하는 기능 존재
“이 글은 Obsidian 에서 작성되어 업로드 되었습니다”
'CS Life > Database' 카테고리의 다른 글
Week 11 - Data Storage Structure (0) | 2024.02.02 |
---|---|
Week 14 - Normalization (0) | 2023.12.10 |
Week 8 - Database Design Using E-R Model (1) | 2023.12.10 |
WHERE-HAVING 절 차이 (0) | 2023.10.25 |
Week 5 - Introduction to SQL (1) (0) | 2023.10.24 |