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

Firebase oferuje dwie działające w chmurze bazy danych dokumentów, do których klienci mają dostęp. Nowym klientom zalecamy rozpoczęcie od Cloud Firestore:

  • Cloud Firestore to zalecana baza danych dokumentów zgodna z JSON klasy korporacyjnej, której zaufało ponad 600 tysięcy deweloperów. Nadaje się do aplikacji z rozbudowanymi modelami danych, które wymagają możliwości wykonywania zapytań, skalowalności i wysokiej dostępności. Zapewnia też synchronizację klienta z niskim opóźnieniem i dostęp do danych offline.

  • Realtime Database to klasyczna baza danych JSON Firebase. Jest odpowiednia dla aplikacji z prostymi modelami danych, które wymagają prostych wyszukiwań i synchronizacji z krótkim czasem oczekiwania przy ograniczonej skalowalności.

Jakie inne ważne kwestie należy wziąć pod uwagę?

Po przeanalizowaniu najważniejszych kwestii możesz wybrać bazę danych. Jeśli nadal rozważasz zalety i wady, w tej sekcji znajdziesz 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 [ PREFEROWANE ] Realtime Database
Przechowuje dane jako kolekcje dokumentów.
  • Proste dane można łatwo przechowywać w dokumentach, które są bardzo podobne do JSON.
  • Złożone, hierarchiczne dane łatwiej jest porządkować na dużą skalę za pomocą podkolekcji w dokumentach.
  • Wymaga mniejszej denormalizacji i spłaszczania danych.

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

Przechowuje dane jako jedno duże drzewo JSON.
  • Proste dane są bardzo łatwe do przechowywania.
  • Złożone, hierarchiczne dane są trudniejsze do uporządkowania na dużą skalę.

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

Obsługa w czasie rzeczywistym i offline

Obie mają pakiety SDK działające w czasie rzeczywistym i zoptymalizowane pod kątem urządzeń mobilnych, a także obsługują lokalne przechowywanie danych na potrzeby aplikacji działających w trybie offline.

Cloud Firestore [ PREFEROWANE ] Realtime Database
Obsługa offline na urządzeniach Apple i z Androidem oraz w klientach internetowych. Obsługa offline na urządzeniach Apple i z Androidem.

Obecność

Warto wiedzieć, kiedy klient jest online lub offline. Firebase Realtime Database może rejestrować stan połączenia klienta i udostępniać aktualizacje za każdym razem, gdy stan połączenia klienta ulegnie zmianie.

Cloud Firestore [ PREFEROWANE ] Realtime Database
Nie jest obsługiwany natywnie. Możesz rozszerzyć obsługę obecności w Realtime Database, synchronizując Cloud Firestore i Realtime Database za pomocą Cloud Functions. Zobacz Tworzenie obecności w Cloud Firestore. Obsługiwana obecność.

Wykonywanie zapytań

pobierać, sortować i filtrować dane z obu baz danych za pomocą zapytań;

Cloud Firestore [ PREFEROWANE ] Realtime Database
Zapytania indeksowane ze złożonym sortowaniem i filtrowaniem.
  • Możesz łączyć filtry w łańcuchy oraz łączyć filtrowanie i sortowanie właściwości w jednym zapytaniu.
  • Zapytania są płytkie: zwracają tylko dokumenty z określonej kolekcji lub grupy kolekcji i nie zwracają danych z podkolekcji.
  • 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.
Zapytania głębokie z ograniczonymi funkcjami sortowania i filtrowania.
  • Zapytania mogą sortować lub filtrować według właściwości, ale nie mogą wykonywać obu tych czynności jednocześnie.
  • Zapytania są domyślnie głębokie: zawsze zwracają całe poddrzewo.
  • Zapytania mogą uzyskiwać dostęp do danych o dowolnej szczegółowości, aż do wartości poszczególnych węzłów liści w drzewie JSON.
  • Zapytania nie wymagają indeksu, ale wydajność niektórych zapytań spada wraz ze wzrostem zbioru danych.

