개요

**데이터베이스 관리(Database Management)**는 데이터의 저장·조직·검색·보호·유지보수를 체계적으로 수행하는 활동 전반. DBMS(Database Management System)가 핵심 도구.


DBMS 분류

관계형 (RDBMS)

DBMS특징
PostgreSQL오픈소스, 고기능, JSON 지원
MySQL / MariaDB웹 표준, 경량, 높은 호환성
Oracle DB엔터프라이즈, 고성능, 고비용
SQL ServerMicrosoft 생태계 통합
SQLite임베디드, 파일 단위, 모바일

NoSQL

유형DBMS용도
DocumentMongoDB, Firestore유연한 스키마
Key-ValueRedis, DynamoDB캐시, 세션
ColumnCassandra, HBase대용량 쓰기
GraphNeo4j, Neptune관계 분석
Time-seriesInfluxDB, TimescaleDB로그, 모니터링

핵심 개념

ACID 속성

속성설명
Atomicity트랜잭션 전부 성공 or 전부 실패
Consistency트랜잭션 전후 데이터 무결성 유지
Isolation동시 트랜잭션 간 간섭 없음
Durability커밋된 데이터는 영구 보존

인덱스

-- 기본 인덱스
CREATE INDEX idx_user_email ON users(email);
 
-- 복합 인덱스
CREATE INDEX idx_order_user_date ON orders(user_id, created_at);
 
-- 인덱스 확인 (PostgreSQL)
SELECT * FROM pg_indexes WHERE tablename = 'users';

정규화

단계규칙
1NF원자값, 반복 그룹 제거
2NF부분 함수 종속 제거
3NF이행 함수 종속 제거
BCNF모든 결정자가 후보키

백업 & 복구

# PostgreSQL 덤프
pg_dump mydb > backup.sql
pg_dump -Fc mydb > backup.dump   # 압축 포맷
 
# 복구
psql mydb < backup.sql
pg_restore -d mydb backup.dump
 
# MySQL 덤프
mysqldump -u root -p mydb > backup.sql
mysql -u root -p mydb < backup.sql

성능 최적화

  • 쿼리 분석: EXPLAIN ANALYZE 로 실행 계획 확인
  • 인덱스 활용: 자주 쓰는 WHERE·JOIN 컬럼에 인덱스
  • 연결 풀링: PgBouncer, ProxySQL
  • 파티셔닝: 대용량 테이블 분할
  • 캐싱: Redis로 자주 조회하는 쿼리 결과 캐시

관련 항목