Wybierz bazę danych: Cloud Firestore lub Bazę danych czasu rzeczywistego

Firebase oferuje 2 działające w chmurze bazy danych dokumentów dostępne dla klienta. Zalecamy nowym klientom rozpoczęcie od Cloud Firestore:

  • Cloud Firestore to zalecana korporacyjna baza danych dokumentów zgodna z formatem JSON, której zaufało ponad 250 tys. programistów. Nadaje się do aplikacji z bogatymi modelami danych, które wymagają możliwości wykonywania zapytań, skalowalności i wysokiej dostępności. Umożliwia też synchronizację klienta z niskim opóźnieniem i dostęp do danych offline.

  • Realtime Database to klasyczna baza danych JSON w Firebase. Nadaje się do aplikacji o prostych modelach danych, które wymagają prostych wyszukiwań i synchronizacji o małej latencji z ograniczoną skalowalnością.

O czym jeszcze warto pamiętać?

Po zastanowieniu się nad kluczowymi kwestiami wymienionymi powyżej możesz wybrać bazę danych. Jeśli nadal analizujesz zalety i wady, w tej sekcji omawiamy inne różnice między Cloud Firestore i Realtime Database.

Model danych

Zarówno Realtime Database, jak i Cloud Firestore to bazy danych NoSQL.

Cloud Firestore [ PREFEROWANY ] Realtime Database
Przechowuje dane w postaci kolekcji dokumentów.
  • Proste dane można łatwo przechowywać w dokumentach, które są bardzo podobne do formatu JSON.
  • Złożone dane hierarchiczne łatwiej jest porządkować na dużą skalę, korzystając z podkolekcji w dokumentach.
  • Wymaga mniejszej denormalizacji i rozdzielania danych.

Dowiedz się więcej o Cloud Firestore modelu danych.

Przechowuje dane jako jedno duże drzewo JSON.
  • Proste dane są bardzo łatwe do przechowywania.
  • Skomplikowane dane hierarchiczne trudniej jest uporządkować na dużą skalę.

Dowiedz się więcej o Realtime Database modelu danych.

Obsługa w czasie rzeczywistym i offline

Oba pakiety SDK są zoptymalizowane pod kątem urządzeń mobilnych i obsługują lokalne przechowywanie danych w aplikacjach działających w trybie offline.

Cloud Firestore [ PREFEROWANY ] Realtime Database
Obsługa offline na urządzeniach z systemem Apple, Android i klientach internetowych. Obsługa offline w przypadku klientów Apple i Androida.

Obecność

Może być przydatne, aby wiedzieć, kiedy klient jest online, a kiedy offline. Firebase Realtime Database może rejestrować stan połączenia klienta i przesyłać aktualizacje za każdym razem, gdy zmienia się stan połączenia klienta.

Cloud Firestore [ PREFEROWANY ] Realtime Database
Nieobsługiwane natywnie. Możesz korzystać z obsługi obecności w Realtime Database, synchronizując Cloud Firestore i Realtime Database za pomocą Cloud Functions. Zapoznaj się z artykułem Tworzenie obecności w Cloud Firestore. Obsługa obecności

Tworzenie zapytań

Pobieraj, sortuj i filtruj dane z dowolnej bazy danych za pomocą zapytań.

Cloud Firestore [ PREFEROWANY ] Realtime Database
Zapytania indeksowane z użyciem złożonego sortowania i filtrowania.
  • W jednym zapytaniu możesz połączyć łańcuchowo filtry oraz połączyć filtrowanie i sortowanie w usłudze.
  • Zapytania są płytkie: zwracają tylko dokumenty z konkretnej kolekcji lub grupy kolekcji i nie zawierają danych z podrzędnych kolekcji.
  • Zapytania muszą zawsze zwracać całe dokumenty.
  • Zapytania są domyślnie indeksowane: wydajność zapytań jest proporcjonalna do rozmiaru zbioru wyników, a nie zbioru danych.
Precyzyjne zapytania z ograniczonymi funkcjami sortowania i filtrowania.
  • Zapytania mogą sortować lub filtrować według usługi, ale nie na oba te sposoby naraz.
  • Zapytania są domyślnie głębokie: zawsze zwracają cały poddrzew.
  • Zapytania mogą uzyskiwać dostęp do danych o dowolnej szczegółowości, aż do poziomu poszczególnych wartości węzłów liści w drzewie JSON.
  • Zapytania nie wymagają indeksu, ale ich wydajność spada w miarę rozrastania się zbioru danych.

Zapisy i transakcje

Cloud Firestore [ PREFEROWANY ] Realtime Database
Zaawansowane operacje zapisu i transakcji.
  • Zapisywanie danych za pomocą operacji zbioru i aktualizacji oraz zaawansowanych przekształceń, takich jak operatory tablic i liczb.
  • Transakcje mogą odczytywać i zapisywać dane w dowolnej części bazy danych.
