MongoDB

paxkk·2023년 2월 13일

MongoDB는 JSON 형식으로 데이터를 저장, 검색, 관리할 수 있는 NoSQL 문서 데이터베이스이다.

MongoDB는 많은 양의 비구조적 데이터를 쉽게 처리할 수 있고 행과 열로 이루어진 관계형 데이터베이스와는 달리 JSON과 같은 문서 단위로 저장된다. 각 문서마다 저장되는 필드의 수와 타입이 서로 다를 수 있기때문에 고정된 스키마를 사용하지 않아도 되고, 데이터 구조에 변화가 필요하더라도
데이터베이스를 새로 구축하지 않아도 되는 편의성이 있다.

필드를 추가하거나 기존 필드의 타입을 변경하는 경우 관계형 데이터베이스는 스키마를 수정하고 데이터를 다시 담아야하지만 MongoDB에서는 기존 데이터를 유지하면서 타입 변경이 일어나더라도 기존 데이터에 영향을 미치지 않기때문에 데이터 구조 변화에 적응할 수 있는 확장성이 있다.

또한, MongoDB는 분산 데이터를 처리할 수 있는 장점이 있다. 자동적으로 샤딩복제를 지원하기 때문에 다중 복제된 데이터를 관리함으로써 고가용성 및 재해 복구를 제공한다.
(고가용성이란 시스템이 계속해서 사용 가능하고 안정적이며, 다운 타임이 적은 것을 의미한다.)

샤딩 - 데이터베이스를 여러 개의 서버에 분산 저장하여 관리한다는 것을 의미한다. 데이터베이스에 많은 양의 데이터가 쌓이게 되면 처리 속도가 느려 질 수 있는데 이 때 샤딩(sharding)을 사용하여 데이터베이스를 여러 개의 서버에 분산 저장하면, 각 서버가 데이터를 처리하기 때문에 처리 속도를 향상시킬 수 있다.

복제 - 데이터베이스를 여러 개의 서버에 동시 저장하여 데이터의 보안 및 가용성을 높일 수 있다. 데이터 베이스에 저장된 데이터가 중요한 데이터라면, 하나의 서버에 저장된 데이터만으로는 보안 및 가용성을 보장하기 어렵다. 이 때 복제를 사용하여 여러 개의 데이터 베이스에 저장하면 고가용성과 재해 복구 능력을 향상한다. 데이터 베이스가 고장나면 다른 복제된 데이터베이스로부터 데이터를 가져오기 때문에 서비스 중단이 최소화된다.

Mongoose

Mongoose는 MongoDB와 Node.js를 연결해주는 역할을 하는 ORM(Objcet Document Mapping) 라이브러리다.

MongoDB에 저장된 데이터와 Node.js의 객체 사이에 매핑을 제공하여 Node.js 애플리케이션에서 MongoDB를 더 편리하게 사용할 수 있다.

Mongoose에서는 MongoDB의 스키마와 유사한 개념의 모델을 정의할 수 있다.

profile
꾸준하게 성장하자

0개의 댓글