본문 바로가기

MongoDB란? (vs Supabase와의 비교)

codeConnection 2025. 2. 11.

MongoDB란?

데이터 베이스를 제공하는 서비스 중 하나.

https://www.mongodb.com/try/download/community

 

Try MongoDB Community Edition

Try MongoDB Community Edition on premise non-relational database including the Community Server and Community Kubernetes Operator for your next big project!

www.mongodb.com

 

주요 특징

  • NoSQL 방식, JSON 기반 데이터 베이스
  • 구글의 firebase와 비슷한 방식이며, 새로 입문하는 분들은 Supabase라는 SaaS 서비스를 이용하는 경우가 많을 것이고 본인도 그렇게 시작했기에 어느정도 새로 익혀야 한다. Supabase는 SQL 기반의 데이터 베이스를 제공한다.
  • SQL(관계형 데이터베이스) VS NoSQL(JSON 기반 데이터 베이스) 차이점 비교
    • SQL
      • 엑셀이라고 보면 됨.
      • 테이블로 데이터가 이루어져있고, 행과 열로 데이터를 정리함.
      • 엑셀에 정해진 제목행과 열이 있기 때문에 그에 맞는 정확한 데이터를 넣어야 함.
        • 예를 들어서 이름, 나이라는 제목행이 있다면 무조건 그에 맞는 text 데이터나 number 데이터가 들어가야 오류가 나지 않음. 엄격함.
      • 데이터 관리가 엄격하고 테이블 간 관계를 설명해야 하는 스키마 설정도 해야 하기 때문에 데이터 규모가 커지면 설정이 복잡하고, 중간에 데이터를 추가하거나 삭제하기 어려울 수 있음.
      • 다만 데이터가 엄격히 관리되기 때문에 이상한 데이터가 들어가서 오류를 발생시킬 확률이 적음.
    • NoSQL
      • 메모장(notepad)이라고 보면 됨.
      • NoSQL은 JSON 형태로 데이터를 저장하기 때문에 key-value 객체 형태로 값을 저장함.
      • 따라서 원한다면 SQL에서 제목행에 해당하는 key를 빼거나 추가해도 문제가 되지 않음.
        • 예를 들어서 아래와 같은 JSON 파일은 데이터 구조상 전혀 문제가 되지 않음. 다만 이것이 SQL이었다면 모두 같은 key-value가 있어야 하는 것임.
      • JSON 형태로 데이터가 저장되기 때문에 스키마 설정이 필요 없어 값의 추가와 삭제가 자유롭고 확장이 편함.
{
    "이름": "장원영",
    "나이": 21,
    "성별": "여성"
}

 

MongoDB vs Supabse와의 비교

SQL과 NoSQL의 차이는 위와 같다. 다만 위 내용만 보면 당연히 NoSQL을 써야 할 것 같지만 실제 서비스를 제공하는 업체인 MongoDB와 Supabase의 차이로 확장시켜 생각해보면 꼭 그렇지 않을 수 있다.

 

  • MongoDB
    • 무료 제공 용량 : 512mb
    • 무료 프로젝트 개수 제한 : 제한 없음
    • 인증/인가 기능 : 없음 (직접 만들어야 함.)
    • RESTful API : 없음 (직접 만들어야 함.)
    • 유리한 상황 : 대량의 데이터를 저장하고 조회할 때.
  • Supabase
    • 무료 제공 용량 : 500mb
    • 무료 프로젝트 개수 제한 : 프로젝트 2개
    • 인증/인가 기능 : 기본 제공 (Supabase auth)
    • RESTful API : 기본 제공 (Supabase 라이브러리 설치 시 매우 간편)
    • 유리한 상황 : 빠르게 웹앱의 MVP 기능을 올인원으로 개발하고 싶을 때.

 

몽고디비는 인증/인가 기능 등이 없고 순전히 데이터 베이스 저장 기능만 제공하기 때문에 웹 앱의 MVP 기능을 빠르게 개발하기 위해서는 자체 제공하는 Supabase가 더 유리할 수 있다.

몽고디비에서 인증/인가나 RESTful API 등을 사용하려면 Firebase Auth 등 외부 라이브러리를 사용해야 하고 초심자 입장에서는 이게 더 어렵게  느껴질 수 있다.

 

하지만 둘은 대규모 웹앱에서 상호보완적이므로 모두 익혀두는 것이 좋겠다.

 

다음 포스트부터는 실제로 무료플랜을 이용해서 익혀보도록 하겠다.

댓글