서론
이번 글에서는 NoSQL(Not Only SQL, 비-관계형 데이터베이스)인 Firebase와 MongDB에 대해 정리해보려한다. 이번 포스팅에서 각 솔루션 별로 갖고있는 개념, 장점에 대해 알아보고 언제 어느 상황때 무엇을 써야하는지에 대해서 알아보자.
Firebase ? MongoDB ?
Firebase와 MongoDB는 모두 애플리케이션 개발자를 위한 강력하고 확장 가능한 최신 데이터베이스 플랫폼이다. 요즘 클라우드가 개발바닥을 지배하게되면서 급격히 부상했다.
두 엔진 모두 유사한 JSON과 문서 데이터 모델 및 스키마를 가진 사후 관계형 데이터베이스이다. 둘 다 애플리케이션 개발과 수평적 확장성을 쉽게 구축하기 위해 사용한다. 이 두 엔진은 결국엔 문서라는 객체를 엔터티로 사용한다.
뒤에서 사용 차이점에 대해 더 얘기하겠지만 MongoDB는 데이터 검색을 위해 쿼리 언어를 허용하지만, Firestore는 이를 위한 자체 메서드와 API를 호출하여 사용하는 방식이다.
Firebase
Firebase에는 실시간 데이터베이스(RealTime Database)와 Cloud Firestore라는 두 가지 데이터 저장소가 포함되어있으며, 각각은 애플리케이션 개발에 있어 서로 다른 부분에 최적화 되어있다.
여기서 말하는 실시간 데이터베이스(RealTime Database)는 데이터의 신속한 수집 및 처리를 위해 설계된 게시/구독 시스템에 가깝지만 Cloud Firestore는 장기 데이터 저장 및 검색을 위해 설계되었다.
Cloud Firestore는 비동기 처리를 위해 설계된 SQL과 유사한 쿼리 구문을 사용하여 참조를 기반으로 데이터를 검색하기 위한 프로그래밍 방식 인터페이스를 제공한다.
이 Firebase는 모바일 애플리케이션 개발을 위해 명시적으로 설계된 플랫폼이며 전체 사용자 인터페이스와 온보딩 흐름이 해당 설계를 중심으로 구축되었다.
그렇기에 Firebase는 데이터베이스인 동시에 호스팅 인증, 데이터 기반 트리거 및 분석을 포함하는 모바일 앱 개발자를 위해 특별히 설계된 애플리케이션 개발 플랫폼이다.
따라서 Firebase에는 모바일 애플리케이션을 위한 더 많은 기능들이 있는 반면 MongoDB는 범용 데이터 개발을 위해 구축되었으며 더 많은 버튼과 핸들러들이 있다.
추가로 Firestore는 오프라인 지원을 해준다.
여기서 말하는 오프라인 지원은 개발자가 오프라인 지원을 활성화하여 데이터를 로컬에 저장한 다음 연결이 다시 돌아올 때마다 클라우드와 동기화할 수 있다는 장점이 있다.
MongoDB
MongoDB는 고성능 및 동급 최고의 보안으로 알려진 보다 강력한 문서 데이터베이스이며, Firebase에 비해 몇 가지 장점들이 있다.
예를들어 MongoDB는 온프레미스 또는 클라우드(MongDB Atlas, 자체 관리형 클라우드)에서 운영할 수 있는 반면 Firebase는 순전히 클라우드 데이터베이스 서비스이다.
MongoDB 쿼리언어(MQL)는이러한 두 데이터 저장소의 중심에 있는 JSON과 유사한 문서 구조에 대한 고급 쿼리 및 업데이트를 수행하기 위해 처음부터 설계되었다.
쿼리언어(MQL)은 MongoDB 문서 및 API와 동일한 JSON 구문을 사용하며 매우 강력하고 복잡한 쿼리를 손으로 또는 프로그래밍 방식으로 쉽게 조합할 수 있다.
결론. 둘 중 뭘 써야하나?
위에서 각 개념과 특징에 대해 주저리 주저리 떠들어서 정리가 안될 수 있어 필자 기준에서 중요하다 생각하는 부분만 요약을 하자면 다음과 같다.
이 두 데이터베이스 모두 강력한 성능을 제공한다. 그렇지만 보통 규모가 크고 입맛에 맞게 설계를 하여 쓸 수 있는 곳은 MongoDB를 선호하며, 규모가 작고 개발자가 최소한의 노력으로 빠른 시일내에 NoSQL을 사용하여 구축하고 싶을 때 보통 Firebase를 사용한다고 한다. 이 이유는 MongoDB는 쿼리(MQL)를 지원하고 Firebase는 API 형식이기때문에 제한적인 부분이 있을 수 있기 때문이다.
정리
Firebase는 모바일 앱 개발을 하기위해 초기 설계되었으며, 충돌 분석, 성능 및 푸쉬 알림을 통해 프로젝트 초기부터 설정된 단일 지역에서 모바일 개발을 위한 빠른 생태계를 제공하는데 중점을 두고있다
MongoDB는 모든 생태계에서 사용할 수 있으며 비지니스 분석 및 구조화된 쿼리를 이용하여 보다 더 좋은 성능을 낼 수 있다. 대신 인프라 설계가 필요하고 어느정도 진입장벽이 있다는 특징이 있다.
참고 사이트
https://www.fullstacklabs.co/blog/difference-between-mongodb-firestore-when-you-should-use-each
댓글