백엔드를 하면 데이터베이스(DB)를 사용하는 경우가 많습니다.
MySQL, MariaDB 등과 달리 MongoDB는 NoSQL로 대표되는 특징이 있는데, 이에 대해 알아보겠습니다.
MongoDB는 NoSQL로 분류되며 이것이 MySQL, MariaDB와 구별되는 큰 특징입니다.
그렇다면 NoSQL은 무엇일까요?
비관계형 데이터베이스 유형
(= 관계형 테이블과 다른 형식으로 데이터를 저장)
하지만 그렇다고 해서 관계형 데이터베이스를 사용하지 않는다는 뜻은 아니고,
여러 유형의 데이터베이스를 사용한다는 뜻입니다.
NoSQL은 Instagram, Facebook, X(Twitter) 등 다양한 서비스에서 사용됩니다.
NoSQL의 주요 특징은 다음과 같습니다.
NoSQL은 DocumentDB, Key-Value DB, Graph DB 등이 있고,
MongoDB는 DocumentDB에 속합니다.
그렇다면 MongoDB의 특징과 장단점은 어떤 것이 있을까요?
문서 지향 데이터베이스 : MongoDB는 JSON과 유사한 BSON(Binary JSON) 형식으로 문서를 저장합니다
유연한 스키마 (Schema-less) : 스키마(Schema)가 고정되어있지 않아 데이터 구조를 자유롭게 변경이 가능합니다.
확장성 : MongoDB의 샤딩(Sharding)을 통해 데이터를 여러 서버에 분산 저장하여 성능과 용량을 확장하기 편리합니다.
Replica Set 구축 : Replica Set를 구축하여 데이터베이스의 데이터를 여러 서버에 동기화하여 데이터의 안정성, 서버 다운 방지, 접근 가능한 데이터 상태 유지등의 장점이 있습니다
다양한 쿼리와 인덱스 지원 : MongoDB는 많은 쿼리와 인덱스를 지원하여 복잡한 쿼리를 효율적으로 처리 가능합니다
이런 장단점이 있는데 MySQL과 비교하면 어떤 상황에서 사용해야 될까요?
DBMS | MongoDB | MySQL |
---|---|---|
데이터 모델 | 문서형 (NoSQL) | 관계형 (RDMBS) |
데이터 저장 형식 | BSON(Binary JSON) 형식 | 테이블(Table) 형식 |
데이터 관계 | 비정형 데이터 및 복잡한 관계에서 유리 | 정형화된 데이터 관계 |
트랜잭션 | 제한적인 트랜잭션 지원 | 완전한 트랜잭션 지원 |
사용 사례 | 실시간 분석, 빅데이터 | 금융, ERP 시스템 |
상대적 특징 | 빠른 개발 주기, 대규모 데이터 처리 | 데이터 간 안정성, 데이터 무결성(완정성) |
구글에 MongoDB를 검색하면, "몽고db 쓰지 마세요"라고 있습니다.
이 글이 나온 원인은 무엇일까요?
블로터 기사에 따르면,
그 외에도
등이 있었습니다.
하지만 MongoDB가 업데이트되고 정착하며 많은 사람들에게 사랑받고 있습니다.
"스키마 제약으로 부터의 자유로움",
"데이터에 대한 유연함"
등이 기존 RDBMS의 단점을 상쇄시켰고,
저 역시도 이러한 이유로 MongoDB에 대해 관심을 가지게 되었습니다.
MongoDB는 개발자의 편의성을 위해 만들어진 DBMS로,
MySQL, MariaDB 등 RDBMS에 익숙한 사람들에게는 낯선 방식일 수 있습니다.
하지만 다양한 편의성으로 현재는 Stackoverflow 2023 기준 4위에 해당하는 인기를 자랑하고 있습니다.
다양한 방식을 익혀 적재적소에 사용할 줄 알면 좋은 개발자로서 한 발짝 다가서는 계기가 될 것 같습니다.