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

Firebase oferuje 2 bazy danych dokumentów dostępne dla klientów w chmurze. Nowym klientom zalecamy rozpoczęcie korzystania z Cloud Firestore:

  • Cloud Firestore to zalecana baza danych dokumentów klasy korporacyjnej zgodna z formatem JSON , której ufa ponad 600 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. Oferuje też synchronizację klientów 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 z niskim opóźnieniem oraz ograniczoną skalowalnością.

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

Po rozważeniu powyższych kluczowych kwestii możesz być gotowy(-a) do wybrania bazy 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 formatu JSON.
  • Złożone, hierarchiczne dane można łatwiej porządkować na dużą skalę za pomocą podkolekcji w dokumentach.
  • Wymaga mniejszej denormalizacji i spłaszczania danych.

Więcej informacji o Cloud Firestore modelu danych.

Przechowuje dane jako jedno duże drzewo JSON.
  • Proste dane można bardzo łatwo przechowywać.
  • Złożone, hierarchiczne dane trudniej jest porządkować na dużą skalę.

Więcej informacji o Realtime Database modelu danych.

Obsługa w czasie rzeczywistym i offline

Obie bazy danych mają pakiety SDK w czasie rzeczywistym, które są dostosowane do urządzeń mobilnych, i obsługują lokalne przechowywanie danych w aplikacjach działających w trybie offline.

Cloud Firestore [ PREFERRED ] Realtime Database
Obsługa offline w przypadku klientów Apple, Android i internetowych. Obsługa offline w przypadku klientów Apple i Android.

Obecność

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

Cloud Firestore [ PREFERRED ] Realtime Database
Nieobsługiwane natywnie. Możesz korzystać z obsługi obecności w Realtime Database's synchronizując Cloud Firestore i Realtime Database za pomocą Cloud Functions Zobacz Tworzenie obecności w Cloud Firestore. Obsługa obecności.

Wykonywanie zapytań

Możesz pobierać, sortować i filtrować dane z dowolnej bazy danych za pomocą zapytań.

Cloud Firestore [ PREFERRED ] Realtime Database
Zapytania indeksowane z sortowaniem i filtrowaniem złożonym.
  • W jednym zapytaniu możesz łączyć filtry oraz filtrowanie i sortowanie według właściwości.
  • 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ść 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 obu jednocześnie.
  • Zapytania są domyślnie głębokie: zawsze zwracają całe poddrzewo.
  • Zapytania mogą uzyskiwać dostęp do danych na dowolnym poziomie 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 [ PREFERRED ] Realtime Database
Zaawansowane operacje zapisu i transakcji.
  • Operacje zapisu danych za pomocą operacji ustawiania i aktualizowania oraz zaawansowanych transformacji, takich jak operatory tablicowe i liczbowe.
  • 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 rozwiązanie regionalne i wieloregionowe , które skaluje się automatycznie.
  • Rozwiązanie o niskim opóźnieniu, w którym typowy czas odpowiedzi nie przekracza 30 ms.
  • Przechowuje dane w wielu centrach danych w różnych regionach, co zapewnia globalną skalowalność i wysoką niezawodność.
  • Dostępne w konfiguracjach regionalnych i wieloregionowych na całym świecie.
Więcej informacji o charakterystyce wydajności i niezawodności Cloud Firestore znajdziesz w umowie SLA.
Realtime Database to rozwiązanie regionalne.
  • Dostępna w konfiguracjach regionalnych. Bazy danych są ograniczone do dostępności strefowej w regionie.
  • Bardzo niskie opóźnienie, w którym typowy czas odpowiedzi nie przekracza 10 ms. Idealna opcja do częstej synchronizacji stanu.
Więcej informacji o charakterystyce wydajności i niezawodności Realtime Database znajdziesz w umowie SLA.

Czas działania

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

Skalowalność

Cloud Firestore [ PREFERRED ] Realtime Database
Skalowanie jest automatyczne.
  • Skaluje się całkowicie automatycznie. Brak ograniczeń dotyczących połączeń równoczesnych lub ogólnej liczby zapisów w bazie danych na sekundę.
  • Ma ograniczenia dotyczące liczby zapisów w poszczególnych dokumentach lub indeksach.
Skalowanie wymaga fragmentowania.
  • Możesz skalować do około 200 tys. połączeń równoczesnych i 1000 zapisów na sekundę w jednej bazie danych. Skalowanie poza ten zakres wymaga fragmentowania danych w wielu bazach danych.
  • Brak lokalnych ograniczeń dotyczących liczby zapisów w poszczególnych elementach 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 są zabezpieczone przez Cloud Firestore Security Rules.
  • Odczyty i zapisy z pakietów SDK serwera są zabezpieczone 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 zakoń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, usunięcie) oraz, w mniejszym stopniu, za przepustowość i miejsce na dane.

Cloud Firestore obsługuje budżety miesięczne i alerty , które pomagają uniknąć przekroczenia limitu wydatków.

Więcej informacji o Cloud Firestore abonamentach.

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

Więcej informacji o Realtime Database abonamentach.

Korzystanie z Cloud Firestore 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 swojej aplikacji, pamiętaj o opisanych wcześniej różnicach.

Więcej informacji o funkcjach dostępnych w obu 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.