콘솔로 이동

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

Firebase는 실시간 데이터 동기화를 지원하며 클라이언트에서 액세스할 수 있는 2가지 클라우드 기반 데이터베이스 솔루션을 제공합니다.

  • 실시간 데이터베이스는 Firebase의 고유한 데이터베이스로서, 여러 클라이언트에서 실시간으로 상태를 동기화해야 하는 모바일 앱을 위한 효율적이고 지연 시간이 짧은 솔루션입니다.
  • Cloud Firestore는 모바일 앱 개발을 위한 Firebase의 새로운 주력 데이터베이스로서, 실시간 데이터베이스의 성공을 바탕으로 더욱 직관적인 새로운 데이터 모델을 선보입니다. 또한 실시간 데이터베이스보다 풍부하고 빠른 쿼리와 원활한 확장성을 제공합니다.

내 프로젝트에 맞는 데이터베이스

새 프로젝트를 시작하는 대부분의 개발자라면 Cloud Firestore를 사용하는 것이 좋습니다. Cloud Firestore는 향후 릴리스에서 더욱 강력한 기능을 지원하도록 설계된 인프라를 바탕으로 더 나은 기능, 성능, 확장성을 제공합니다. 새로운 쿼리 유형, 더 강력한 보안 규칙, 성능 향상 등의 개선 사항이 계속 발표될 예정입니다.

Cloud Firestore와 실시간 데이터베이스의 다음과 같은 차이점을 고려하여 데이터베이스 솔루션을 선택하세요.

데이터 모델

실시간 데이터베이스와 Cloud Firestore는 모두 NoSQL 데이터베이스입니다.

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

실시간 데이터베이스 데이터 모델 자세히 알아보기

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

Cloud Firestore 데이터 모델 자세히 알아보기

실시간 및 오프라인 지원

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

실시간 데이터베이스 Cloud Firestore
iOS 및 Android의 모바일 클라이언트에서만 오프라인을 지원합니다. iOS, Android, 웹 클라이언트에서 오프라인을 지원합니다.

쿼리

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

실시간 데이터베이스 Cloud Firestore
정렬 및 필터링 기능을 제한적으로 갖춘 깊은 쿼리
  • 단일 쿼리에서 속성을 정렬 또는 필터링할 수만 있으며 속성 정렬과 필터링을 함께 할 수는 없습니다.
  • 기본적으로 깊은 쿼리가 수행되어 전체 하위 트리를 반환합니다.
복합 정렬 및 필터링이 가능한 색인화 쿼리
  • 단일 쿼리에서 속성에 필터를 연속으로 사용하고 필터링과 정렬을 결합할 수 있습니다.
  • 하위 컬렉션에 대한 얕은 쿼리 작성: 전체 컬렉션 또는 전체 문서가 아닌 한 문서 내의 하위 컬렉션을 쿼리할 수 있습니다.
  • 기본적으로 쿼리 색인화: 쿼리 성능이 데이터 세트가 아닌 결과 세트의 크기에 비례합니다.

쓰기 및 트랜잭션

실시간 데이터베이스 Cloud Firestore
기본 쓰기 및 트랜잭션 작업 원자적 쓰기 및 트랜잭션 작업

신뢰성 및 성능

실시간 데이터베이스 Cloud Firestore
실시간 데이터베이스는 리전 솔루션입니다.
  • 지연 시간이 매우 짧으므로 상태 동기화가 자주 발생할 때 적합합니다.
  • 데이터베이스가 단일 리전의 영역별 가용성에 따라 제한됩니다.
실시간 데이터베이스의 성능 및 신뢰성에 대한 자세한 내용은 서비스수준계약을 참조하세요.
Cloud Firestore는 자동으로 확장되는 다중 리전 솔루션입니다.
  • 데이터가 서로 다른 리전의 여러 데이터 센터에 위치하므로 글로벌 확장성과 견고한 신뢰성이 보장됩니다.
  • Google Cloud Platform의 안정성과 신뢰성을 제공합니다.
서비스수준계약에서 Cloud Firestore 성능 및 신뢰성 특성에 대해 자세히 알아보세요.

확장성

실시간 데이터베이스 Cloud Firestore
확장하려면 샤딩을 사용해야 합니다.

단일 데이터베이스에서 동시 연결 약 100,000개, 초당 쓰기 약 1,000회까지 확장됩니다. 추가로 확장하려면 데이터를 여러 데이터베이스로 샤딩해야 합니다.

확장이 자동으로 수행됩니다.

확장이 완전히 자동으로 수행됩니다. 현재 확장 한도는 동시 연결 수 약 1,000,000개, 초당 쓰기 10,000회입니다. 향후 이 한도를 늘릴 계획입니다.

보안

실시간 데이터베이스 Cloud Firestore
규칙이 하위로 전파되며 별도 검증 필요 모바일, 웹, 서버 SDK를 위한 보다 단순하고 강력한 보안
  • 모바일 및 웹 SDK는 Cloud Firestore 보안 규칙을 사용합니다. 서버 SDK는 ID 및 액세스 관리(IAM)를 사용합니다.
  • 와일드 카드를 사용하지 않는 한 규칙이 하위로 전파되지 않습니다.
  • 데이터 검증이 자동으로 수행됩니다.
  • 규칙이 쿼리를 제한할 수 있습니다. 쿼리 결과에 사용자가 액세스할 수 없는 데이터가 포함되어 있으면 전체 쿼리가 실패합니다.

가격

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

실시간 데이터베이스 Cloud Firestore
대역폭과 저장용량에 대해서만 청구되지만 요금이 비교적 높습니다.

실시간 데이터베이스 요금제 자세히 알아보기

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

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

Cloud Firestore 요금제 자세히 알아보기

Cloud Firestore 및 실시간 데이터베이스 사용

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

실시간 데이터베이스Cloud Firestore 모두에서 사용할 수 있는 기능에 대해 자세히 알아보세요.