데이터베이스 선택: Cloud Firestore 또는 실시간 데이터베이스

Firebase는 클라이언트에서 액세스할 수 있는 두 가지 클라우드 기반 문서 데이터베이스를 제공합니다. 신규 고객은 Cloud Firestore로 시작하는 것이 좋습니다.

  • Cloud Firestore권장되는 엔터프라이즈급 JSON 호환 문서 데이터베이스로, 250,000명이 넘는 개발자가 신뢰하고 있습니다. 쿼리 가능성, 확장성 및 고가용성이 필요한 풍부한 데이터 모델을 갖춘 애플리케이션에 적합합니다. 또한 지연 시간이 짧은 클라이언트 동기화와 오프라인 데이터 액세스를 제공합니다.

  • Realtime Database는 기본 Firebase JSON 데이터베이스입니다. 간단한 조회와 확장성이 제한적이며 지연 시간이 짧은 동기화가 필요한 단순한 데이터 모델을 사용하는 애플리케이션에 적합합니다.

다른 중요한 고려사항은 무엇인가요?

이전의 주요 고려사항에 대해 생각해 본 후 데이터베이스를 선택할 준비가 되어 있을 수 있습니다. 아직 장단점을 고려 중이면 이 섹션에서 Cloud FirestoreRealtime Database의 기타 차이점을 확인하세요.

데이터 모델

Realtime DatabaseCloud Firestore는 모두 NoSQL 데이터베이스입니다.

Cloud Firestore [ 권장 ] Realtime Database
데이터를 문서 컬렉션으로 저장합니다.
  • JSON과 매우 비슷하게 단순한 데이터를 문서에 쉽게 저장합니다.
  • 문서에 있는 하위 컬렉션을 사용하여 복잡한 계층적 데이터를 대규모로 쉽게 정리할 수 있습니다.
  • 비정규화 및 데이터 평면화가 덜 필요합니다.

Cloud Firestore데이터 모델에 대해 자세히 알아보세요.

데이터를 하나의 큰 JSON 트리로 저장합니다.
  • 단순한 데이터를 매우 쉽게 저장합니다.
  • 복잡한 계층적 데이터를 대규모로 정리하기가 보다 어렵습니다.

Realtime Database데이터 모델에 대해 자세히 알아보세요.

실시간 및 오프라인 지원

두 제품 모두 모바일 위주의 실시간 SDK를 보유하며 오프라인 대응 앱을 위한 로컬 데이터 스토리지를 지원합니다.

Cloud Firestore [ 권장 ] Realtime Database
Apple, Android, 웹 클라이언트를 위한 오프라인 지원 Apple, Android 클라이언트를 위한 오프라인 지원

Presence

클라이언트가 온라인인지 오프라인인지를 알면 유용합니다. Firebase Realtime Database는 클라이언트 연결 상태를 기록하고 클라이언트의 연결 상태가 변경될 때마다 업데이트를 제공할 수 있습니다.

Cloud Firestore [ 권장 ] Realtime Database
기본적으로 지원되지 않음. Cloud Functions를 사용하여 Cloud FirestoreRealtime Database를 동기화하여 Realtime Database의 접속 상태 지원을 활용할 수 있습니다. Cloud Firestore에서 접속 상태 구현을 참조하세요. 접속 상태가 지원됨

쿼리

쿼리를 통해 두 가지 데이터베이스에서 데이터를 검색, 정렬, 필터링합니다.

Cloud Firestore [ 권장 ] Realtime Database
복합 정렬 및 필터링 기능을 갖춘 색인화된 쿼리
  • 단일 쿼리에서 속성에 여러 필터를 연결하고 필터링과 정렬을 결합할 수 있습니다.
  • 쿼리가 얕아 특정 컬렉션 또는 컬렉션 그룹의 문서만 반환하며 하위 컬렉션 데이터는 반환하지 않습니다.
  • 쿼리에서 항상 전체 문서를 반환해야 합니다.
  • 기본적으로 쿼리가 색인화되며 쿼리 성능이 데이터 세트가 아닌 결과 세트의 크기에 비례합니다.
제한적인 정렬 및 필터링 기능을 갖춘 깊은 쿼리
  • 쿼리에서 속성을 정렬 또는 필터링할 수 있으며 두 가지를 함께 진행할 수는 없습니다.
  • 기본적으로 깊은 쿼리가 수행되어 항상 전체 하위 트리를 반환합니다.
  • 쿼리에서 JSON 트리의 개별 리프 노드 값에 이르는 세부 수준의 데이터에 액세스할 수 있습니다.
  • 쿼리에서 색인을 필요로 하지 않지만 데이터 세트가 커짐에 따라 특정 쿼리의 성능이 저하됩니다.

쓰기 및 트랜잭션

Cloud Firestore [ 권장 ] Realtime Database
고급 쓰기 및 트랜잭션 작업
  • 설정 및 업데이트 작업은 물론 배열 및 숫자 연산자와 같은 고급 변환을 통해 데이터를 씁니다.
  • 트랜잭션이 데이터베이스의 모든 부분에서 데이터를 원자적으로 읽고 쓸 수 있습니다.
