데이터베이스 선택: 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 클라이언트를 위한 오프라인 지원

접속 상태

클라이언트가 온라인인지 오프라인인지를 알면 유용합니다. 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 성능 및 안정성 특성에 대해 자세히 알아보세요.

업타임

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 프로젝트에 데이터베이스를 추가하는 방법을 알아볼 수 있습니다.