디스크 기반 데이터베이스(Disk-Based Database)

Kkd·2025년 2월 4일
0

매일메일 개념정리

목록 보기
79/93

Disk-Based Database란? (디스크 기반 데이터베이스)

Disk-Based Database(디스크 기반 데이터베이스)는 데이터를 디스크(HDD, SSD)에 저장하고 관리하는 데이터베이스입니다.
전통적인 데이터베이스 시스템은 디스크 I/O를 기반으로 데이터를 읽고 쓰며, 영속성(Persistence)을 보장합니다.
대표적인 예로 MySQL, PostgreSQL, Oracle, MongoDB, Cassandra 등이 있습니다.


1. Disk-Based DB vs In-Memory DB

비교 항목Disk-Based DB (디스크 기반 데이터베이스)In-Memory DB (인메모리 데이터베이스)
데이터 저장 위치디스크(HDD/SSD)메모리(RAM)
속도느림 (디스크 I/O 발생)빠름 (RAM에서 직접 접근)
영속성항상 보장됨 (데이터가 디스크에 저장)기본적으로 휘발성(일부 영속성 옵션 제공)
트랜잭션(ACID)강력한 트랜잭션 지원일부 In-Memory DB만 지원
I/O 비용높음 (디스크 읽기/쓰기 발생)낮음 (디스크 I/O 없음)
사용 사례일반적인 웹 애플리케이션, 금융, ERP캐시(Cache), 세션 저장, 실시간 분석

📌 즉, Disk-Based DB는 데이터를 영구적으로 저장하는 것이 목적이고, In-Memory DB는 속도가 중요할 때 사용됩니다.


2. Disk-Based DB의 주요 특징

  1. 영속성(Persistence) 보장

    • 데이터를 디스크(HDD/SSD)에 저장하여 전원 OFF 후에도 데이터 유지 가능.
    • 데이터 손실이 발생하지 않도록 WAL(Write-Ahead Logging), 체크포인트(Checkpoint) 등의 메커니즘 제공.
  2. 대용량 데이터 처리 가능

    • RAM 크기와 무관하게 대량의 데이터를 저장 및 관리 가능.
    • 분산 저장(Sharding), 클러스터링(Clustering) 등을 통해 확장 가능.
  3. 트랜잭션(ACID) 지원

    • 대부분의 전통적인 RDBMS(관계형 데이터베이스)는 ACID(Atomicity, Consistency, Isolation, Durability) 보장.
    • 트랜잭션 로그(Transaction Log)와 데이터 복제(Replication) 지원.
  4. 디스크 I/O 최적화

    • 데이터베이스는 인덱스(Index), 버퍼 풀(Buffer Pool), 캐시(Cache) 등을 사용하여 디스크 접근을 최소화.
    • SSD를 활용하면 기존 HDD 기반 DB보다 성능 향상 가능.
  5. SQL 또는 NoSQL 지원

    • SQL 기반(RDBMS): MySQL, PostgreSQL, Oracle, MS SQL Server 등.
    • NoSQL 기반: MongoDB, Cassandra, DynamoDB 등.

3. Disk-Based Database의 동작 방식

디스크 기반 데이터베이스는 데이터를 직접 디스크에서 읽는 것이 아니라, 메모리와 캐시를 활용하여 최적화합니다.

📌 주요 처리 과정

1️⃣ 디스크에서 데이터를 읽어 버퍼 풀(Buffer Pool)에 로드
2️⃣ 쿼리를 실행하고, 필요한 연산을 메모리에서 수행
3️⃣ 수정된 데이터는 일정 주기마다 디스크에 저장 (Checkpoint, WAL 사용)
4️⃣ 디스크에 저장 후 커밋(Commit) 수행

📌 이 과정을 통해 디스크 접근을 최소화하고 성능을 최적화함.


4. Disk-Based DB의 대표적인 종류

✔ 1) 관계형 데이터베이스(RDBMS)

📌 테이블(Table) 기반 데이터 저장, SQL 사용, ACID 보장

  • MySQL: 오픈소스 RDBMS, 높은 성능, 웹 애플리케이션에서 많이 사용됨.
  • PostgreSQL: 확장성과 기능이 강력한 고급 RDBMS.
  • Oracle Database: 대기업에서 많이 사용, 강력한 트랜잭션 지원.
  • MS SQL Server: 마이크로소프트 제공, 윈도우 환경에서 강력한 지원.

