Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

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

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

  • Cloud Firestore 는 모바일 앱 개발을 위한 Firebase의 최신 데이터베이스입니다. 새롭고 보다 직관적인 데이터 모델을 통해 실시간 데이터베이스의 성공을 기반으로 합니다. Cloud Firestore는 또한 실시간 데이터베이스보다 더 풍부하고 빠른 쿼리와 확장성을 제공합니다.

  • 실시간 데이터베이스 는 Firebase의 원본 데이터베이스입니다. 실시간으로 클라이언트 간에 동기화된 상태가 필요한 모바일 앱을 위한 효율적이고 지연 시간이 짧은 솔루션입니다.

Firebase는 어떤 데이터베이스를 권장하나요?

데이터베이스 솔루션 선택은 여러 요인에 따라 달라지지만 특정 기능과 관련하여 귀하에게 적합한 데이터베이스에 대한 권장 사항을 제시할 수 있습니다.

두 솔루션 모두 다음을 제공합니다.

  • 배포 및 유지 관리할 서버가 없는 클라이언트 우선 SDK
  • 실시간 업데이트
  • 프리 티어 후 사용한 만큼만 지불

주요 고려 사항

두 데이터베이스에 공통적인 훌륭한 핵심 기능 외에도 아래 나열된 고려 사항 중 일부 또는 전부가 앱의 성공에 어떤 영향을 미칠지 생각해 보십시오.

데이터베이스의 역할
내 앱은 다음을 위해 데이터베이스를 사용합니다...
기본 쿼리를 사용하여 데이터를 주로 동기화합니다.
고급 쿼리, 정렬 및 트랜잭션이 필요하지 않은 경우 실시간 데이터베이스 를 권장합니다.
고급 쿼리, 정렬 및 트랜잭션.
예를 들어 전자상거래 앱에서 데이터와 복잡한 상호 작용이 필요한 경우 Cloud Firestore 를 권장합니다.
데이터 작업
내 앱의 데이터베이스 사용량은 다음과 같습니다.
자주 변경되는 몇 GB 이하의 데이터.
앱이 디지털 화이트보드 앱과 같이 작은 업데이트 스트림을 보내는 경우 실시간 데이터베이스 를 권장합니다.
변경되는 것보다 훨씬 더 자주 읽히는 수백 GB에서 TB의 데이터.
매우 큰 데이터 세트의 경우 및 배치 작업이 자주 필요한 경우 Cloud Firestore 를 권장합니다.
데이터 모델
내 데이터를 다음과 같이 구성하는 것을 선호합니다...
간단한 JSON 트리.
JSON 비정형 데이터의 경우 실시간 데이터베이스 를 권장합니다.
컬렉션으로 구성된 문서.
구조화된 문서 및 컬렉션의 경우 Cloud Firestore 를 권장합니다.
유효성
내 가용성 요구 사항은...
99.999%의 매우 높은 가동 시간 보장.
예를 들어 전자상거래 앱에서 가용성이 가장 중요한 경우 Cloud Firestore 를 권장합니다.
최소 99.95% 가동 시간 보장.
매우 높지만 중요하지 않은 가용성이 허용되는 경우 Cloud Firestore 또는 실시간 데이터베이스 를 권장합니다.
로컬 데이터에 대한 오프라인 쿼리
내 앱은 연결이 제한되거나 연결되지 않은 장치에서 쿼리를 수행해야 합니다...
자주.
사용자가 오프라인일 때 로컬 데이터에 대한 정교한 쿼리 기능을 위해 Cloud Firestore 를 권장합니다.
드물게 또는 결코.
사용자가 지속적으로 온라인 상태를 유지할 것으로 예상되는 경우 Cloud Firestore 또는 실시간 데이터베이스 를 권장합니다.
데이터베이스 인스턴스 수
내 개별 프로젝트에서 사용해야 하는...
예를 들어 각 주요 고객에 대한 데이터베이스와 같은 많은 데이터베이스.
단일 Firebase 프로젝트에 여러 데이터베이스를 추가할 수 있으므로 실시간 데이터베이스 를 권장합니다.
단 하나의 데이터베이스.
단일 데이터베이스가 필요한 경우 Cloud Firestore 또는 실시간 데이터베이스 를 권장합니다.

