Database

MongoDB란?

Somaz 2023. 5. 20. 20:00
728x90
반응형

Overview

MongoDB에 대해서 알아보자.

https://digitalvarys.com/introduction-to-mongodb/

 


MongoDB란?

MongoDB는 NoSQL 데이터베이스 중 하나로, 기존의 관계형 데이터베이스보다 더 유연하게 데이터를 저장하고 관리할 수 있는 시스템이다.

MongoDB는 "humongous"에서 유래된 단어로, "거대한"이라는 의미를 가진다.

이는 MongoDB가 대규모 데이터를 처리하도록 설계되었음을 나타낸다.

 


 

 

그렇다면 NOSQL이란 무엇일까?

NoSQL이란 "Not Only SQL"의 약자로, 전통적인 관계형 데이터베이스(RDBMS)의 제한성을 극복하기 위해 만들어진 대안적인 데이터베이스이다.

NoSQL 데이터베이스는 일반적으로 수평 확장성이 뛰어나고, 빅 데이터를 저장하고 검색하는데 효과적인 방법을 제공한다.

 

NoSQL 데이터베이스는 크게 4가지 주요 유형으로 분류할 수 있다

 

Document-Oriented Database: MongoDB나 CouchDB와 같이 JSON, XML과 같은 형식의 문서를 저장한다. 이들 문서는 스키마가 없거나 유연한 스키마를 가지며, 복잡한 데이터를 저장하는 데 유용하다.

 

Key-Value Store: Redis, DynamoDB와 같이 간단한 키-값 쌍을 저장한다. 이러한 데이터베이스는 빠른 읽기/쓰기 작업에 적합하며, 캐싱 및 세션 관리와 같은 용도로 자주 사용된다.

 

Wide Column Store: Cassandra나 HBase와 같이 컬럼 패밀리라고 불리는 구조를 사용하여 데이터를 저장한다. 이들은 행마다 서로 다른 컬럼 세트를 가질 수 있으며, 매우 큰 데이터 세트를 효율적으로 처리하는 데 유용하다.

 

Graph Database: Neo4j, Amazon Neptune과 같이 그래프 구조를 사용하여 데이터를 저장한다. 이들은 노드와 엣지를 사용하여 데이터 간의 복잡한 관계를 표현하며, 소셜 네트워크 분석, 추천 시스템 등에 적합하다.

 


 

MongoDB vs RDBMS

https://digitalvarys.com/introduction-to-mongodb/


MongoDB 주요 특징

MongoDB의 주요특징은 어떻게 될까?

 

Document Database: MongoDB는 문서 지향 데이터베이스로, JSON 스타일의 도큐먼트를 사용하여 데이터를 저장한다. 각 문서는 고유한 ID와 함께 key-value 쌍의 집합으로 구성된다.

 

Schema-less: MongoDB는 스키마가 없는 데이터베이스이다. 즉, 한 컬렉션 내의 문서는 서로 다른 필드를 가질 수 있다. 데이터 구조가 빈번하게 바뀌는 환경에서 유용하다.

 

Horizontal Scalability: MongoDB는 샤딩을 이용하여 수평적으로 확장할 수 있다. 샤딩은 데이터를 여러 서버에 분산시키는 방법으로, 대규모 데이터를 처리하는 데에 매우 효과적이다.

 

Support for Complex Queries: MongoDB는 복잡한 쿼리를 지원하며, SQL과 유사한 쿼리 언어를 제공한다. 또한, 인덱싱, 전체 텍스트 검색, 그래프 처리 등 다양한 기능을 지원한다.

 

Consistency: MongoDB는 기본적으로 일관성을 지향한다. 즉, 쓰기 작업은 기본적으로 "Primary" 노드에서 발생하며, "Secondary" 노드들은 "Primary" 노드를 계속 복제한다.

 

High Availability: MongoDB는 Replicat set을 사용하여 고가용성을 제공한다. Replicat set는 두 개 이상의 노드로 구성되며, 하나의 노드가 실패할 경우 다른 노드가 자동으로 대체한다.

 


 

그렇다면 샤딩(Sharding)이란 무엇일까?

데이터베이스 샤딩(sharding)은 데이터베이스의 확장성 문제를 해결하기 위한 방법 중 하나로, 큰 데이터베이스를 여러 개의 작은 부분(샤드)으로 분할하는 것을 의미한다.

각 샤드는 독립적인 데이터베이스이며, 각각의 데이터베이스가 독립적인 하드웨어에서 실행될 수 있다.

 

이렇게 하면 쿼리 성능이 향상되고, 데이터베이스의 크기를 증가시키는 것이 용이하다.

 

MongoDB vs RDBMS (Sharding)

MongoDB와 RDBMS의 샤딩(sharding) 모두 데이터를 여러 노드에 분산시키는데 목적을 두고 있지만,

각기 다른 방식으로 이를 처리한다.

 

Sharding Mechanism : RDBMS에서는 일반적으로 수동으로 샤딩을 설정하고 관리해야 한다. 개발자가 샤드 키를 선택하고, 데이터를 적절한 샤드에 할당하며, 샤드 간의 균형을 유지하기 위한 로직을 직접 구현해야 함을 의미한다.

반면에 MongoDB에서는 이러한 프로세스를 자동화한다. 샤드 키를 선택하면, MongoDB는 데이터를 자동으로 분산시키고, 새로운 샤드를 추가하거나 데이터의 양이 늘어남에 따라 샤드 간의 균형을 자동으로 유지한다.

 

Data Model Flexibility: MongoDB는 유연한 데이터 모델을 사용하므로, 특정 샤드 키에 묶이지 않고 데이터를 자유롭게 구성할 수 있다. 반면에 RDBMS는 고정된 스키마를 사용하므로, 샤딩을 적용하면 데이터 모델에 제약이 생길 수 있다.

 

Cross-Shard Transactions: MongoDB 4.2 버전부터는 여러 샤드에 걸친 트랜잭션을 지원한다. 이는 분산 데이터베이스에서 일관성을 유지하는 데 도움이 된다. RDBMS에서도 여러 샤드에 걸친 트랜잭션을 구현할 수 있지만, 이는 종종 추가적인 복잡성을 초래하며, 전체 시스템의 성능에 부정적인 영향을 미칠 수 있다.

 

Fault Tolerance and Replication: MongoDB는 내장된 Replica 기능과 함께 샤딩을 지원하므로, 높은 가용성과 데이터의 내구성을 보장한다. 각 샤드는 독립적인 Replica set을 가질 수 있으며, 이는 단일 샤드의 장애가 전체 시스템에 영향을 미치는 것을 방지한다. 반면에 RDBMS에서는 이러한 기능을 지원하지 않거나, 별도의 솔루션을 사용해야 할 수 있다.

https://digitalvarys.com/introduction-to-mongodb/

 


Reference

https://github.com/mongodb

 

https://www.mongodb.com/docs/manual/

 

https://digitalvarys.com/introduction-to-mongodb/

728x90
반응형

'Database' 카테고리의 다른 글

DB 샤딩(Sharding): 개념 및 동작방식  (0) 2024.05.10
PostgreSQL 개념 및 특징(with MySQL)  (0) 2024.03.29
DB 스키마란?(Schema)  (0) 2023.04.21
Mariadb란? (사용법)  (0) 2022.01.14