Firebase는 실시간 데이터 동기화를 지원하며 클라이언트에서 액세스할 수 있는 2가지 클라우드 기반 데이터베이스 솔루션을 제공합니다.
Cloud Firestore는 모바일 앱 개발을 위한 Firebase의 최신 데이터베이스로서 실시간 데이터베이스의 성공을 바탕으로 더욱 직관적인 새로운 데이터 모델을 선보입니다. 또한 실시간 데이터베이스보다 풍부하고 빠른 쿼리와 원활한 확장성을 제공합니다.
실시간 데이터베이스는 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 데이터베이스입니다.
실시간 데이터베이스 | Cloud Firestore |
---|---|
데이터를 하나의 큰 JSON 트리로 저장합니다.
실시간 데이터베이스 데이터 모델 자세히 알아보기 |
데이터를 문서 컬렉션으로 저장합니다.
Cloud Firestore 데이터 모델 자세히 알아보기 |
실시간 및 오프라인 지원
두 제품 모두 모바일 위주의 실시간 SDK를 보유하며 오프라인 대응 앱을 위한 로컬 데이터 스토리지를 지원합니다.
실시간 데이터베이스 | Cloud Firestore |
---|---|
Apple, Android 클라이언트를 위한 오프라인 지원 | Apple, Android, 웹 클라이언트를 위한 오프라인 지원 |
접속 상태
클라이언트가 온라인인지 오프라인인지를 알면 유용합니다. Firebase 실시간 데이터베이스는 클라이언트 연결 상태를 기록하고 클라이언트의 연결 상태가 변경될 때마다 업데이트를 제공할 수 있습니다.
실시간 데이터베이스 | Cloud Firestore |
---|---|
접속 상태가 지원됨 | 기본적으로 지원되지 않음. Cloud Functions를 사용해 Cloud Firestore와 실시간 데이터베이스를 동기화하여 실시간 데이터베이스의 접속 상태 지원을 활용할 수 있습니다. Cloud Firestore에서 접속 상태 구현을 참조하세요. |
쿼리
쿼리를 통해 두 가지 데이터베이스에서 데이터를 검색, 정렬, 필터링합니다.
실시간 데이터베이스 | Cloud Firestore |
---|---|
제한적인 정렬 및 필터링 기능을 갖춘 깊은 쿼리
|
복합 정렬 및 필터링 기능을 갖춘 색인화된 쿼리
|
쓰기 및 트랜잭션
실시간 데이터베이스 | Cloud Firestore |
---|---|
기본 쓰기 및 트랜잭션 작업 | 고급 쓰기 및 트랜잭션 작업 |
안정성 및 성능
실시간 데이터베이스 | Cloud Firestore |
---|---|
실시간 데이터베이스는 리전 내 솔루션입니다.
|
Cloud Firestore는 자동으로 확장되는 리전 내 및 멀티 리전 솔루션입니다.
|
확장성
실시간 데이터베이스 | Cloud Firestore |
---|---|
확장하려면 샤딩을 사용해야 합니다.
|
확장이 자동으로 수행됩니다.
|
보안
실시간 데이터베이스 | Cloud Firestore |
---|---|
승인과 검증이 분리된 단계식 규칙 언어
|
승인과 검증이 결합된 비단계식 규칙
|
가격 책정
두 솔루션 모두 Spark 및 Blaze 요금제로 제공됩니다.
실시간 데이터베이스 | Cloud Firestore |
---|---|
대역폭과 저장용량에 대해서만 청구되지만 요금이 비교적 높습니다.
실시간 데이터베이스 요금제 자세히 알아보기 |
주로 데이터베이스에서 수행되는 작업(읽기, 쓰기, 삭제)에 대해 청구되며 대역폭과 저장용량에 대해서도 비교적 저렴한 요금으로 청구됩니다.
Cloud Firestore는 App Engine 프로젝트의 일일 지출 한도를 지원하므로 비용의 상한선을 적절하게 설정할 수 있습니다. Cloud Firestore 요금제 자세히 알아보기 |
Cloud Firestore 및 실시간 데이터베이스 사용
동일한 Firebase 앱 또는 프로젝트 내에서 두 데이터베이스를 모두 사용할 수 있습니다. 두 NoSQL 데이터베이스는 동일한 유형의 데이터를 저장할 수 있고 클라이언트 라이브러리의 작동 방식도 서로 유사합니다. 앱에서 두 데이터베이스를 모두 사용하기로 결정한 경우 위에서 설명한 차이점에 유의하세요.
실시간 데이터베이스 및 Cloud Firestore 모두에서 사용할 수 있는 기능에 대해 자세히 알아보세요.
데이터베이스를 선택할 준비가 되셨나요?
이 비교 정보가 Firebase 데이터베이스 솔루션을 선택하는 데 도움이 되었기를 바랍니다. 이제 Firebase 프로젝트에 데이터베이스를 추가하는 방법을 알아볼 수 있습니다.
- Cloud Firestore의 경우 Cloud Firestore 시작하기를 참조하세요.
- 실시간 데이터베이스의 경우 사용 중인 플랫폼(Apple, Android, C++, Unity, 웹 또는 REST)에 해당하는 시작하기 주제를 참조하세요.