데이터베이스 시스템 1주차 강의 쉽게 풀어보기 📚
데이터베이스를 "사용하는 방법"이 아니라, "어떻게 만들어지고 작동하는지" 내부 구조를 공부하는 과목이에요. 주요 주제는 다섯 가지입니다.
물리적 저장장치 → 인덱싱 → SQL 질의 처리 → 트랜잭션/동시성/복구 → 빅데이터 저장
선수과목으로 데이터베이스 설계, Java 프로그래밍, DB 프로그래밍을 이미 알고 있다고 가정하고 진행됩니다.
5. DBMS란?
데이터베이스(DB) = 조직이 공유해서 쓰는 데이터들의 구조화된 모음
DBMS = DB + 그 데이터를 관리하는 프로그램들
쉽게 말하면, 도서관이 DB라면 사서 시스템이 DBMS예요.
DBMS를 사용하는 사람들은 여러 역할로 나뉩니다.
- DBA(관리자) : DB 스키마 생성/변경, 권한 관리, 백업 담당
- 응용 프로그래머 : DB를 활용한 앱을 만드는 사람
- 최종 사용자 : 실제로 데이터를 조회하거나 입력하는 사람
- DB 설계자 : ERWin 같은 도구로 DB 구조 설계
- 오퍼레이터 : 컴퓨터 시스템 자체를 관리하는 사람
6. ANSI/SPARC 3단계 구조
DB는 3가지 레벨로 나뉘어 설계됩니다.
[외부 단계] ← 각 사용자가 보는 뷰 (개인 맞춤 화면)
↕ (논리적 데이터 독립성)
[개념 단계] ← 전체 DB의 논리적 구조 (테이블, 관계 등)
↕ (물리적 데이터 독립성)
[내부 단계] ← 실제 디스크에 어떻게 저장되는지 (인덱스, 압축 등)
데이터 독립성이 핵심 개념이에요.
- 논리적 독립성 : 개념 단계가 바뀌어도 사용자 화면은 안 바뀜
- 물리적 독립성 : 저장 방식이 바뀌어도 논리 구조는 안 바뀜
예를 들어 인덱스를 추가하거나 파일 구조를 바꿔도, SQL 쿼리나 앱 코드를 수정할 필요가 없어야 한다는 뜻이에요.
7. 물리적 저장 시스템 (본론!)
저장 장치의 분류
저장 장치는 크게 두 가지로 나뉩니다.
- 휘발성 : 전원 꺼지면 데이터 사라짐 → 캐시, RAM
- 비휘발성 : 전원 꺼져도 유지 → HDD, SSD, 테이프
저장 장치의 계층 구조
[캐시] ← 가장 빠름, 가장 비쌈, 휘발성
[메인 메모리]
─────────────────────
[플래시(SSD)] ← 비휘발성, 빠름
[자기디스크(HDD)]
─────────────────────
[광학 디스크] ← 느림, 오프라인 보관용
[자기 테이프] ← 가장 느림, 가장 저렴, 대용량 백업
빠를수록 비싸고 용량이 작고, 느릴수록 싸고 용량이 큽니다.
8. 저장 장치 인터페이스
컴퓨터와 디스크를 연결하는 방식입니다.
인터페이스 최대 속도 특징
| SATA 3 | 6GB/s | 일반적인 SSD/HDD 연결 |
| SAS 3 | 12GB/s | 서버용 |
| NVMe (PCIe) | 24GB/s | 최신 고속 SSD |
- SAN : 여러 서버가 고속 네트워크로 수많은 디스크를 공유
- NAS : 네트워크를 통해 파일 시스템처럼 접근
9. 자기 디스크(HDD)의 구조
HDD는 마치 LP 레코드판 같은 원판(플래터)이 여러 장 겹쳐 있고, 바늘(헤드)이 데이터를 읽는 구조예요.
- 플래터 : 데이터가 저장되는 원형 판
- 트랙 : 플래터의 동심원 (1장당 50~100만개)
- 섹터 : 트랙을 잘게 쪼갠 단위, 읽기/쓰기의 가장 작은 단위 (보통 512바이트)
- 실린더 : 여러 플래터에서 같은 위치의 트랙들 묶음
- 헤드 : 데이터를 읽고 쓰는 장치
데이터를 읽으려면 두 가지 동작이 필요해요.
- 암(arm)을 원하는 트랙으로 이동
- 플래터가 회전해서 해당 섹터가 헤드 아래로 올 때까지 기다림
디스크 성능 측정 지표
지표 설명 일반적인 수치
| 탐색시간 (Seek Time) | 헤드를 트랙으로 이동하는 시간 | 4~10ms |
| 회전 지연 (Rotational Latency) | 섹터가 헤드 아래로 올 때까지 기다리는 시간 | 4~11ms |
| 데이터 전송률 | 실제 데이터 읽기 속도 | 50~200MB/s |
| IOPS | 초당 랜덤 블록 읽기 횟수 | 50~200 |
| MTTF | 평균 무고장 시간 (신뢰성) | 이론상 50~120만 시간 |
평균 접근시간 = 탐색시간 + 회전지연 + 데이터 읽기 시간 (대부분 앞의 두 개가 지배)
디스크 블록은 DB에서 실제 데이터를 주고받는 논리적 단위입니다 (보통 4~16KB).
10. 플래시 메모리(SSD)
SSD는 NAND 플래시 메모리로 만들어진 저장장치예요.
핵심 특징:
- 한 페이지(약 4KB)씩 읽음 → 읽기 속도 20~100 마이크로초 (HDD는 5~10ms → 약 100배 빠름)
- 한 번 쓴 페이지는 바로 덮어쓸 수 없음 → erase(지우기) 먼저 해야 함
- 지울 수 있는 횟수 제한 있음 (10만~100만 회)
이 한계를 극복하기 위한 기술들:
- 플래시 변환 테이블 : 논리 주소 ↔ 물리 주소 매핑 관리
- GC (가비지 컬렉션) : 삭제된 페이지들을 모아서 한꺼번에 정리
- 웨어 레벨링 : 특정 셀만 집중 사용되지 않도록 데이터를 고르게 분산
SSD vs HDD 비교
항목 HDD SATA SSD NVMe SSD
| 순차 읽기 | 80~160 MB/s | 500~600 MB/s | 5,000~7,500 MB/s |
| 랜덤 읽기 | 0.5~2 MB/s | 30~90 MB/s | 500~1,500 MB/s |
| 부팅 속도 | 30~60초 | 10~20초 | 5~10초 |
| 수명 | 3~5년 | 5~10년 이상 | |
| 소음 | 있음 | 없음 | |
| 전력 | 4~6W | 2~3W |
11. RAID — 여러 디스크를 묶어서 사용하기
RAID는 여러 디스크를 마치 하나처럼 묶어서 **속도↑ 또는 안정성↑**을 달성하는 기술이에요.
왜 필요할까요? 디스크가 100개면 41일마다 하나씩 고장날 수 있어요. 중요한 데이터를 지키려면 이중화가 필수!
핵심 개념 두 가지
- 스트라이핑 : 데이터를 여러 디스크에 분산 저장 → 속도 향상
- 미러링/패리티 : 데이터를 복제하거나 복구 정보 저장 → 신뢰성 향상
RAID 레벨별 정리
RAID 0 — 스트라이핑만
- 데이터를 여러 디스크에 나눠 저장
- 장점: 빠름, 공간 100% 활용
- 단점: 디스크 하나 망가지면 전부 손실. 백업 없이는 위험
RAID 1 — 미러링
- 같은 데이터를 두 디스크에 똑같이 저장
- 장점: 하나 망가져도 다른 걸로 바로 복구, 읽기 빠름
- 단점: 공간 효율 50% (2개 사면 1개치만 씀), 쓰기는 단일 디스크와 동일
RAID 5 — 스트라이핑 + 분산 패리티
- 데이터와 패리티(복구 정보)를 모든 디스크에 골고루 나눠 저장
- 패리티는 XOR 연산으로 계산 → 디스크 1개 고장 시 복구 가능
- 장점: 공간 효율 우수 (N-1개 활용), 읽기 성능 좋음
- 단점: 쓰기 시 패리티 계산 필요 → 쓰기 느림
RAID 6 — 이중 패리티 (P+Q)
- 패리티를 2개 저장 → 디스크 2개 동시 고장도 복구 가능
- 대용량 스토리지일수록 중요성 증가
- 단점: 쓰기가 더 느리고 최소 4개 디스크 필요
RAID 10 (1+0) — 미러링 + 스트라이핑
- 속도와 안정성 둘 다 잡음
- 단점: 공간 효율 50%, 최소 4개 디스크 필요
언제 어떤 RAID를?
상황 추천 RAID
| 속도만 중요, 데이터 손실 감수 | RAID 0 |
| 잦은 소규모 쓰기, 안정성 중요 | RAID 1 |
| 순차적 대용량 읽기/쓰기 | RAID 5 |
| 최고 안정성 필요 | RAID 6 |
| 속도 + 안정성 균형 | RAID 10 |
12. 디스크 블록 접근 최적화
DB는 디스크 I/O가 병목이 되기 때문에, 접근 횟수를 줄이는 게 핵심이에요.
- 버퍼링 : 디스크에서 읽은 블록을 메모리에 캐시해 두기 (같은 블록 재요청 시 디스크 안 가도 됨)
- 미리 읽기 (Read Ahead) : 곧 필요할 블록을 미리 읽어 놓기 (순차 접근 시 매우 효과적)
- 디스크 암 스케줄링 : 요청 순서를 재정렬해서 헤드 이동 거리 최소화
- 엘리베이터 알고리즘 : 엘리베이터처럼 한 방향으로 쭉 이동하며 처리
- 파일 연속 배치 : 파일 블록을 디스크에 연속으로 배치 → 탐색 시간 최소화
- 단편화가 발생하면 디스크 조각모음(defragmentation) 수행
13. 자기 테이프
- 가장 저렴한 대용량 저장 매체 (수 GB ~ 수백 GB)
- 순차 접근만 가능 (랜덤 접근 불가) → 접근이 매우 느림
- 주로 백업, 아카이브 용도로 사용
- 테이프 주크박스 형태로 페타바이트급 저장 가능
요약 한눈에 보기 🗺️
저장장치 계층: 캐시 > RAM > SSD > HDD > 광학 > 테이프
빠름/비쌈 느림/저렴
RAID 목적: 성능(스트라이핑) + 신뢰성(미러링/패리티)
디스크 I/O 최적화: 버퍼링 + 미리읽기 + 암스케줄링 + 연속배치
강의 내용이 많아 보이지만, 결국 핵심은 "데이터를 어디에, 어떻게 저장하면 빠르고 안전한가?" 라는 질문에 대한 답입니다! 궁금한 부분 있으면 더 물어보세요 😊