본문 바로가기

개발/DB&SQL

[Firebase] 데이터베이스 비교 (Realtime vs Cloud Firestore)

반응형


최근에 Flutter 기반 1인 앱을 개발하면서 서버리스(Serverless)에 대해 알아보게 되었습니다. 보통은 서버를 직접 개발했기 때문에, 관련 플랫폼인 Firebase나 Supabase 등은 저의 관심 밖이었습니다. 하지만 혼자 개발을 하다보니 전체 영역을 다루는 것은 쉽지 않았습니다. 특히 Flutter의 빠른 개발을 특징으로, 프로토타입 단계를 목표할 때에는 서버를 직접 개발하는 것이 전략상 맞지 않음을 느꼈습니다.

뿐만 아니라 Firebase의 다양한 서비스(Analysis, 보안, Database 등)를 실습해보니, 놀랍고 편리한 기능이 정말 많았습니다. 

오늘은 Firebase에서 제공하는 2가지의 데이터베이스 솔루션에 대해서 알아보겠습니다.

Firebase project > build 탭에 위치한 Database 솔루션

[Realtime Database(실시간 데이터베이스)]
Firebase의 기존 데이터베이스로, 여러 클라이언트에서 실시간으로 상태를 동기화해야하는 모바일 앱을 위한 솔루션.
효율적이며, 지연 시간이 짧음

[Cloud Firestore Database]
Firebase의 최신 데이터베이스로서 실시간 데이터베이스를 바탕으로 더욱 직관적인 새로운 데이터 모델.
풍부하고, 빠른 쿼리와 원활한 확장성 제공

 

Realtime Database(실시간 데이터베이스)


1. 데이터 구조

JSON 트리 구조를 사용하여 데이터를 저장합니다. 

2. 쿼리 기능

기본적인 쿼리 기능만 제공하며, 복잡한 쿼리나 필터링이 어려운 경우가 많습니다.

3. 실시간 업데이트

- 실시간 데이터 동기화를 지원합니다. 따라서 필요할 때 마다 데이터에 접근할 필요가 없습니다. 하지만 Firestore 보다 성능, 확장성이 낮습니다.

4. 오프라인 지원

- 기본적인 오프라인 지원을 제공합니다. 따라서 오프라인 상태에선 APP 로컬에 저장하고 있다가 네트워크에 연결되면 로컬에 저장되었던 데이터를 동기화합니다. Firestore에 비해 기능이 제한적입니다.

5. 비용

- 데이터 전송량에 따라 요금이 부과됩니다.

Cloud Firestore


Realtime Database를 바탕으로 나온 모델이기 때문에 위에서 언급된 기능이 기본으로 제공됩니다.

1. 데이터 구조

문서와 컬렉션 구조를 가지고 있어, 데이터 모델링이 더 유연합니다. 각 문서는 키-값 쌍으로 이루어져 있으며, 서브컬렉션을 가질 수 있습니다. 또한 유연한 계층적 데이터 구조를 지원합니다.

2. 쿼리 기능

강력한 쿼리 기능을 제공하여 다양한 조건으로 데이터 필터링 및 정렬이 가능합니다.

3. 실시간 업데이트

- Realtime Database보다 높은 성능과 확장성으로 실시간 데이터 동기화를 지원합니다.

4. 오프라인 지원

- Realtime Database보다 다양한 기능으로 오프라인 기능을 지원하며, 데이터 자동 동기화가 가능합니다.

5. 비용

- 읽기, 쓰기, 저장 용량에 따라 요금이 부과되며, 유연한 가격 모델을 제공합니다.

 

정리


두 데이터베이스의 공통점도 있습니다. NoSQL 데이터베이스이며, 기능 모두 쿼리를 통해 데이터를 정렬하고 필터링하여 사용자에게 제공합니다. 다른 비교되는 차이점은 아래와 같습니다.

 

서비스 선택시 고려사항


[Realtime Database]

  • 기본적인 데이터 동기화
  • 적은 양의 데이터의 빈번한 변경
  • 간단한 Json 트리

[Cloud Firestore]

  • 고급 쿼리, 정렬, 트랜잭션 등 복잡한 기능
  • 대용량 데이터
  • 구조화된 컬렉션
  • 단일 데이터베이스
반응형