SQL과 NoSQL이란?
SQL (관계형 데이터베이스)
- 데이터를 표(테이블) 형태로 저장
- 저장 전에 틀(스키마)을 미리 정해야 함
- 데이터 간의 관계를 표현하는 데 강함
- 대표 DB: MySQL, PostgreSQL, Oracle
NoSQL (비관계형 데이터베이스)
- 표 형식 없이 자유로운 구조로 저장
- 틀을 미리 안 정해도 됨 (유연함)
- 대량의 데이터를 빠르게 처리하는 데 강함
- 대표 DB: MongoDB, Redis, Cassandra
| SQL | NoSQL | |
| 데이터 형태 | 표 (행/열) | 문서, 키-값 등 |
| 스키마 | 고정 (미리 설계) | 유연 (자유롭게 변경) |
| 확장 | 서버 업그레이드 | 서버 추가 |
| 트랜잭션 | 강력 (ACID) | 상대적으로 약함 |
| 적합한 데이터 | 정형 데이터 | 비정형 데이터 |
데이터 저장 방식 예시
SQL
표 형태로 저장, 모든 행이 같은 컬럼을 가져야 한다.
| id | 이름 | 나이 |
| 1 | 슬기 | 20 |
| 2 | 짱구 | 5 |
✅ 구조가 일정하고 명확함
❌ “영희”에게만 주소를 추가하고 싶어도 모든 행에 주소 칸을 만들어야 함
NoSQL
자유로운 형태로 저장 (문서형 예시), 각 데이터마다 다른 항목을 가져도 된다.
{ "이름": "철수", "나이": 25 }
{ "이름": "영희", "나이": 30, "취미": ["독서", "게임"], "주소": "서울" }
✅ 항목이 달라도 저장 가능, 구조 변경이 자유로움
❌ 데이터 일관성 관리가 어려울 수 있음
비유하자면 SQL은 모든 학생이 똑같은 칸을 채워야하는 학생 출석부 느낌이고, NoSQL은 사람마다 적고 싶은 것을 자유롭게 적는 메모장 느낌이다.
사용하는 곳
그렇다면 언제 사용하는 것이 적합할까?
1. SQL이 적합한 경우
- 은행, 결제 시스템 → 정확성과 일관성이 중요할 때
- 쇼핑몰 주문/재고 관리 → 데이터 간 관계가 복잡할 때
- 데이터 구조가 잘 안 바뀔 때
2. NoSQL이 적합한 경우
- 인스타그램, 트위터 → 게시물마다 데이터 구조가 다를 때
- 실시간 채팅, 게임 → 대규모 트래픽을 빠르게 처리할 때
- 서비스 초기 개발 → 구조가 자주 바뀔 때
NoSQL의 4가지 유형
| 유형 | 대표 DB | 특징 |
| 문서형 | MongoDB, CouchDB | JSON 형태로 저장 |
| 키-값형 | Redis, DynamoDB | 빠른 단순 조회 |
| 컬럼형 | Cassandra, HBase | 대용량 분석 |
| 그래프형 | Neo4j | 관계 네트워크 표현 |
'💻 STUDY > CS' 카테고리의 다른 글
| HTTP vs HTTPS (0) | 2026.04.29 |
|---|---|
| JWT란? (0) | 2026.01.23 |
| 코테 필수 암기 알고리즘 (0) | 2026.01.15 |