기본 쓰기 및 트랜잭션 작업

안정성 및 성능

Cloud Firestore [ 권장 ] Realtime Database
Cloud Firestore는 자동으로 확장되는 리전 내 및 멀티 리전 솔루션입니다.
  • 일반적인 응답 시간이 30밀리초 이하인 지연 시간이 짧은 솔루션입니다.
  • 데이터가 서로 다른 리전의 여러 데이터 센터에 보관되므로 글로벌 확장성과 강력한 안정성이 보장됩니다.
  • 전 세계적으로 리전 내 또는 멀티 리전 구성이 가능합니다.
서비스수준계약에서 Cloud Firestore 성능 및 안정성 특성에 대해 자세히 알아보세요.
Realtime Database는 리전 내 솔루션입니다.
  • 리전 내 구성에서 사용할 수 있습니다. 데이터베이스는 리전 내 영역별 가용성에 따라 제한됩니다.
  • 지연 시간이 매우 짧으며 일반적인 응답 시간이 10밀리초 이하입니다. 동기화가 자주 발생할 때 적합합니다.
서비스수준계약에서 Realtime Database 성능 및 안정성 특성에 대해 자세히 알아보세요.

Uptime

Cloud Firestore [ 권장 ] Realtime Database
업타임 성능이 매우 높습니다.
  • 일반적인 업타임 성능은 99.999%입니다.
  • 가용성이 가장 중요한 경우(예: 전자상거래 앱) Cloud Firestore를 사용하세요.
업타임 성능이 높습니다.
  • 일반적인 업타임 성능은 99.95%입니다.

확장성

Cloud Firestore [ 권장 ] Realtime Database
확장이 자동으로 수행됩니다.
  • 확장이 완전히 자동으로 수행됩니다. 확장 한도는 동시 연결 약 1백만 개, 초당 쓰기 약 10,000회입니다. 향후 이 한도를 늘릴 계획입니다.
  • 개별 문서 또는 색인의 쓰기 속도에 적용되는 한도가 있습니다.
확장하려면 샤딩을 사용해야 합니다.
  • 단일 데이터베이스에서 동시 연결 약 200,000개, 초당 쓰기 약 1,000회까지 확장됩니다. 추가로 확장하려면 데이터를 여러 데이터베이스로 샤딩해야 합니다.
  • 개별 데이터의 쓰기 속도에 적용되는 로컬 제한은 없습니다.

보안

Cloud Firestore [ 권장 ] Realtime Database
승인과 검증이 결합된 비단계식 규칙
  • 모바일 SDK의 읽기 및 쓰기가 Cloud Firestore Security Rules로 보호됩니다.
  • 서버 SDK의 읽기 및 쓰기가 Identity and Access Management(IAM)로 보호됩니다.
  • 와일드 카드를 사용하지 않는 한 규칙이 하위로 전파되지 않습니다.
  • 규칙으로 쿼리를 제한할 수 있습니다. 쿼리 결과에 사용자가 액세스할 수 없는 데이터가 포함되어 있으면 전체 쿼리가 실패합니다.
승인과 검증이 분리된 단계식 규칙 언어

가격 책정

두 솔루션 모두 Spark 및 Blaze 요금제로 제공됩니다.

Cloud Firestore [ 권장 ] Realtime Database
주로 데이터베이스에서 수행되는 작업(읽기, 쓰기, 삭제)에 대해 청구되며 대역폭과 저장용량에 대해서도 비교적 저렴한 요금으로 청구됩니다.

Cloud FirestoreApp Engine 프로젝트의 일일 지출 한도를 지원하므로 비용의 상한선을 적절하게 설정할 수 있습니다.

Cloud Firestore 요금제에 대해 자세히 알아보세요.

대역폭과 저장용량에 대해서만 청구되지만 요금이 비교적 높습니다.

Realtime Database 요금제에 대해 자세히 알아보세요.

Cloud FirestoreRealtime Database 사용

동일한 Firebase 앱 또는 프로젝트 내에서 두 데이터베이스를 모두 사용할 수 있습니다. 두 NoSQL 데이터베이스는 동일한 유형의 데이터를 저장할 수 있고 클라이언트 라이브러리의 작동 방식도 서로 유사합니다. 앱에서 두 데이터베이스를 모두 사용하기로 결정한 경우 앞에서 설명한 차이점에 유의하세요.

Realtime DatabaseCloud Firestore 모두에서 사용할 수 있는 기능에 대해 자세히 알아보세요.

데이터베이스를 선택할 준비가 되셨나요?

이 비교 정보가 Firebase 데이터베이스 솔루션을 선택하는 데 도움이 되었기를 바랍니다. 이제 Firebase 프로젝트에 데이터베이스를 추가하는 방법을 알아볼 수 있습니다.