了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

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

Firebase oferuje dwa oparte na chmurze, dostępne dla klienta rozwiązania bazodanowe, które obsługują synchronizację danych w czasie rzeczywistym:

  • Cloud Firestore to najnowsza baza danych Firebase do tworzenia aplikacji mobilnych. Opiera się na sukcesach bazy danych czasu rzeczywistego z nowym, bardziej intuicyjnym modelem danych. Cloud Firestore oferuje również bogatsze, szybsze zapytania i większe możliwości skalowania niż baza danych czasu rzeczywistego.

  • Baza danych czasu rzeczywistego to oryginalna baza danych Firebase. Jest to wydajne rozwiązanie o niskich opóźnieniach dla aplikacji mobilnych, które wymagają synchronizacji stanów między klientami w czasie rzeczywistym.

Którą bazę danych poleca Firebase?

Twój wybór rozwiązania bazodanowego będzie zależał od wielu czynników, ale jeśli chodzi o niektóre funkcje, możemy doradzić, która baza danych jest dla Ciebie odpowiednia.

Oba rozwiązania oferują:

  • Zestawy SDK zorientowane na klienta, bez serwerów do wdrożenia i utrzymania
  • Aktualizacje w czasie rzeczywistym
  • Bezpłatna warstwa, a następnie płać za to, czego używasz

Kluczowe kwestie

Poza doskonałymi podstawowymi funkcjami wspólnymi dla obu baz danych, zastanów się, w jaki sposób niektóre lub wszystkie wymienione poniżej kwestie wpłyną na powodzenie Twoich aplikacji.

Rola bazy danych
Moja aplikacja korzysta z bazy danych dla...
Przede wszystkim synchronizacja danych z podstawowymi zapytaniami.
Jeśli nie potrzebujesz zaawansowanych zapytań, sortowania i transakcji, polecamy Bazę Danych Czasu Rzeczywistego .
Zaawansowane zapytania, sortowanie i transakcje.
Jeśli potrzebujesz skomplikowanych interakcji ze swoimi danymi, na przykład w aplikacjach e-commerce, polecamy Cloud Firestore .
Operacje na danych
Użycie bazy danych przez moją aplikację wygląda tak...
Kilka GB lub mniej danych, które często się zmieniają.
Jeśli Twoja aplikacja będzie wysyłać strumień drobnych aktualizacji, na przykład w aplikacji do tablicy cyfrowej, zalecamy Bazę danych czasu rzeczywistego .
Setki GB do TB danych, które są odczytywane znacznie częściej niż zmieniane.
W przypadku bardzo dużych zbiorów danych i często potrzebnych operacji wsadowych zalecamy Cloud Firestore .
Model danych
Wolę uporządkować moje dane jako...
Proste drzewo JSON.
W przypadku nieustrukturyzowanych danych JSON zalecamy Realtime Database .
Dokumenty zorganizowane w kolekcje.
W przypadku ustrukturyzowanych dokumentów i kolekcji zalecamy Cloud Firestore .
Dostępność
Moje wymagania dotyczące dyspozycyjności to...
Niezwykle wysoka gwarancja dostępności na poziomie 99,999%.
Jeśli dostępność ma ogromne znaczenie, na przykład w aplikacjach e-commerce, polecamy Cloud Firestore .
Gwarancja nieprzerwanej pracy przez co najmniej 99,95%.
Gdy akceptowalna jest bardzo wysoka, ale nie krytyczna dostępność, zalecamy Cloud Firestore lub Realtime Database .
Zapytania offline dotyczące danych lokalnych
Moja aplikacja będzie musiała wykonywać zapytania na urządzeniach z ograniczoną łącznością lub bez łączności...
Często.
Aby uzyskać zaawansowane możliwości wykonywania zapytań dotyczących danych lokalnych, gdy użytkownik jest offline, zalecamy Cloud Firestore .
Rzadko lub nigdy.
Jeśli oczekujesz, że Twoi użytkownicy będą stale online, zalecamy Cloud Firestore lub Realtime Database .
Liczba instancji bazy danych
W moich indywidualnych projektach muszę wykorzystywać...
Wiele baz danych, na przykład baza danych dla każdego głównego klienta.
Ponieważ umożliwia dodanie wielu baz danych do jednego projektu Firebase, zalecamy Realtime Database .
Tylko jedna baza danych.
Jeśli potrzebujesz jednej bazy danych, zalecamy Cloud Firestore lub Realtime Database .

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

Po przemyśleniu poprzednich kluczowych kwestii możesz być gotowy do wyboru 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 to bazy danych NoSQL.

Baza danych czasu rzeczywistego 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 bazy danych czasu rzeczywistego .

