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

Firebase oferuje dwie oparte na chmurze, dostępne dla klienta bazy danych dokumentów. Nowym klientom zalecamy rozpoczęcie od Cloud Firestore:

  • Cloud Firestore to zalecana baza danych dokumentów klasy korporacyjnej, zgodna z JSON, której zaufało ponad 250 000 programistów. Jest odpowiedni do aplikacji z bogatymi modelami danych wymagającymi możliwości wykonywania zapytań, skalowalności i wysokiej dostępności. Oferuje także synchronizację klientów z niskimi opóźnieniami i dostęp do danych w trybie offline.

  • Baza danych czasu rzeczywistego to klasyczna baza danych Firebase JSON. Nadaje się do aplikacji z prostymi modelami danych wymagającymi prostych wyszukiwań i synchronizacji z niskimi opóźnieniami przy ograniczonej skalowalności.

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

Po przemyśleniu poprzednich kluczowych kwestii możesz być gotowy na wybór bazy danych . Jeśli nadal zastanawiasz się nad zaletami i wadami, w tej sekcji omówiono inne różnice między Cloud Firestore a bazą danych czasu rzeczywistego.

Model danych

Zarówno baza danych czasu rzeczywistego, jak i Cloud Firestore są bazami danych NoSQL.

Preferowany Cloud Firestore Baza danych czasu rzeczywistego
Przechowuje dane jako zbiory dokumentów.
  • Proste dane można łatwo przechowywać w dokumentach, które są bardzo podobne do JSON.
  • Złożone, hierarchiczne dane można łatwiej organizować na dużą skalę, korzystając z 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 zorganizowania na dużą skalę.

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

Wsparcie w czasie rzeczywistym i offline

Obydwa mają mobilne pakiety SDK działające w czasie rzeczywistym i oba obsługują lokalne przechowywanie danych dla aplikacji gotowych do pracy w trybie offline.

Preferowany Cloud Firestore Baza danych czasu rzeczywistego
Wsparcie offline dla klientów Apple, Android i internetowych. Wsparcie offline dla klientów Apple i Android.

Obecność

Przydatna może być informacja, kiedy klient jest online, a kiedy offline. Baza danych Firebase Realtime Database może rejestrować stan połączenia klienta i dostarczać aktualizacje za każdym razem, gdy zmienia się stan połączenia klienta.

Preferowany Cloud Firestore Baza danych czasu rzeczywistego
Nieobsługiwane natywnie. Możesz wykorzystać obsługę obecności w bazie danych Realtime Database, synchronizując Cloud Firestore i bazę danych Realtime Database przy użyciu funkcji chmury. Zobacz Tworzenie obecności w Cloud Firestore . Obecność wspierana.

Zapytanie

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

Preferowany Cloud Firestore Baza danych czasu rzeczywistego
Zapytania indeksowane ze złożonym sortowaniem i filtrowaniem .
  • Możesz łączyć filtry i łą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 podkolekcji.
  • Zapytania muszą zawsze zwracać całe dokumenty.
  • Zapytania są domyślnie indeksowane: wydajność zapytań jest proporcjonalna do rozmiaru zestawu wyników, a nie zestawu danych.
Głębokie zapytania z ograniczonymi funkcjami sortowania i filtrowania .
  • Zapytania mogą sortować lub filtrować według właściwości, ale nie jednocześnie.
  • Zapytania są domyślnie głębokie: zawsze zwracają całe poddrzewo.
  • Zapytania mogą uzyskiwać dostęp do danych z dowolną szczegółowością, aż do poszczególnych wartości węzłów liści w drzewie JSON.
  • Zapytania nie wymagają indeksu; jednak wydajność niektórych zapytań spada wraz ze wzrostem zbioru danych.

Zapisy i transakcje

Preferowany Cloud Firestore Baza danych czasu rzeczywistego
Zaawansowane operacje zapisu i transakcji.
  • Zapisuj operacje na danych poprzez operacje ustawiania i aktualizacji, a także zaawansowane transformacje, takie jak operatory tablicowe i numeryczne.
  • Transakcje mogą atomowo odczytywać i zapisywać dane z dowolnej części bazy danych.