고려해야 할 다른 중요한 사항은 무엇입니까?

이전의 주요 고려 사항에 대해 생각한 후 데이터베이스를 선택할 준비가 된 것입니다. 여전히 장단점을 저울질하고 있다면 이 섹션에서 Cloud Firestore와 실시간 데이터베이스 간의 다른 차이점을 다룹니다.

데이터 모델

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

실시간 데이터베이스 클라우드 파이어스토어
데이터를 하나의 큰 JSON 트리로 저장합니다.
  • 간단한 데이터는 저장하기가 매우 쉽습니다.
  • 복잡하고 계층적인 데이터는 대규모로 구성하기가 더 어렵습니다.

실시간 데이터베이스 데이터 모델 에 대해 자세히 알아보세요.

데이터를 문서 모음으로 저장합니다.
  • 간단한 데이터는 JSON과 매우 유사한 문서에 저장하기 쉽습니다.
  • 복잡한 계층적 데이터는 문서 내의 하위 컬렉션을 사용하여 대규모로 구성하기가 더 쉽습니다.
  • 비정규화 및 데이터 평면화가 덜 필요합니다.

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

실시간 및 오프라인 지원

둘 다 모바일 우선 실시간 SDK를 가지고 있으며 둘 다 오프라인 지원 앱을 위한 로컬 데이터 저장소를 지원합니다.

실시간 데이터베이스 클라우드 파이어스토어
Apple 및 Android 클라이언트에 대한 오프라인 지원. Apple, Android 및 웹 클라이언트에 대한 오프라인 지원.

있음

클라이언트가 온라인인지 오프라인인지 아는 것이 유용할 수 있습니다. Firebase 실시간 데이터베이스는 클라이언트 연결 상태를 기록하고 클라이언트의 연결 상태가 변경될 때마다 업데이트를 제공할 수 있습니다.

실시간 데이터베이스 클라우드 파이어스토어
현재 상태가 지원됩니다. 기본적으로 지원되지 않습니다. Cloud Functions를 사용하여 Cloud Firestore 및 실시간 데이터베이스를 동기화하여 현재 상태에 대한 실시간 데이터베이스의 지원을 활용할 수 있습니다. Cloud Firestore에서 인지도 구축을 참조하세요.

쿼리

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

실시간 데이터베이스 클라우드 파이어스토어
제한된 정렬 및 필터링 기능 이 있는 심층 쿼리.
  • 쿼리는 속성을 정렬 하거나 필터링할 수 있지만 둘 다 할 수는 없습니다.
  • 쿼리는 기본적으로 깊습니다. 항상 전체 하위 트리를 반환합니다.
  • 쿼리는 JSON 트리의 개별 리프 노드 값까지 모든 세분성에서 데이터에 액세스할 수 있습니다.
  • 쿼리에는 인덱스가 필요하지 않습니다. 그러나 특정 쿼리의 성능은 데이터 세트가 커짐에 따라 저하됩니다.
복합 정렬 및 필터링 을 사용한 인덱싱된 쿼리.
  • 필터를 연결하고 속성에 대한 필터링과 정렬을 단일 쿼리로 결합할 수 있습니다.
  • 쿼리는 얕습니다. 특정 컬렉션 또는 컬렉션 그룹의 문서만 반환하고 하위 컬렉션 데이터는 반환하지 않습니다.
  • 쿼리는 항상 전체 문서를 반환해야 합니다.
  • 쿼리는 기본적으로 인덱싱됩니다. 쿼리 성능은 데이터 세트가 아닌 결과 세트의 크기에 비례합니다.

쓰기 및 트랜잭션

