반응형
NoSQL 데이터베이스, MongoDB
MongoDB는 현대 애플리케이션에서 많이 사용하는 NoSQL 데이터베이스입니다. 관계형 데이터베이스(RDBMS)와는 다르게 스키마가 고정되지 않고 유연하며, 문서(Document) 기반 구조를 가지고 있어 개발과 확장에 큰 장점이 있습니다.

1. MongoDB의 기본 개념
■ NoSQL이란?
- Not Only SQL의 줄임말입니다.
- 전통적인 관계형 데이터베이스처럼 정해진 테이블 구조를 따르지 않고, 다양한 형식의 데이터를 저장할 수 있는 데이터베이스입니다.
- 유연한 데이터 구조, 수평적 확장(Sharding), 고속 처리가 장점입니다.
■ MongoDB의 구조
- MongoDB는 데이터를 JSON 형태와 유사한 BSON(Binary JSON) 형식으로 저장합니다.
- 주요 구성 요소:
- 데이터베이스(Database): 여러 컬렉션(테이블)을 담는 단위
- 컬렉션(Collection): 문서(Document)의 집합. 관계형 DB의 테이블과 유사
- 문서(Document): 하나의 레코드에 해당하는 단위. JSON처럼 키-값 쌍으로 구성됨
예시:
{
"name": "홍길동",
"age": 70,
"hobby": ["자전거 타기", "클래식 음악 감상"],
"isActive": true
}
2. MongoDB의 특징
| 스키마 없음(Schema-less) | 문서마다 구조가 달라도 저장 가능 |
| 수평적 확장 | 서버 여러 대로 데이터를 분산 저장 가능 |
| 빠른 속도 | 인덱스, 캐시 기능으로 대용량 데이터 처리에 강함 |
| 복제와 고가용성 | 복제본(Replica Set) 기능으로 장애 대응 |
| 유연한 쿼리 | JSON 스타일의 쿼리 사용으로 가독성 높음 |
3. MongoDB 활용 분야
- 빅데이터 분석
- 실시간 로그 저장
- 모바일 앱 백엔드
- IoT 데이터 수집
- 컨텐츠 관리 시스템 (CMS)
- 전자상거래(쇼핑몰)의 상품 정보 저장
4. MongoDB 기본 명령어 예시
use myDatabase // 데이터베이스 선택 또는 생성
db.createCollection("users") // 컬렉션 생성
db.users.insertOne({ name: "김철수", age: 68 }) // 문서 하나 추가
db.users.find() // 모든 문서 조회
db.users.find({ age: { $gt: 65 } }) // 나이 65세 초과 문서 조회
db.users.updateOne({ name: "김철수" }, { $set: { age: 69 } }) // 문서 수정
db.users.deleteOne({ name: "김철수" }) // 문서 삭제
5. MongoDB 설치 및 사용 환경
- 로컬 PC(Windows, macOS, Linux) 또는 클라우드(MongoDB Atlas)에서 사용 가능
- MongoDB Compass(그래픽 툴)를 이용하면 GUI 환경에서 쉽게 데이터 조회 및 관리 가능
- Node.js, Python, Java 등 다양한 언어와 연동 가능

6. 장단점 정리
| 장점 | 단점 |
| 스키마 유연성 | 데이터 무결성 보장이 어렵고, 잘못된 구조가 저장될 수 있음 |
| 빠른 읽기/쓰기 속도 | 복잡한 조인 연산에 취약 |
| 수평 확장이 용이 | 트랜잭션 기능이 제한적 (최근에는 개선됨) |
| 다양한 언어 지원 | 사용자가 직접 데이터 구조를 설계해야 함 |
MongoDB는 특히 빠르게 변화하는 데이터 구조와 많은 트래픽을 처리해야 하는 환경에서 효과적으로 사용할 수 있는 데이터베이스입니다. 정형 데이터보다는 반정형 또는 비정형 데이터를 다루는 프로젝트에 적합합니다.
반응형
'도서로 공부하는 프로그래밍 > 코딩 자율학습' 카테고리의 다른 글
| [VScode] VSCode 한글 언어팩 설치 (2) | 2025.05.17 |
|---|---|
| VSCode 설치 (2) | 2025.05.16 |
| 클린 아키텍처(Clean Architecture) (2) | 2025.04.08 |
| 도커(Docker)는 컨테이너 기반 플랫폼 (2) | 2025.04.07 |
| Python IDLE (Integrated Development and Learning Environment) 특징과 사용법 (0) | 2025.02.10 |