본문 바로가기
도서로 공부하는 프로그래밍/코딩 자율학습

NoSQL 데이터베이스, MongoDB

by 열공노년 2025. 4. 22.
반응형

NoSQL 데이터베이스, MongoDB

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

MongoDB 설치 완료


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 등 다양한 언어와 연동 가능

MongoDB Compass


6. 장단점 정리

장점  단점
스키마 유연성 데이터 무결성 보장이 어렵고, 잘못된 구조가 저장될 수 있음
빠른 읽기/쓰기 속도 복잡한 조인 연산에 취약
수평 확장이 용이 트랜잭션 기능이 제한적 (최근에는 개선됨)
다양한 언어 지원 사용자가 직접 데이터 구조를 설계해야 함

MongoDB는 특히 빠르게 변화하는 데이터 구조와 많은 트래픽을 처리해야 하는 환경에서 효과적으로 사용할 수 있는 데이터베이스입니다. 정형 데이터보다는 반정형 또는 비정형 데이터를 다루는 프로젝트에 적합합니다.

반응형