🗄️
EPISODE 01
RDBMS vs NoSQL · SQL · SQLite
DB 개념
JSON 파일의 한계와 데이터베이스가 필요한 이유, RDBMS와 NoSQL의 차이, SQL의 역할, 그리고 학습용으로 적합한 SQLite를 소개합니다.
DBRDBMSNoSQLSQLite
소요 시간
⏱ 30~45분
난이도
📊 중급
선수 조건
🎯 node-06
결과물
DB의 필요성과 RDBMS·NoSQL 선택 기준에 대한 이해
이 강의에서 배우는 것
- 1JSON 파일 방식의 한계 5가지를 설명한다
- 2RDBMS와 NoSQL의 차이를 비교한다
- 3SQL의 4가지 핵심(조회/삽입/수정/삭제)을 안다
- 4SQLite의 특징과 사용 시점을 안다
1. JSON 파일의 한계
| 문제 | 설명 |
|---|---|
| 동시 접근 충돌 | 두 사용자가 동시에 쓰면 데이터가 덮어씌워짐 |
| 검색 성능 | 10만 건 중 하나를 찾으려면 전체를 읽어야 함 |
| 관계 표현 | 유저-주문-상품 관계를 표현하기 어려움 |
| 데이터 무결성 | 타입 검증, 중복 방지 없음 |
| 트랜잭션 | 여러 작업을 묶어서 처리할 수 없음 |
2. 데이터베이스란
데이터베이스(DB): 구조화된 방식으로 데이터를 저장·관리하는 시스템. DBMS는 그 DB를 관리하는 소프트웨어.
text
애플리케이션 → DBMS → 데이터베이스(파일/디스크)3. RDBMS vs NoSQL
RDBMS — 테이블·SQL·JOIN
text
[users 테이블]
id | name | email
1 | 김철수 | kim@example.com
2 | 이영희 | lee@example.com
[orders 테이블]
id | user_id | product | price
1 | 1 | 노트북 | 1500000
2 | 1 | 마우스 | 30000MySQL, PostgreSQL, SQLite, Oracle 등.
NoSQL — 문서·키값·그래프
json
// MongoDB 문서
{
"_id": "64abc123",
"name": "김철수",
"orders": [
{ "product": "노트북", "price": 1500000 },
{ "product": "마우스", "price": 30000 }
]
}MongoDB(문서), Redis(키-값), Neo4j(그래프) 등.
| 항목 | RDBMS | NoSQL |
|---|---|---|
| 데이터 구조 | 고정 스키마 | 유연한 스키마 |
| 관계 | JOIN | 문서 내 중첩 |
| 확장 | 수직 | 수평 |
| 트랜잭션 | 강력 | 제한적 |
| 사용 사례 | 금융, 쇼핑몰 | SNS, 실시간 앱 |
4. SQL이란
Structured Query Language — RDBMS를 조작하는 표준 언어. 거의 모든 RDBMS에서 동일하게 동작합니다.
sql
SELECT name, email FROM users WHERE id = 1;
INSERT INTO users (name, email) VALUES ('김철수', 'kim@example.com');
UPDATE users SET email = 'new@example.com' WHERE id = 1;
DELETE FROM users WHERE id = 1;5. SQLite
파일 하나가 곧 데이터베이스. 서버 설치 불필요, 가볍고 빠름.
text
my-project/
├── app.js
├── database.db ← 이 파일이 전체 DB
└── package.json- 모바일 앱 로컬 DB (iOS/Android 내장)
- 브라우저 로컬 저장소
- 소규모 웹 서비스, 학습용
6. DB Browser for SQLite
GUI로 SQLite 파일을 확인하고 쿼리를 실행하는 도구.
bash
# macOS
brew install --cask db-browser-for-sqlite
# Ubuntu
sudo apt-get install sqlitebrowser
# Windows: https://sqlitebrowser.org/dl/