| 항목 | SQL | NoSQL |
|---|---|---|
| 데이터 구조 | 테이블 기반 (행과 열) | 문서(Document), 키-값(Key-Value), 그래프(Graph), 열(Column) 기반 |
| 스키마 | 고정된 스키마 사용 (스키마 정의 필요) | 스키마 없음 (동적 데이터 구조) |
| 데이터 타입 | 정형 데이터 (Structured Data) | 비정형 데이터 및 반정형 데이터 지원 |
| 확장성 | 수직 확장(서버 업그레이드) | 수평 확장(서버 추가) |
| 트랜잭션 | ACID 트랜잭션 지원 | 대부분 CAP 이론 기반(Consistency, Availability, Partition Tolerance 중 선택) |
| 사용 사례 | 금융, ERP, 전자상거래 등 정형 데이터를 다루는 애플리케이션 | 소셜 네트워크, IoT, 로그 분석 등 비정형 데이터를 다루는 애플리케이션 |
| 예시 | DBMS MySQL, PostgreSQL, Oracle, Microsoft SQL Server | Firebase Firestore, MongoDB, Cassandra, Redis |
SQL은 정형 데이터를 관리하고 관계를 중시하는 반면, NoSQL은 비정형 데이터를 유연하게 처리하고 확장성이 뛰어남.
필요 조건 > 추천 DBMS
관계형 데이터 관리 필요 > MySQL, PostgreSQL
실시간 데이터 동기화 필요 > Firebase Firestore, Realtime Database
대규모 비정형 데이터 관리 > MongoDB, Cassandra
캐싱 및 빠른 데이터 액세스 필요 > Redis
모바일/웹 앱 개발에 최적화 필요 > Firebase Firestore
미디어 데이터 > Firebase Storage, Amazon S3, MongoDB (GridFS)
빅데이터, 데이터 웨어하우스 > Hadoop + HDFS, Google BigQuery, Amazon Redshift