Firebase 🔥

Realtime Database VS FireStore 선택 기준은?

성실농장주 2024. 3. 19. 20:32

프로젝트 시작을 하기 전 클라우드 서버의 데이터에이스가 필요하였고, firebase에서 제공하는 데이터베이스 realtime database와 firestore 둘 중에서 어떤 데이터베이스를 사용해야할지 고민하였고 둘의 차이점을 궁금해하기 시작하였습니다. 

 

오늘은 이 둘의 차이점을 알아보는 시간을 가져보도록하겠습니다.


Realtime Databse

realtime database의 콘솔

데이터 모델

realtime database는 데이터를 하나의 큰 "JSON" 트리로 저장합니다.

데이터의 구조가 복잡하지 않아 데이터의 저장이 쉽고 처리가 빠르다는 장점이 있습니다. 

 

쿼리

realtime database 같은 경우 쿼리의 기능이 제한적입니다.

기본적으로 정렬과 필터링 기능을 제공하지만 이 두 기능을 동시에 사용할 수는 없습니다.

 

그리고 데이터 세트가 커지게 되면 특정 쿼리의 성능이 저하가 됩니다..

->  데이터의 양이 큰 프로젝트에는 접합하지 않다는 뜻

 

입력 데이터 유형

realtime database에서 사용 가능한 데이터 타입은

  • NSString
  • NSNumber
  • NSDictionary
  • NSArray

realtime database 콘솔 내에서 직접 값을 입력할 수 있습니다. 위 이미지는 값을 추가할때 데이터 타입을 선택하는 과정입니다.

위에서는 Boolean, Object도 처리할 수 있다는 하는데..

 

Boolean 같은 경우 "NSNumber(value: true)"로 저장하고 Boolean 타입으로 처리할 수 있습니다. 

 

Object 타입 같은 경우 NSDictionary 타입을 사용해서 Object 타입의 데이터를 생성할 수 있습니다.


FireStore 

firestore의 콘솔

데이터 모델

firestore 같은 경우 데이터를 NoSQL 데이터베이스에서 사용되는 데이터 모델 중 하나인 "문서 컬렉션"으로 저장합니다. 

문서 컬렉션 모델은 데이터를 문서라는 개별 단위로  저장을하고 문서들을 컬렉션으로 그룹화를 합니다.

 

컬렉션 하위에 문서가 있고 문서 하위에 컬렉션으로 데이터를 저장할 수 있는 것을 확인할 수 있습니다.

 

쿼리

firestore는 하나의 쿼리 문장 안에서 여러 조건을 결합하여 데이터를 필터링할 수 있고, 그 결과를 정렬할 수 있습니다. 

색인화 작업을 거쳤기 때문에 쿼리의 성능은 데이터 세트(컬렉션 내 모든 문서들)가 아닌 결과 세트(쿼리를 통해 참조한 문서)에 비례합니다.

-> 데이터의 양이 큰 프로젝트에 접합하다는 뜻

 

입력 데이터 유형

 

firestore 에서 사용 가능한 데이터 타입은

  • Boolean
  • number
  • timestamp
  • null
  • array
  • object(map)

주요 고려사항

데이터베이스의 역활

주로 데이터 동기화 목적 = realtime database

고급 쿼이, 정렬, 트랜잭션이 필요하다 = firestore

데이터 작업

GB 이하의 데이터가 자주 변경 = realtime database

수백 GB 내지 TB의 데이터가 변경되며, 훨씬 더 높은 빈도로 읽힙니다 = firestroe

데이터 모델

간단한 JSON 트리 = realtime database

문서 켈렌션 모델 = firestroe


 

https://firebase.google.com/docs/database/rtdb-vs-firestore?hl=ko

 

데이터베이스 선택: Cloud Firestore 또는 실시간 데이터베이스  |  Firebase Realtime Database

Google I/O 2023에서 Firebase의 주요 소식을 확인하세요. 자세히 알아보기 의견 보내기 데이터베이스 선택: Cloud Firestore 또는 실시간 데이터베이스 컬렉션을 사용해 정리하기 내 환경설정을 기준으로

firebase.google.com