실시간 데이터베이스 클라우드 파이어스토어
기본 쓰기 및 트랜잭션 작업. 고급 쓰기 및 트랜잭션 작업.
  • 배열 및 숫자 연산자와 같은 고급 변환뿐만 아니라 설정 및 업데이트 작업을 통해 데이터 쓰기 작업 을 수행합니다.
  • 트랜잭션 은 데이터베이스의 모든 부분에서 원자적으로 데이터를 읽고 쓸 수 있습니다.

신뢰성 및 성능

실시간 데이터베이스 클라우드 파이어스토어
실시간 데이터베이스는 지역 솔루션입니다.
  • 지역 구성에서 사용할 수 있습니다. 데이터베이스는 리전 내의 영역 가용성으로 제한됩니다.
  • 대기 시간이 매우 짧고 빈번한 상태 동기화에 이상적인 옵션입니다.
서비스 수준 계약 에서 실시간 데이터베이스 성능 및 안정성 특성에 대해 자세히 알아보십시오.
Cloud Firestore는 자동으로 확장되는 지역 및 다중 지역 솔루션입니다.
  • 서로 다른 지역의 여러 데이터 센터에 데이터를 보관하여 글로벌 확장성과 강력한 안정성을 보장합니다.
  • 전 세계 지역 또는 다중 지역 구성에서 사용할 수 있습니다.
서비스 수준 계약 에서 Cloud Firestore 성능 및 안정성 특성에 대해 자세히 알아보세요.

확장성

실시간 데이터베이스 클라우드 파이어스토어
스케일링에는 샤딩이 필요합니다.
  • 단일 데이터베이스에서 약 200,000개의 동시 연결 및 초당 1,000개의 쓰기로 확장합니다. 그 이상으로 확장하려면 여러 데이터베이스에 걸쳐 데이터를 샤딩해야 합니다.
  • 개별 데이터 조각에 대한 쓰기 속도에 대한 로컬 제한이 없습니다.
스케일링은 자동입니다.
  • 완전히 자동으로 확장됩니다. 현재 확장 제한은 약 100만 동시 연결 및 10,000 쓰기/초입니다. 향후 이러한 한도를 높일 계획입니다.
  • 개별 문서 또는 인덱스에 대한 쓰기 속도에 제한 이 있습니다.

보안

실시간 데이터베이스 클라우드 파이어스토어
권한 부여와 유효성 검사를 구분하는 계단식 규칙 언어입니다. 권한 부여와 유효성 검사를 결합하는 비계단식 규칙입니다.
  • Cloud Firestore 보안 규칙 으로 보호되는 모바일 SDK에서 읽고 씁니다.
  • IAM(Identity and Access Management) 으로 보호되는 서버 SDK에서 읽고 씁니다.
  • 와일드카드를 사용하지 않는 한 규칙은 계단식으로 적용되지 않습니다.
  • 규칙은 쿼리를 제한할 수 있습니다. 쿼리 결과에 사용자가 액세스할 수 없는 데이터가 포함되어 있으면 전체 쿼리가 실패합니다.

가격

두 솔루션 모두 Spark 및 Blaze 요금제 에서 사용할 수 있습니다.

실시간 데이터베이스 클라우드 파이어스토어
대역폭 및 스토리지 에 대해서만 요금을 부과하지만 더 높은 요금이 부과됩니다.

실시간 데이터베이스 요금제 에 대해 자세히 알아보세요.

주로 데이터베이스에서 수행되는 작업(읽기, 쓰기, 삭제) 에 대해 요금이 부과되며 대역폭 및 스토리지에 대해서는 낮은 요율로 청구됩니다.

Cloud Firestore는 부담 없는 비용을 초과하지 않도록 App Engine 프로젝트의 일일 지출 한도 를 지원합니다.

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

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

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

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

데이터베이스를 선택할 준비가 되셨습니까?

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

  • Cloud Firestore 의 경우 Cloud Firestore 시작하기를 살펴보세요.
  • 실시간 데이터베이스 의 경우 플랫폼( Apple , Android , C++ , Unity , Web 또는 REST )에 대한 시작하기 항목을 읽으십시오.