1. NoSQL 개념
database 종류
RDBMS (SQL, (관계형 데이터베이스):
- 표(Table) 형태처럼 데이터 구조가 명확하고 변경될 일이 적을 때
- 정해진 구조(스키마) 필수
- 금융 시스템처럼 데이터의 일관성과 정확성(ACID 트랜잭션)이 절대적으로 중요할 때
- 복잡한 관계 설정과 조인(Join) 연산이 빈번할 때
NoSQL(Not Only SQL)
- 데이터의 형태가 정해지지 않아서 다양하며 대량 데이터, 빠른 처리 필요
- 스키마 없음 또는 유연함
- 막대한 양의 데이터를 읽고 써야 해서 빠른 성능이 요구될 때 (빅데이터, 실시간 스트리밍)
- 서비스 규모가 빠르게 커져서 서버 분산 확장이 필수적일 때
- NoSQL 종류: Document DB (MongoDB) - JSON / Key-Value Store: Redis / DynamoDB / Wide-column DB: Cassandra, Graph DB (Neo4j)
2. MongoDB
- MongoDB는 데이터베이스 자체(서버), PyMongo는 파이썬에서 MongoDB에 명령 보내는 라이브러리
- 따라서 PyMongo 없으면 파이썬에서 MongoDB 못 건드림
- 전통적인 SQL 데이터베이스와 달리, 데이터를 JSON 형식과 유사한 BSON(Binary JSON) 형태로 저장하는 NoSQL 데이터베이스
- 구조: 데이터베이스(Database) > 컬렉션(Collection) > 문서(Document)
➡️ Document: SQL의 '행(Row)' { key: value }
➡️ Collection: SQL의 '테이블(Table)', 여러 Document가 모여 있음

2-1.) BSON / JSON
| 구분 | JSON | BSON |
|---|
| 형태 | 텍스트 | 바이너리 |
| 가독성 | 사람이 읽기 좋음 | 사람이 읽기 어려움 |
| 속도 | 느림(파싱 필요) | 빠름 |
| 데이터 타입 | 제한적 | 다양함 |
- MongoDB는 JSON처럼 보이지만
→ 실제로는 BSON으로 저장됨
→ 그래서 SQL보다 데이터 타입이 더 유연함하다는 것만은 기억하자!