본문 바로가기
IT

[NoSQL] MongoDB란? (개념, 특징, 장단점, 면접대비)

by 유나니나노 2024. 4. 2.
반응형

 

NoSQL

NoSQL(Not Only SQL)은 관계형 데이터베이스 시스템(RDBMS)의 전통적인 테이블 기반 구조 대신, 다양한 데이터 저장 기술을 사용하는 데이터베이스 관리 시스템의 총칭입니다. 기존의 SQL(Structured Query Language)을 사용하는 관계형 데이터베이스와 달리, NoSQL 데이터베이스는 비정형 데이터를 저장하고 관리하기 위해 설계되었습니다.

 

특징

  • 스키마가 없거나 유연한 스키마: NoSQL 데이터베이스는 미리 정의된 스키마가 없거나 유연한 스키마를 가지고 있어, 다양한 형태의 데이터를 저장할 수 있습니다.
  • 확장성: 대부분의 NoSQL 데이터베이스는 수평적 확장성을 지원합니다. 즉, 데이터베이스의 용량을 늘리기 위해 더 많은 서버를 추가하는 것이 비교적 쉽습니다.
  • 고성능: 특정 유형의 작업에서는 관계형 데이터베이스보다 더 높은 성능을 제공합니다.
  • 다양한 데이터 모델 지원: 키-값 저장소, 문서 지향 데이터베이스, 와이드 컬럼 스토어, 그래프 데이터베이스 등 다양한 데이터 모델을 지원합니다.

 

MongoDB

MongoDB는 대표적인 NoSQL 데이터베이스 중 하나로, 문서 지향적 저장 방식을 사용합니다. JSON과 유사한 BSON(바이너리 형식의 JSON) 형식의 문서를 사용하여 데이터를 저장합니다.

 

 

특징

  • 문서 지향 저장: 데이터를 JSON과 유사한 형태로 저장합니다. 이는 데이터 구조를 더 직관적으로 만들고, 개발자가 응용 프로그램 코드에서 데이터를 쉽게 작업할 수 있게 합니다.
  • 스키마 없는 데이터 모델: MongoDB는 유연한 데이터 모델을 가지고 있어, 다양한 형태의 데이터를 저장할 수 있습니다.
  • 확장성: MongoDB는 샤딩을 통한 수평적 확장성을 지원합니다. 이를 통해 대규모 데이터 집합과 고성능 작업을 처리할 수 있습니다.
  • 고성능: 인덱싱, 샤딩, 복제 등의 기능을 통해 높은 성능을 지원합니다.
  • 복제 및 고가용성: MongoDB는 데이터의 복제를 지원하여 데이터의 안정성과 가용성을 높입니다.

 

장점

  • 유연한 스키마: MongoDB는 유연한 스키마를 가지고 있어, 다양한 형태의 데이터를 쉽게 저장하고 관리할 수 있습니다. 이로 인해 애플리케이션 개발 시 데이터 구조가 변경되어도 데이터베이스를 수정하지 않아도 되는 유연성을 제공합니다.
  • 문서 지향적: MongoDB는 JSON과 유사한 형식(BSON)으로 데이터를 저장합니다. 이는 데이터 구조를 더 직관적으로 만들고, 개발자가 애플리케이션 코드에서 데이터를 쉽게 작업할 수 있게 합니다.
  • 확장성: MongoDB는 샤딩을 통해 데이터베이스를 여러 서버에 분산시켜 저장할 수 있어, 수평적 확장이 용이합니다. 이를 통해 대규모 데이터 집합과 고성능 작업을 효율적으로 처리할 수 있습니다.
  • 고성능: MongoDB는 인덱싱, 복제, 샤딩 등의 기능을 통해 높은 성능을 제공합니다. 특히, 읽기 및 쓰기 작업이 많은 애플리케이션에 적합합니다.
  • 복제 및 고가용성: MongoDB는 데이터의 복제(Replication)을 지원하여 데이터의 안정성과 가용성을 높입니다. 복제 집합을 통해 데이터 손실 위험을 줄일 수 있습니다.

 

단점

  • 데이터 일관성: MongoDB는 최종 일관성 모델을 사용하기 때문에, 실시간으로 데이터 일관성을 유지하는 것이 어려울 수 있습니다. 이는 금융 거래와 같이 일관성이 매우 중요한 애플리케이션에서는 주의가 필요합니다.
  • 트랜잭션 처리: 초기의 MongoDB에서는 복잡한 트랜잭션 처리가 제한적이었습니다. 하지만 4.0 이상에서는 다중 문서 트랜잭션을 지원하기 시작했으나, 관계형 데이터베이스에 비해 트랜잭션 처리가 복잡할 수 있습니다.
  • 대용량 데이터 관리: MongoDB는 대용량 데이터를 효율적으로 관리하기 위한 샤딩 작업이 필요할 수 있습니다. 샤딩 설정과 관리는 복잡할 수 있고, 잘못 구성된 샤딩은 성능 저하를 초래할 수 있습니다.
  • 메모리 사용량: MongoDB는 높은 성능을 위해 인덱스와 자주 접근하는 데이터를 메모리에 캐싱합니다. 이로 인해 대량의 메모리를 사용할 수 있으며, 대용량 데이터를 다루는 시스템에서는 메모리 관리가 중요합니다.

 

 