Podstawowe operacje zapisu i transakcji.

Niezawodność i wydajność

Preferowany Cloud Firestore Baza danych czasu rzeczywistego
Cloud Firestore to rozwiązanie regionalne i wieloregionowe, które skaluje się automatycznie.
  • Rozwiązanie o niskim opóźnieniu i typowym czasie reakcji nie większym niż 30 ms.
  • Przechowuje dane w wielu centrach danych w różnych regionach, zapewniając globalną skalowalność i dużą niezawodność.
  • Dostępne w konfiguracjach regionalnych lub wieloregionalnych na całym świecie.
Przeczytaj więcej o wydajności i niezawodności Cloud Firestore w Umowie dotyczącej poziomu usług .
Baza danych czasu rzeczywistego jest rozwiązaniem regionalnym.
  • Dostępne w konfiguracjach regionalnych. Bazy danych są ograniczone do dostępności strefowej w regionie.
  • Niezwykle małe opóźnienia, z typowym czasem reakcji nie większym niż 10 ms. Idealna opcja do częstej synchronizacji stanu.
Więcej informacji na temat wydajności i niezawodności bazy danych czasu rzeczywistego można znaleźć w umowie dotyczącej poziomu usług .

Czas pracy

Preferowany Cloud Firestore Baza danych czasu rzeczywistego
Niezwykle wysoka wydajność bez przestojów.
  • Typowy czas sprawności na poziomie 99,999%.
  • Jeśli dostępność jest najważniejsza, na przykład w aplikacjach e-commerce, użyj Cloud Firestore.
Wysoka wydajność bez przestojów.
  • Typowy czas sprawności na poziomie 99,95%.

Skalowalność

Preferowany Cloud Firestore Baza danych czasu rzeczywistego
Skalowanie odbywa się automatycznie.
  • Skaluje się całkowicie automatycznie. Limity skalowania wynoszą około 1 miliona jednoczesnych połączeń i 10 000 zapisów na sekundę. W przyszłości planujemy zwiększyć te limity.
  • Ma ograniczenia dotyczące szybkości zapisu do poszczególnych dokumentów lub indeksów.
Skalowanie wymaga fragmentowania.
  • Skaluj do około 200 000 jednoczesnych połączeń i 1000 zapisów na sekundę w jednej bazie danych. Skalowanie wykraczające poza ten poziom wymaga dzielenia danych na wiele baz danych.
  • Brak lokalnych ograniczeń szybkości zapisu poszczególnych fragmentów danych.

Bezpieczeństwo

Preferowany Cloud Firestore Baza danych czasu rzeczywistego
Reguły niekaskadowe, które łączą autoryzację i walidację.
  • Odczytuje i zapisuje z mobilnych zestawów SDK zabezpieczonych regułami bezpieczeństwa Cloud Firestore .
  • Odczytuje i zapisuje z zestawów SDK serwera zabezpieczonych przez zarządzanie tożsamością i dostępem (IAM) .
  • Reguły nie są kaskadowane, 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 oddzielający autoryzację od walidacji.

cennik

Obydwa rozwiązania dostępne są w planach cenowych Spark i Blaze .

Preferowany Cloud Firestore Baza danych czasu rzeczywistego
Opłaty są pobierane głównie za operacje wykonywane w bazie danych (odczyt, zapis, usuwanie) oraz, w niższych cenach, za przepustowość i miejsce na dane.

Cloud Firestore obsługuje dzienne limity wydatków na projekty App Engine, aby mieć pewność, że nie przekroczysz kosztów, które Ci odpowiadają.

Przeczytaj więcej o planach cenowych Cloud Firestore .

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

Przeczytaj więcej o planach cenowych Realtime Database .

Korzystanie z Cloud Firestore i bazy danych czasu rzeczywistego

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

Dowiedz się więcej o funkcjach dostępnych zarówno w Realtime Database , jak i Cloud Firestore .

Gotowy do wyboru bazy danych?

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