Database Management System
데이터베이스를 관리하는 소프트웨어.
데이터를 저장, 조회, 수정, 삭제할 수 있도록 도와주는 시스템.
파일에 직접 데이터를 저장하면 중복, 충돌, 보안 문제가 생기는데
DBMS가 이 모든 걸 체계적으로 관리해줌.
테이블(행과 열) 구조로 데이터를 저장.
테이블 간 관계를 정의해서 데이터를 연결.
SQL로 데이터를 다룸.
| 대표 제품 | 특징 |
|---|---|
| MySQL | 오픈소스, 웹 서비스에서 가장 많이 쓰임 |
| PostgreSQL | 기능이 풍부, 복잡한 쿼리에 강함 |
| SQLite | 파일 기반, 모바일 앱 로컬 DB로 자주 쓰임 |
| Oracle | 대기업 환경, 유료 |
테이블 대신 문서, 키-값, 그래프 등 다양한 형태로 저장.
스키마가 유연해서 데이터 구조가 자주 바뀌는 서비스에 적합.
| 대표 제품 | 형태 | 특징 |
|---|---|---|
| Firestore | 문서(Document) | Firebase 기반, 실시간 동기화 |
| MongoDB | 문서(Document) | JSON 형태로 저장 |
| Redis | 키-값(Key-Value) | 메모리 기반, 캐싱에 자주 사용 |
RDBMS를 다루는 언어.
-- 조회
SELECT * FROM users WHERE age > 20;
-- 삽입
INSERT INTO users (name, age) VALUES ('현서', 25);
-- 수정
UPDATE users SET age = 26 WHERE name = '현서';
-- 삭제
DELETE FROM users WHERE name = '현서';
여러 작업을 하나의 단위로 묶는 것.
중간에 실패하면 전체를 되돌림 (롤백).
계좌 이체 예시
1. A 계좌에서 10,000원 차감
2. B 계좌에 10,000원 추가
→ 둘 다 성공해야 완료, 하나라도 실패하면 전체 취소
트랜잭션이 보장해야 하는 4가지 성질.
| 속성 | 의미 |
|---|---|
| Atomicity (원자성) | 전부 성공하거나 전부 실패 |
| Consistency (일관성) | 트랜잭션 전후 데이터 규칙 유지 |
| Isolation (격리성) | 동시 트랜잭션이 서로 영향 안 줌 |
| Durability (지속성) | 완료된 트랜잭션은 영구 저장 |
자주 조회하는 컬럼에 인덱스를 걸면 탐색 속도 향상.
책의 목차처럼 원하는 데이터 위치를 빠르게 찾아줌.
CREATE INDEX idx_name ON users(name);
| RDBMS | NoSQL | |
|---|---|---|
| 구조 | 테이블 (행/열) | 문서, 키-값 등 |
| 스키마 | 고정 | 유연 |
| 관계 표현 | JOIN으로 연결 | 중첩 구조 또는 참조 |
| 일관성 | 강함 (ACID) | 상황에 따라 다름 |
| 대표 예시 | MySQL, PostgreSQL | Firestore, MongoDB |
| 용도 | 선택지 |
|---|---|
| 로컬 저장 (간단한 값) | SharedPreferences |
| 로컬 저장 (구조화된 데이터) | SQLite (sqflite 패키지) |
| 클라우드 DB | Firestore (NoSQL) |
| 클라우드 관계형 DB | Cloud SQL, RDS (서버 통해 접근) |
Firestore를 쓰면서 DB를 쓰고 있었는데 그게 NoSQL DBMS였다는 걸 알았다
RDBMS는 관계와 일관성이 중요할 때, NoSQL은 유연하고 빠른 개발이 필요할 때 맞는 선택