MongoDB와 ElasticSearch 비교

1. 주 사용 용도

  • MongoDB는 범용 데이터베이스로 설계되었습니다. CRUD(Create, Read, Update, Delete) 작업을 위한 주 데이터 저장소로 사용되며, 애플리케이션의 주요 데이터를 저장, 관리하기 위한 목적으로 개발되었습니다.
  • Elasticsearch는 검색 엔진으로 시작했으며, 로그 분석, 실시간 데이터 분석, 풀 텍스트 검색 등을 위해 최적화되어 있습니다. 대량의 데이터에서 빠르게 검색하고 분석하는 데 특화되어 있습니다.

2. 데이터 처리 및 검색 능력

  • MongoDB는 문서 지향적 데이터베이스이며, 복잡한 쿼리, 집계 작업을 수행할 수 있는 기능을 제공합니다. 하지만, 풀 텍스트 검색은 가능하지만 Elasticsearch만큼 효율적이지는 않습니다.
  • Elasticsearch는 역인덱스 구조를 사용하여 데이터를 저장하므로, 풀 텍스트 검색에서 매우 뛰어난 성능을 보입니다. 또한, 복잡한 검색 쿼리와 실시간 데이터 분석에 최적화되어 있습니다.

3. 데이터 일관성과 가용성

  • MongoDB는 복제와 샤딩을 통해 데이터의 가용성과 확장성을 높이며, 강력한 데이터 일관성을 제공합니다.
  • Elasticsearch는 클러스터 내의 노드들 사이에 데이터를 자동으로 분산시키고 복제함으로써 높은 가용성을 제공합니다. 그러나, 실시간으로 데이터를 색인화하는 과정에서 일광성이 MongoDB보다는 약간 떨어질 수 있습니다.

4. 트랜잭션과 복잡한 데이터 관계

  • MongoDB는 ACID(Automicity, Consistency, Isolation, Durability) 트랜잭션을 지원합니다. 이는 복잡한 데이터 관계를 관리할 때 유용합니다.
  • Elasticsearch는 ACID 트랜잭션을 지원하지 않습니다. 따라서, 복잡한 데이터 관계와 일관성이 중요한 애플리케이션에는 MongoDB가 더 적합할 수 있습니다.

 

면접 대비

  • MongoDB에서 Elasticsearch로의 마이그레이션을 왜 선택했나요?
    • MongoDB는 문서 중심의 NoSQL 데이터베이스로 구조적 유연성을 제공하지만, 대용량 데이터와 검색 작업에 대한 최적화가 Elasticsearch보다 부족할 수 있습니다. Elasticsearch는 검색 및 분석에 특화된 엔진으로, 대용량 데이터를 신속하게 검색하고 분석하는데 뛰어난 성능을 제공합니다. 따라서 마이그레이션을 선택했습니다.
  • 마이그레이션 과정에서 어떤 어려움이 있었나요?
    • MongoDB와 Elasticsearch는 데이터 모델 및 쿼리 언어 등에서 차이가 있기 때문에, 데이터 구조를 매핑하고 쿼리를 조정하는 과정에서 어려움이 있었습니다. 
  • Elasticsearch로의 마이그레이션 후 어떤 성능 및 이점을 경험했나요?
    • 데이터 검색 및 집계 작업의 응답 시간을 단축시킬 수 있었습니다. Elasticsearch는 다양한 검색 쿼리를 지원하고, 전문 검색, 집계, 필터링 등의 기능을 제공하는데 프로젝트 특성에 맞는 데이터 검색을 수행하는데 이점이 있었습니다.

 

오늘은 NoSQL과 MongoDB에 대해서 알아보았습니다.

RDBMS중 Citus도 함께 알아두시면 좋습니다!

2024.03.26 - [IT] - [PostgreSQL] Citus란? (개념, 장단점, 면접 대비)

 

[PostgreSQL] Citus란? (개념, 장단점, 면접 대비)

CitusCitus는 PostgreSQL을 기반으로 한 분산 데이터베이스 확장입니다. 이는 PostgreSQL의 기능을 확장하여 대량의 데이터를 처리할 수 있게 해 주며, 높은 확장성과 병렬 처리 기능을 통해 빅 데이터 분

yuna-ninano.tistory.com

반응형