본문 바로가기
  • 시 쓰는 개발자
1일 1개념정리 (24년 8월~)/데이터베이스

1일1개 (26) - 몽고DB

by poetDeveloper 2024. 9. 5.

1일 1개념정리 24.08.09.금 ~ 

 

큰 결정에 큰 동기가 따르지 않을 때도 있다. 하지만 큰 결심이 따라야 이뤄낼 수 있다.

무조건 무조건 1일 1개의 개념 정리하기 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!


#26. MongoDB

MongoDB는 유명한 NoSQL 기반 DBMS이다. Document 지향 구조인데, RDB처럼 행을 쓰는 게 아니고, *Collection과 *Document를 사용해서 데이터를 저장한다.

몽고DB는 주로 비정형 로그 데이터를 저장할 때 쓸 수 있고, 빠르게 변하는 데이터 구조나 빅데이터를 처리할 때 쓰이곤 한다.

 

Collection  (= Document가 모인 그룹 = 폴더)

  • 컬렉션은 전통적인 RDB에서 테이블에 해당하는 개념이다. 여러 문서가 모여 하나의 컬렉션을 이룬다.
  • 예를 들어, users라는 컬렉션이 있다고 가정하면, 이 컬렉션에는 여러 명의 사용자를 나타내는 문서들이 들어있다.

Document (= 폴더 내의 파일)

  • 문서는 db에서 하나의 행에 해당하는 개념이다.
  • MongoDB에서 문서는 JSON과 비슷한 BSON(Binary JSON) 형식으로 데이터를 저장한다.
  • 문서의 구조는 key-value 쌍으로 구성되어 있으며, 하나의 문서에는 여러 필드가 포함될 수 있다.
{
  "name": "홍길동",
  "age": 30,
  "email": "hong@example.com",
  "address": {
    "city": "서울",
    "street": "종로구"
  }
}

위 JSON 데이터가 하나의 문서이다.

 

몽고db의 특징은 다음과 같다.

 

1. 문서 지향

  • MongoDB는 데이터를 BSON 형식으로 저장하는데, 이것은 json 객체와 유사하여 필드와 값을 key-value 쌍으로 가지고 있다.
  • 하나의 컬렉션 안의 문서들은 서로 다른 구조를 가질 수 있어서 유연성이 높다.

2. schemaLess 구조

  • MongoDB는 스키마리스 db로, 정의된 스키마 없이 데이터를 저장할 수 있다. 따라서 동일한 컬렉션 내에서 다큐멘트마다 서로 다른 필드를 가질 수 있다. 이를 통해 유연한 데이터 모델링을 가능하며, 데이터 구조를 자주 변경해야 하는 상황에서 유용하다.

3. 수평 확장

  • MongoDB는 수평적 스케일링을 지원한다. 즉 데이터 양이 늘어나면  여러 물리적 db를 추가로 설치한다는 것이다. 이때 샤딩을 통해 데이터를 여러 서버(샤드)로 나눠 저장한다. 서버들은 서로 병렬로 동작한다.
  • 데이터가 여러 사드로 분산돼서 데이터 양이 늘어나면 새로운 샤드 추가하여 db 성능 유지한다.
  • 샤드를 놓으면 좋은 것이, 샤드끼리 독립적으로 데이터를 관리하므로 하나의 서버에 장애가 나도 다른 샤드는 정상 동작한다. (고가용성 High Availability)

4. 강력한 쿼리

  • MongoDB도 RDB처럼 복잡한 쿼리도 가능하다. 기본적인 CRUD뿐만 아니라, 정렬, 필터링 등도 제공한다.

5. 트랜잭션 지원

  • MongoDB 버전 4 이상은 ACID를 준수하는 트랜잭션을 지원하여 다중 document에서 원자성을 보장하는 작업이 가능하다.

 

MongoDB와 RDBMS의 차이

  RDB MongoDB
데이터 모델 테이블 기반 Document 기반
스키마 고정 유연
scaling (확장) 수직 수평