RDBMS 예제 (MySQL)

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(100)
);

INSERT INTO users VALUES (1, 'Alice', 'alice@example.com');
SELECT * FROM users;

✔ 2) NoSQL 데이터베이스

📌 비정형 데이터(문서, 키-값, 그래프 등) 저장, 높은 확장성 제공

  • MongoDB: JSON 기반의 문서형 데이터베이스, 스키마 유연성.
  • Cassandra: 분산형 NoSQL DB, 높은 확장성과 가용성 제공.
  • DynamoDB: AWS 제공 NoSQL 서비스, 서버리스 지원.

NoSQL 예제 (MongoDB)

db.users.insertOne({ "name": "Alice", "email": "alice@example.com" });
db.users.find();

5. Disk-Based DB의 성능 최적화 방법

디스크 기반 데이터베이스의 성능을 높이기 위해 여러 가지 최적화 기법이 사용됩니다.

1) 인덱스(Index) 사용

  • 데이터 검색 속도를 향상시키는 데이터 구조
  • 예제 (MySQL)
CREATE INDEX idx_name ON users(name);

인덱스를 사용하면 특정 필드 검색 속도가 대폭 향상됨


2) 쿼리 최적화(Query Optimization)

  • 불필요한 SELECT * 지양
  • WHERE 절에 인덱스를 활용할 수 있도록 작성
  • 조인(JOIN) 시 불필요한 중복 데이터를 줄이기

비효율적인 쿼리 예제

SELECT * FROM users;

최적화된 쿼리 예제

SELECT id, name FROM users WHERE name = 'Alice';

3) 캐시(Cache) 활용

  • 자주 조회되는 데이터를 메모리에 저장하여 디스크 I/O 최소화
  • Redis 같은 In-Memory DB를 활용하여 캐싱 가능

예제 (Spring + Redis)

@Cacheable("users")
public User getUserById(Long id) {
    return userRepository.findById(id).orElse(null);
}

4) 데이터 파티셔닝(Partitioning)

  • 데이터를 여러 개의 물리적 디스크 또는 노드에 분산 저장
  • 빅데이터 환경에서 많이 사용됨 (MySQL Sharding, MongoDB Cluster)

MongoDB 샤딩(Sharding) 설정

sh.enableSharding("myDatabase");
sh.shardCollection("myDatabase.users", { "userId": "hashed" });

6. Disk-Based DB의 장단점

✔ 장점

데이터 영속성 보장 → 전원 OFF 후에도 데이터 보존
대량 데이터 저장 가능 → RAM 제한 없이 GB~TB급 데이터 처리
SQL 지원 (RDBMS) → 복잡한 데이터 쿼리 가능
트랜잭션(ACID) 보장 → 데이터 정합성 유지 가능

❌ 단점

속도가 상대적으로 느림 → 디스크 I/O가 발생
디스크 장애 발생 가능 → 장애 대비 백업 & 복구 시스템 필요
스케일아웃이 어렵다 (일반적인 RDBMS) → 분산처리가 필요할 수도 있음


7. Disk-Based DB vs In-Memory DB 사용 사례

사용 사례Disk-Based DB (RDBMS, NoSQL)In-Memory DB (Redis, Memcached)
대량 데이터 저장✅ 적합❌ 비적합 (RAM 한정)
빠른 응답 속도❌ 상대적으로 느림✅ 매우 빠름
데이터 영속성✅ 보장됨❌ 기본적으로 휘발성
트랜잭션 관리✅ ACID 보장⚠ 일부 지원 (Redis Transactions)
캐싱(Cache)❌ 부적합✅ 적합

8. 결론

Disk-Based Database는 데이터를 디스크에 저장하는 방식으로 영속성을 보장
대량의 데이터를 저장할 수 있으며, RDBMS & NoSQL 형태로 사용 가능
속도는 In-Memory DB보다 느리지만, 트랜잭션과 영속성이 필요할 때 최적의 선택
고성능이 필요하면 인덱스, 캐싱, 샤딩 등의 최적화 기법을 적용해야 함

🚀 대규모 데이터 저장 & 복잡한 쿼리가 필요한 경우, Disk-Based DB를 적극 활용하자!


추가 학습 자료

profile
🌱

0개의 댓글