콘텐츠로 이동

데이터베이스

데이터베이스 (Database)

왜 쓰는지

파일 시스템(텍스트 파일, 엑셀 등)에 데이터를 저장하면 생기는 문제를 DB가 해결한다.

문제 DB가 해결하는 방법
보안 접근 권한(Role) 관리, 인증 없이는 데이터 접근 불가
동시성 여러 사용자가 동시에 읽고 쓸 때 충돌 방지 (Lock, MVCC)
데이터 회복 & 백업 장애 발생 시 트랜잭션 로그로 복구 가능
ACID 보장 데이터 일관성과 무결성을 트랜잭션 수준에서 보장

어떻게 쓰는지

DBMS(DataBase Management System): 데이터베이스를 관리하는 소프트웨어. 사용자가 SQL로 요청하면 DBMS가 실제 데이터를 읽고 쓴다.

대표적인 DBMS: MySQL, PostgreSQL, Oracle, MariaDB, SQLite

SQL 명령어는 역할에 따라 4가지로 분류된다.

분류 이름 역할 주요 명령어
DDL Data Definition Language 구조(스키마) 정의 CREATE, ALTER, DROP, TRUNCATE
DML Data Manipulation Language 데이터 조작 SELECT, INSERT, UPDATE, DELETE
DCL Data Control Language 권한 제어 GRANT, REVOKE
TCL Transaction Control Language 트랜잭션 제어 COMMIT, ROLLBACK, SAVEPOINT

언제 쓰는지

상황 RDBMS NoSQL
구조화된 데이터 RDBMS -
관계형 조인 RDBMS -
ACID 보장 필요 RDBMS -
트랜잭션 RDBMS 제한적
스키마 변경 빈번 - NoSQL
대규모 비정형 데이터 - NoSQL
높은 쓰기 성능 - NoSQL
복잡한 쿼리 RDBMS -

장점

장점 설명
데이터 무결성 제약 조건과 트랜잭션으로 일관성 보장
ACID 보장 Atomicity, Consistency, Isolation, Durability
복잡한 쿼리 JOIN, 서브쿼리로 강력한 데이터 검색
표준 언어 SQL은 DBMS 간 호환 가능
정규화 데이터 중복 제거로 저장 효율성
보안 권한 관리(DCL)로 접근 제어

단점

단점 설명
스키마 고정 구조 변경 시 마이그레이션 비용
수평 확장 어려움 샤딩 없이는 단일 서버 확장성 제한
높은 쓰기 비용 트랜잭션, 정규화로 인한 오버헤드
유연성 부족 형식이 정해진 데이터만 저장 가능

특징

용어 설명
데이터(Data) 개별적인 사실 (예: 27, "김철수", true)
정보(Information) 가공·처리된 데이터 — 의미가 부여된 것 (예: "나이 27살인 회원 김철수")
스키마(Schema) 테이블의 구조 정의 — 컬럼명, 타입, 제약 조건
인스턴스(Instance) 실제 저장된 데이터 행들

주의할 점

❌ 과도한 정규화

JOIN이 많아지면 오히려 성능 악화 가능. 필요하면 역정규화(Denormalization) 고려.

⚠️ DDL 자동 커밋

DROP, TRUNCATE, ALTER는 자동 COMMIT됨. ROLLBACK 불가능 (MySQL 기준). 실행 전 반드시 백업 후 신중하게 처리.


관련 파일:

  • ACID — 트랜잭션 4대 성질
  • SQL — SQL 명령어 구조와 실행 순서
  • 트랜잭션 — BEGIN/COMMIT/ROLLBACK