데이터베이스 선택: 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는 현재 베타 단계입니다.
  • 베타 제품의 안정성은 정식 출시 제품에 미치지 못할 수 있습니다.
  • 데이터가 서로 다른 리전의 여러 데이터 센터에 위치하므로 글로벌 확장성과 견고한 신뢰성이 보장됩니다.
  • Cloud Firestore가 베타 단계를 벗어나면 실시간 데이터베이스보다 신뢰성이 높아집니다.

확장성

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

단일 데이터베이스에서 동시 연결 약 100,000개, 초당 쓰기 약 1,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를 사용해 보려면 시작 가이드를 참조하세요.

실시간 데이터베이스에서 제공하는 기능에 관한 자세한 내용은 실시간 데이터베이스 문서를 참조하세요.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.