Podstawowe operacje zapisu i transakcji.
  • Zapisz dane za pomocą operacji ustawiania i aktualizowania.
  • Transakcje są charakterystyczne dla określonego poddrzewa danych.

Niezawodność i wydajność

Cloud Firestore [ PREFEROWANE ] Realtime Database
Cloud Firestore to rozwiązanie regionalne i wieloregionalne, które skaluje się automatycznie.
  • rozwiązanie o niskiej latencji, którego typowy czas odpowiedzi nie przekracza 30 ms;
  • przechowuje Twoje dane w wielu centrach danych w różnych regionach, zapewniając globalną skalowalność i wysoką niezawodność;
  • Dostępne w konfiguracjach regionalnych i wieloregionalnych na całym świecie.
Więcej informacji o charakterze wydajności i niezawodności Cloud Firestore znajdziesz w gwarancji jakości usług.
Realtime Database to rozwiązanie regionalne.
  • Dostępne w konfiguracjach regionalnych. Bazy danych są ograniczone do strefy dostępnej w danym regionie.
  • Niezwykle małe opóźnienie, typowy czas reakcji nie przekracza 10 ms. Idealna opcja przy częstej synchronizacji stanów.
Więcej informacji o charakterystyce wydajności i niezawodności Realtime Database znajdziesz w Gwarancji jakości usług.

Czas działania

Cloud Firestore [ PREFEROWANY ] Realtime Database
Wysoka dostępność
  • Typowa dostępność to 99,999%.
  • Jeśli dostępność (np. w przypadku aplikacji e-commerce) jest dla Ciebie ważna, użyj Cloud Firestore.
Wysoka wydajność.
  • Typowa dostępność na poziomie 99,95%.

Skalowalność

Cloud Firestore [ PREFEROWANY ] Realtime Database
Skalowanie odbywa się automatycznie.
  • Skalowanie odbywa się całkowicie automatycznie. Limity skalowania to około 1 mln jednoczesnych połączeń i 10 tys. zapisów/sekundę. Planujemy zwiększyć te limity w przyszłości.
  • Ogranicza szybkość zapisywania w poszczególnych dokumentach lub indeksach.
Skalowanie wymaga podziału na segmenty.
  • Osiągnięcie skali około 200 tysięcy jednoczesnych połączeń i 1000 zapisów na sekundę w jednej bazie danych. Aby zwiększyć skalę, trzeba podzielić dane na kilka baz danych.
  • Brak lokalnych ograniczeń szybkości zapisu dla poszczególnych danych.

Bezpieczeństwo

Cloud Firestore [ PREFEROWANY ] Realtime Database
Reguły niekaskadowe, które łączą autoryzację i weryfikację.
  • Czyta i zapisuje dane z pakietów SDK do reklam mobilnych zabezpieczonych za pomocą interfejsu Cloud Firestore Security Rules.
  • Czyta i zapisuje dane z pakietów SDK serwera zabezpieczonych za pomocą Identity and Access Management (IAM).
  • Reguły nie działają kaskadowo, chyba że użyjesz symbolu wieloznacznego.
  • Reguły mogą ograniczać zapytania: jeśli wyniki zapytania mogą zawierać dane, do których użytkownik nie ma dostępu, całe zapytanie kończy się niepowodzeniem.
Język reguł kaskadowych, który oddziela autoryzację od walidacji.

Ceny

Oba rozwiązania są dostępne w ramach abonamentów Spark i Blaze.

Cloud Firestore [ PREFEROWANY ] Realtime Database
Opłaty są naliczane głównie za operacje wykonywane w bazie danych (odczyt, zapis, usunięcie), a przy niższej stawce za przepustowość i miejsce na dane.

Cloud Firestore obsługuje dzienne limity wydatków w przypadku projektów App Engine, aby nie przekroczyć ustalonych przez Ciebie kosztów.

Dowiedz się więcej o abonamentach Cloud Firestore.

Opłaty tylko za przepustowość i miejsce na dane, ale po wyższej stawce.

Dowiedz się więcej o abonamentach Realtime Database.

Używasz Cloud FirestoreRealtime Database

Możesz używać obu baz danych w ramach tej samej aplikacji lub tego samego projektu Firebase. Obie bazy danych NoSQL mogą przechowywać te same typy danych, a biblioteki klienta działają w podobny sposób. Jeśli zdecydujesz się użyć w aplikacji obu baz danych, pamiętaj o wymienionych wcześniej różnicach.

Dowiedz się więcej o funkcjach dostępnych w Realtime Database i Cloud Firestore.

Gotowy do wyboru bazy danych?

Mamy nadzieję, że to porównanie pomogło Ci wybrać rozwiązanie bazy danych Firebase. Dowiedz się, jak dodać bazę danych do projektów Firebase.