Zapisy i transakcje

Cloud Firestore [ PREFEROWANE ] Realtime Database
Zaawansowane operacje zapisu i transakcje.
  • Operacje zapisu danych za pomocą operacji ustawiania i aktualizowania oraz zaawansowanych przekształceń, takich jak operatory tablicowe i numeryczne.
  • Transakcje mogą niepodzielnie odczytywać i zapisywać dane z dowolnej części bazy danych.
Podstawowe operacje zapisu i transakcji.

Niezawodność i wydajność

Cloud Firestore [ PREFEROWANE ] Realtime Database
Cloud Firestore to rozwiązanie regionalne i obejmujące wiele regionów, które skaluje się automatycznie.
  • rozwiązanie o niskim opóźnieniu, z typowym czasem odpowiedzi nie dłuższym niż 30 ms;
  • Przechowuje dane w wielu centrach danych w różnych regionach, zapewniając globalną skalowalność i wysoką niezawodność.
  • Dostępne w konfiguracjach regionalnych lub w wielu regionach na całym świecie.
Więcej informacji o wydajności i niezawodności Cloud Firestore znajdziesz w umowie SLA.
Realtime Database to rozwiązanie regionalne.
  • Dostępne w konfiguracjach regionalnych. Bazy danych są ograniczone do dostępności strefowej w regionie.
  • Bardzo niskie opóźnienie, z typowym czasem odpowiedzi nie dłuższym niż 10 ms. Idealne rozwiązanie do częstej synchronizacji stanu.
Więcej informacji o wydajności i niezawodności usługi Realtime Database znajdziesz w umowie SLA.

Czas działania

Cloud Firestore [ PREFEROWANE ] Realtime Database
Bardzo wysoki czas działania.
  • Typowy czas działania na poziomie 99,999%.
  • Jeśli dostępność jest najważniejsza, na przykład w aplikacjach e-commerce, użyj Cloud Firestore.
Wysoka dostępność.
  • Typowy czas działania na poziomie 99,95%.

Skalowalność

Cloud Firestore [ PREFEROWANE ] Realtime Database
Skalowanie jest automatyczne.
  • Skaluje się całkowicie automatycznie. Brak limitów połączeń równoczesnych i ogólnej liczby zapisów w bazie danych na sekundę.
  • Ma limity dotyczące szybkości zapisu w poszczególnych dokumentach lub indeksach.
Skalowanie wymaga fragmentowania.
  • Skalowanie do około 200 000 jednoczesnych połączeń i 1000 zapisów na sekundę w jednej bazie danych. Skalowanie poza ten zakres wymaga fragmentowania danych w wielu bazach danych.
  • Brak lokalnych limitów szybkości zapisu poszczególnych fragmentów danych.

Bezpieczeństwo

Cloud Firestore [ PREFEROWANE ] Realtime Database
Reguły niekaskadowe, które łączą autoryzację i weryfikację.
  • Odczyty i zapisy z pakietów SDK do aplikacji mobilnych zabezpieczonych przez Cloud Firestore Security Rules.
  • Odczyty i zapisy z pakietów SDK serwera zabezpieczonych przez Identity and Access Management (IAM).
  • Reguły nie są stosowane 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 się nie powiedzie.
Kaskadowy język reguł, który oddziela autoryzację od weryfikacji.

Ceny

Oba rozwiązania są dostępne w abonamentach Spark i Blaze.

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

Cloud Firestore obsługuje miesięczne budżety i alerty, dzięki czemu nie wydasz więcej, niż chcesz.

Dowiedz się więcej o abonamentach Cloud Firestore.

Opłaty są naliczane tylko za przepustowość i miejsce na dane, ale według wyższej stawki.

Dowiedz się więcej o abonamentach Realtime Database.

Używaj zarówno Cloud Firestore, jak i Realtime Database

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

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

Chcesz wybrać bazę danych?

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