DataBase/MongoDB

MongoDB란?

누구세연 2024. 6. 16. 16:54

MongoDB 란?

MongoDB는 NoSQL 데이터베이스 중 하나로 문서 지향(Document-Oriented) 데이터베이스입니다.

데이터를 JSON과 유사한 BSON(Binary JSON) 형식으로 저장합니다.

MongoDB는 유연한 스키마 설계와 수평적 확장이 용이한 특성 덕분에 대규모 데이터 처리와 복잡한 데이터 구조를 다루기 적합합니다.

 

 

MongoDB 주요 용어

문서(Document)

  • MongoDB에서 데이터는 BSON 형식의 문서로 저장됩니다.
  • 각 문서는 필드와 값의 쌍으로 이루어지며, 값은 다른 문서, 배열, 기본 데이터 타입 등을 포함할 수 있습니다.
  • JSON과 유사하지만, BSON은 바이너리 형식으로 저장되어 더 빠른 접근과 더 많은 데이터 타입을 지원합니다.

컬렉션(Collection)

  • 컬렉션은 여러 문서의 집합으로, MySQL의 테이블에 해당합니다.
  • 같은 컬렉션의 문서들은 공통적인 특성을 공유하지만, 반드시 동일한 구조를 가질 필요는 없습니다.

데이터베이스(Database)

  • 여러 컬렉션을 포함하는 최상위 컨테이너입니다.
  • MongoDB 서버는 여러 개의 데이터베이스를 관리할 수 있습니다.

스키마리스(Schema-less)

  • MongoDB는 스키마리스 데이터베이스로, 문서 간의 구조가 고정되지 않아 유연한 데이터 모델링이 가능합니다.

인덱스(Index)

  • MongoDB는 인덱스를 사용하여 특정 필드 또는 필드의 조합에 대해 빠른 검색을 지원합니다.
  • 기본적으로 _id 필드에 대해 기본 인덱스가 생성됩니다.

레플리케이션(Replication)

  • 데이터를 여러 서버에 복제하여 가용성과 내결함성을 높입니다.
  • 레플리카 세트는 하나의 기본(primary) 노드와 여러 개의 보조(secondary) 노드로 구성됩니다.

샤딩(Sharding)

  • 데이터를 여러 서버에 분산하여 대규모 데이터를 효율적으로 저장하고 처리할 수 있게 합니다.
  • 샤드 키를 기준으로 데이터를 분할합니다.

 

MongoDB vs MySQL 비교

데이터 모델

  • MongoDB : 문서 지향 데이터베이스로, 유연한 스키마를 지원합니다.
    데이터는 JSON/BSON 형식으로 저장되며, 각 문서는 다른 구조를 가질 수 있습니다.
  • MySQL : 전통적인 관계형 데이터베이스로, 고정된 스키마를 갖추고 있습니다.
    테이블 간의 관계를 통해 데이터를 구성합니다.

스키마 유연성

  • MongoDB : 스키마리스 디자인을 채택하여 필드를 동적으로 추가하거나 제거할 수 있습니다.
  • MySQL : 데이터를 저장하기 전에 스키마를 정의하고, 스키마 변경 시 데이터베이스 구조를 수정해야 합니다.

확장성

  • MongoDB : 수평적 확장이 용이하며, 샤딩을 통해 데이터를 여러 서버에 분산하여 처리할 수 있습니다.
  • MySQL : 주로 수직적 확장을 통해 데이터베이스 서버의 선능을 향상시키는 방식을 사용합니다.

트랜잭션

  • MongoDB: 초기에는 트랜잭션 지원이 제한적이었으나, 최근에는 다중 문서 트랜잭션을 지원합니다.
  • MySQL: ACID 트랜잭션을 완벽하게 지원하여 데이터 무결성을 보장합니다.

인덱싱

  • MongoDB: 다양한 인덱스 타입을 지원하며, 복합 인덱스와 텍스트 검색 기능을 제공합니다.
  • MySQL: B-Tree 인덱스, 해시 인덱스, 풀텍스트 검색 기능을 지원하여 빠른 데이터 접근을 가능하게 합니다.

쿼리 언어

  • MongoDB: JavaScript 기반의 쿼리 언어를 사용하며, 풍부한 CRUD 작업과 집계 기능을 지원합니다.
  • MySQL: SQL(Structured Query Language)을 사용하여 데이터를 관리하고 쿼리 합니다.

사용 사례

  • MongoDB: 대규모 데이터 처리, 비정형 데이터 저장, 빠른 프로토타이핑, IoT 데이터, 로그 데이터 관리 등에 적합합니다.
  • MySQL: 전통적인 관계형 데이터베이스의 장점을 활용하여 트랜잭션 처리, ERP, CRM 시스템 등에 적합합니다.

MongoDB는 유연한 데이터 모델과 수평적 확장성을 통해 대규모 데이터 처리와 비정형 데이터 관리에 강점을 가집니다. 반면, MySQL은 ACID 트랜잭션과 정형 데이터 관리에서 뛰어나며, 전통적인 데이터베이스 요구 사항을 충족시킵니다. 프로젝트의 필요에 따라 데이터베이스를 선택하고 설계하는 것이 중요합니다.