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

Firebase oferuje 2 dostępne dla klientów bazy danych dokumentów w chmurze. 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 tys. 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. Umożliwia też synchronizację klienta z niskim opóźnieniem i dostęp do danych offline.

  • Realtime Database to klasyczna baza danych Firebase w formacie JSON. Nadaje się do aplikacji z prostymi modelami danych, które wymagają prostych wyszukiwań i synchronizacji o niskim opóźnieniu z ograniczoną skalowalnością.

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

Po rozważeniu powyższych 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 a Realtime Database.

Model danych

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

Cloud Firestore [ PREFERRED ] Realtime Database
Przechowuje dane jako kolekcje dokumentów.
  • Proste dane można łatwo przechowywać w dokumentach, które są bardzo podobne do plików JSON.
  • Złożone, hierarchiczne dane można łatwiej porządkować na dużą skalę, korzystając z podzbiorów w dokumentach.
  • Wymaga mniejszej denormalizacji i spłaszczania danych.

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

Przechowuje dane w postaci jednego dużego drzewa JSON.
  • Proste dane są bardzo łatwe do przechowywania.
  • Złożone dane hierarchiczne trudniej jest porządkować na dużą skalę.

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

Pomoc w czasie rzeczywistym i offline

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

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

Obecność

Warto wiedzieć, kiedy klient jest online, a kiedy offline. FirebaseRealtime Database może rejestrować stan połączenia klienta i przesyłać aktualizacje za każdym razem, gdy stan połączenia klienta się zmieni.

Cloud Firestore [ PREFERRED ] Realtime Database
Nie jest obsługiwane natywnie. Możesz rozszerzyć obsługę obecności w Realtime Database, synchronizując Cloud Firestore i Realtime Database za pomocą Cloud Functions. Więcej informacji znajdziesz w artykule Tworzenie obecności w Cloud Firestore. Obsługuje obecność.

Wysyłanie zapytań

Pobieraj, sortuj i filtruj dane z obu baz danych za pomocą zapytań.

Cloud Firestore [ PREFERRED ] Realtime Database
Indeksowane zapytania z sortowaniem i filtrowaniem złożonym.
  • W jednym zapytaniu możesz łączyć filtry i opcje filtrowania oraz sortowania w usłudze.
  • Zapytania są płytkie: zwracają tylko dokumenty w określonej kolekcji lub grupie kolekcji, a 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.
Zaawansowane zapytania z ograniczonymifunkcjami sortowania i filtrowania.
  • Zapytania mogą sortować lub filtrować według właściwości, ale nie mogą robić 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ż po poszczególne wartości 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 [ PREFERRED ] Realtime Database
Zaawansowane operacje zapisu i transakcji.
  • Operacje zapisu danych za pomocą operacji ustawiania i aktualizowania, a także zaawansowanych przekształceń, takich 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ść

Cloud Firestore [ PREFERRED ] Realtime Database
Cloud Firestore to regionalne i obejmujące wiele regionów rozwiązanie, które automatycznie się skaluje.
  • Rozwiązanie o niskim czasie oczekiwania, w którym typowy czas odpowiedzi nie przekracza 30 ms.
  • Przechowuje 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 Cloud Firestorewydajności i niezawodności znajdziesz w Gwarancji jakości usług.
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, typowy czas odpowiedzi nie przekracza 10 ms. Idealna opcja do częstej synchronizacji stanu.
Więcej informacji o Realtime Databasewydajności i niezawodności znajdziesz w Gwarancji jakości usług.

Czas działania

Cloud Firestore [ PREFERRED ] Realtime Database
Bardzo wysoka wydajność w zakresie czasu działania.
  • Typowa dostępność na poziomie 99,999%.
  • Jeśli dostępność jest najważniejsza, np. w aplikacjach e-commerce, użyj Cloud Firestore.
Wysoka wydajność i dostępność
  • Typowa dostępność na poziomie 99,95%.

Skalowalność

Cloud Firestore [ PREFERRED ] Realtime Database
Skalowanie jest automatyczne.
  • Skaluje się całkowicie automatycznie. Limity skalowania wynoszą około 1 miliona połączeń równoczesnych i 10 000 operacji zapisu na sekundę. W przyszłości planujemy zwiększyć te limity.
  • Ma limity dotyczące szybkości zapisu w poszczególnych dokumentach lub indeksach.
Skalowanie wymaga dzielenia na partycje.
  • Skaluj do około 200 tys. jednoczesnych połączeń i 1000 zapisów na sekundę w jednej bazie danych. Aby zwiększyć skalę, musisz podzielić dane na wiele baz danych.
  • Brak lokalnych limitów szybkości zapisu poszczególnych elementów danych.

Bezpieczeństwo

Cloud Firestore [ PREFERRED ] Realtime Database
Reguły niekaskadowe, które łączą autoryzację i weryfikację.
  • Odczyty i zapisy z pakietów SDK na urządzenia mobilne zabezpieczone przez Cloud Firestore Security Rules.
  • Odczytywanie i zapisywanie danych z pakietów SDK serwera zabezpieczonych przez Identity and Access Management (IAM).
  • Reguły nie są kaskadowe, chyba że używasz 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 rozdziela autoryzację i weryfikację.

Ceny

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

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

Cloud Firestore obsługuje dzienne limity wydatków w przypadku App Engine projektów, aby mieć pewność, że nie przekroczysz akceptowalnych kosztów.

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.

Korzystanie z Cloud FirestoreRealtime Database

Możesz używać obu baz danych w ramach tej samej aplikacji lub 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żywać w aplikacji obu baz danych, pamiętaj o wcześniej opisanych różnicach.

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

Chcesz wybrać bazę danych?

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