Przechowuje dane jako zbiory dokumentów.
  • Proste dane są łatwe do przechowywania w dokumentach, które są bardzo podobne do JSON.
  • Złożone, hierarchiczne dane są łatwiejsze do organizowania na dużą skalę przy użyciu podkolekcji w dokumentach.
  • Wymaga mniejszej denormalizacji i spłaszczania danych.

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

Wsparcie w czasie rzeczywistym i offline

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

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

Obecność

Wiedza o tym, kiedy klient jest online, a kiedy offline, może być przydatna. Baza danych czasu rzeczywistego Firebase może rejestrować stan połączenia klienta i zapewniać aktualizacje za każdym razem, gdy zmienia się stan połączenia klienta.

Baza danych czasu rzeczywistego Cloud Firestore
Obsługiwana obecność. Nieobsługiwane natywnie. Możesz wykorzystać obsługę bazy danych czasu rzeczywistego w zakresie obecności, synchronizując Cloud Firestore i bazę danych czasu rzeczywistego za pomocą Cloud Functions. Zobacz Budowanie obecności w Cloud Firestore .

zapytanie

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

Baza danych czasu rzeczywistego Cloud Firestore
Głębokie zapytania z ograniczoną funkcjonalnością 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 zestawu danych.
Indeksowane zapytania z sortowaniem i filtrowaniem złożonym .
  • Możesz łączyć filtry i łączyć filtrowanie i sortowanie według właściwości w jednym zapytaniu.
  • Zapytania są płytkie: zwracają tylko dokumenty w określonej kolekcji lub grupie kolekcji i nie zwracają danych podkolekcji.
  • Zapytania muszą zawsze zwracać całe dokumenty.
  • Zapytania są domyślnie indeksowane: wydajność zapytania jest proporcjonalna do rozmiaru zestawu wyników, a nie zestawu danych.

Zapisy i transakcje

Baza danych czasu rzeczywistego Cloud Firestore
Podstawowe operacje zapisu i transakcji.
  • Zapisuj dane za pomocą operacji ustawiania i aktualizowania.
  • Transakcje są atomowe w określonym poddrzewie danych.
Zaawansowane operacje zapisu i transakcji.
  • Zapisuj operacje na danych poprzez operacje ustawiania i aktualizowania, a także zaawansowane transformacje, takie jak operatory tablicowe i numeryczne.
  • Transakcje mogą atomowo odczytywać i zapisywać dane z dowolnej części bazy danych.

Niezawodność i wydajność

Baza danych czasu rzeczywistego Cloud Firestore
Baza danych czasu rzeczywistego to rozwiązanie regionalne.
  • Dostępne w konfiguracjach regionalnych. Bazy danych są ograniczone do dostępności strefowej w regionie.
  • Niezwykle niskie opóźnienie, 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 .
Cloud Firestore to regionalne i wieloregionalne rozwiązanie, które skaluje się automatycznie.
  • Przechowuje Twoje dane w wielu centrach danych w różnych regionach, zapewniając globalną skalowalność i wysoką 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 .

Skalowalność

Baza danych czasu rzeczywistego Cloud Firestore
Skalowanie wymaga fragmentacji.
  • Skaluj do około 200 000 jednoczesnych połączeń i 1000 zapisów na sekundę w jednej bazie danych. Skalowanie wykraczające poza to wymaga dzielenia danych na fragmenty w wielu bazach danych.
  • Brak lokalnych ograniczeń szybkości zapisu poszczególnych fragmentów danych.
Skalowanie jest automatyczne.
  • Skaluje się całkowicie automatycznie. Obecnie 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 szybkości zapisu do poszczególnych dokumentów lub indeksów.

Bezpieczeństwo

Baza danych czasu rzeczywistego Cloud Firestore
Kaskadowy język reguł oddzielający autoryzację od walidacji. 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 nakładają się 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.

cennik

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

Baza danych czasu rzeczywistego Cloud Firestore
Opłaty tylko za przepustowość i pamięć masową , ale według wyższej stawki.

Przeczytaj więcej o planach cenowych bazy danych czasu rzeczywistego .

Opłaty dotyczą głównie operacji wykonywanych w bazie danych (odczyt, zapis, usuwanie) oraz, po niższej stawce, opłaty za przepustowość i pamięć masową.

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

Przeczytaj więcej o planach cenowych Cloud Firestore .

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. Pamiętaj o różnicach opisanych powyżej, jeśli zdecydujesz się używać obu baz danych w swojej aplikacji .

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 zdecydować się na rozwiązanie bazodanowe Firebase. Teraz możesz dowiedzieć się, jak dodać bazę danych do projektów Firebase.