Jaka jest różnica między Cloud Firestore a Firebase Realtime Database?

252

Google właśnie wydało Cloud Firestore, nową bazę danych dokumentów dla aplikacji.

Czytam dokumentację, ale nie widzę wielu różnic między Firestore a Firebase DB.

Chodzi przede wszystkim o to, że Firestore korzysta z dokumentów i kolekcji, które umożliwiają łatwe korzystanie z zapytań w porównaniu do Firebase, która jest tradycyjną bazą danych noSQL z bazą JSON.

Chciałbym dowiedzieć się nieco więcej o ich różnicach, zastosowaniach lub o tym, czy Firestore właśnie zastąpił Firebase DB?

Francisco Durdin Garcia
źródło
1
Odczyty są szybsze w Firestore, Zapisy są szybsze w bazie danych Firebase Real Time
DragonFire

Odpowiedzi:

380

Napisałem więc cały post na blogu o tym właśnie pytaniu i polecam sprawdzić go (lub oficjalną dokumentację ), aby uzyskać bardziej kompletną odpowiedź.

Ale jeśli chcesz szybkiego (-ish) podsumowania, oto on:

Lepsze zapytania i bardziej uporządkowane dane - Podczas gdy baza danych w czasie rzeczywistym jest po prostu gigantycznym drzewem JSON, Cloud Firestore jest nieco bardziej uporządkowany. Wszystkie twoje dane składają się z dokumentów (które są w zasadzie magazynami o kluczowej wartości) i kolekcji (które są zbiorami dokumentów). Dokumenty często będą również wskazywać na podkolekcje, które zawierają inne dokumenty, które same mogą zawierać inne dokumenty i tak dalej.

Te uporządkowane dane pomagają na dwa sposoby. Po pierwsze, wszystkie zapytania są płytkie , co oznacza, że ​​możesz poprosić o dokument bez pobierania wszystkich danych poniżej. Oznacza to, że możesz przechowywać dane w sposób hierarchiczny w sposób, który jest dla ciebie bardziej sensowny, bez konieczności martwienia się o utrzymywanie płytkiej bazy danych. Po drugie, masz mocniejsze zapytania. Na przykład możesz teraz wyszukiwać w wielu polach bez konieczności tworzenia pól „kombi”, które łączą (i denormalizują) dane z innych części bazy danych. W niektórych przypadkach Cloud Firestore po prostu uruchamia te zapytania bezpośrednio, aw innych przypadkach automatycznie tworzy i utrzymuje dla Ciebie indeksy.

Zaprojektowany do skalowania - Cloud Firestore będzie mógł skalować lepiej niż Baza danych w czasie rzeczywistym. Należy pamiętać, że zapytania są skalowane do rozmiaru zestawu wyników, a nie zestawu danych. Wyszukiwanie pozostanie szybkie, bez względu na to, jak duży może być Twój zestaw danych.

Łatwiejsze ręczne pobieranie danych - tak jak w czasie rzeczywistym, możesz skonfigurować nasłuchiwanie w Cloud Firestore, aby przesyłać strumieniowo zmiany w czasie rzeczywistym. Ale jeśli nie chcesz tego rodzaju zachowania, a po prostu chcesz prostego wywołania „pobierz moje dane”, Cloud Firestore ma to również i jest wbudowane jako podstawowy przypadek użycia. (Są znacznie lepsze niż oncepołączenia w Realtime Database-land)

Obsługa wielu regionów - Zasadniczo oznacza to większą niezawodność, ponieważ dane są udostępniane w wielu centrach danych jednocześnie. Ale nadal masz silną spójność, co oznacza, że ​​zawsze możesz wykonać zapytanie i mieć pewność, że otrzymujesz najnowszą wersję swoich danych.

Inny model wyceny - podczas gdy baza danych w czasie rzeczywistym pobiera opłaty głównie na podstawie pamięci lub przepustowości sieci, Cloud Firestore pobiera opłaty głównie na podstawie liczby wykonywanych operacji . Czy będzie lepiej, czy gorzej? To zależy od twojej aplikacji.

Jeśli chcesz zasilić aplikację z wiadomościami, turową grę wieloosobową lub coś w rodzaju własnej wersji Stack Overflow, Cloud Firestore prawdopodobnie będzie wyglądać całkiem korzystnie z punktu widzenia cen. W przypadku aplikacji do rysowania grupowego w czasie rzeczywistym, w której wysyłasz wiele aktualizacji na sekundę do wielu osób, prawdopodobnie będzie ona droższa niż baza danych w czasie rzeczywistym.

Dlaczego nadal możesz chcieć korzystać z bazy danych w czasie rzeczywistym - sprowadza się to do kilku powodów. 1) Całe to „prawdopodobnie będzie tańsze dla aplikacji, które wykonują wiele częstych aktualizacji”, o czym wspomniałem wcześniej, 2) Jest już od dłuższego czasu i zostało przetestowane w walce przez tysiące aplikacji, 3) Ma lepsze opóźnienie a gdy potrzebujesz czegoś z niezawodnie niskim opóźnieniem, aby czuć się w czasie rzeczywistym, Baza danych w czasie rzeczywistym może działać lepiej.

W przypadku większości nowych aplikacji zalecamy sprawdzenie Cloud Firestore. Ale jeśli masz aplikację, która jest już w bazie danych w czasie rzeczywistym, naprawdę nie polecam przełączania tylko ze względu na przełączanie, chyba że masz ku temu ważny powód.

Mam nadzieję, że to pomaga!

Todd Kerpelman
źródło
2
Dziękuję bardzo Todd! Widziałem ogłoszenie, ale nie ten! Jestem całkowicie zakochany w Firestore, niestety teraz będę musiał przepisać cały RxJava opakowany dla tego xD.
Francisco Durdin Garcia
1
W jaki sposób pasuje Google Cloud Datastore? Naiwnie wydaje się, że ma wiele wspólnego z Cloud Firestore. @ToddKerpelman
Jon G
2
Ma to wiele wspólnego z Cloud Datastore. Największą różnicą jest integracja z Firebase, dzięki czemu masz dostęp do mobilnych i internetowych zestawów SDK wraz z rodzimym trybem offline, a także funkcjami synchronizacji w czasie rzeczywistym. Cloud Datastore doskonale nadaje się do tworzenia dużych serwerów po stronie serwera, w których zarządzasz własnym połączeniem z aplikacją, np. Prowadząc własną stronę internetową w App Engine lub przez Compute / Container Engine.
Todd Kerpelman
2
Co tak naprawdę oznacza „silna spójność”? Twierdzenie CAP mówi, że „ nie ma pewności, że otrzymujesz najnowszą wersję swoich danych” w rozproszonym i dostępnym środowisku. Spójność, dostępność, tolerancja partycji => wybierz 2.
AjahnCharles
1
@ToddKerpelman Każda szansa na porównanie Cloud Firestore / Cloud Datastore. Obie wydają się okropnie podobne.
TheAddonDepot
63

Możesz przeczytać cały artykuł tutaj: https://medium.com/@beingrahul/firebase-cloud-firestore-vs-firebase-realtime-database-931d4265d4b0

Firebase Realtime databasektóry ma strukturę drzewa JSON, ale Cloud Firestorejest przechowywany w dokumentach (stanowiących parę par klucz-wartość) i formatach kolekcji (która jest zbiorem dokumentów).

Więcej danych o strukturze

Baza danych w czasie rzeczywistym przechowywała dane w drzewie JSON, ale Cloud Firestore przechowywał dane w dokumentach, które są bardzo podobne do JSON. wprowadź opis zdjęcia tutaj

W Cloud FireStore dokumenty mogą łączyć podkolekcje i zagnieżdżone obiekty (takie jak „telefon” na powyższym rysunku), z których oba mogą zawierać prymitywne pola, takie jak ciągi znaków (takie jak „nazwa”, „e-mail” itp. Na powyższym rysunku) lub złożone obiekty, takie jak listy.

Lepsze zapytania

  • W bazie danych w czasie rzeczywistym możemy sortować lub filtrować właściwość tylko w jednym zapytaniu, a nie zarówno sortować, jak i filtrować właściwość, natomiast w Cloud FireStore możesz łączyć filtry i łączyć filtrowanie i sortowanie według właściwości w jednym zapytaniu.
  • Jeśli chcesz pobierać dane w kolejności malejącej, Cloud FireStore jest bardzo przydatny, ale dla bazy danych w czasie rzeczywistym nie jest dostępna funkcja zapytania. wprowadź opis zdjęcia tutaj
  • Możesz także połączyć wiele metod „gdzie”, aby utworzyć bardziej szczegółowe zapytania (logiczne AND) w Cloud FireStore. wprowadź opis zdjęcia tutaj

Skalowalność

Cloud Firestore będzie mógł skalować się lepiej niż Baza danych w czasie rzeczywistym. Należy zauważyć, że wydajność zapytania jest proporcjonalna do wielkości zestawu wyników, a nie zestawu danych. Wyszukiwanie pozostanie szybkie, bez względu na to, jak duży może być Twój zestaw danych.

Ręczne pobieranie danych

Możemy słuchać danych w czasie rzeczywistym w Cloud FireStore, takich jak baza danych w czasie rzeczywistym, ale w Cloud FireStore, możemy również pobierać dane ręcznie (jeśli chcesz mieć dane tylko raz).

Bezpieczeństwo

W bazie danych w czasie rzeczywistym musimy osobno sprawdzać poprawność danych przy użyciu reguły sprawdzania poprawności, ale w Cloud FireStore sprawdzanie poprawności danych odbywa się automatycznie.

Zapisywanie danych

Możemy wykonać wiele operacji w jednej partii i wypełnić je atomowo, w dowolnej kombinacji set(), update()lub delete()metod. wprowadź opis zdjęcia tutaj

cennik

W bazie danych w czasie rzeczywistym opłaty są naliczane tylko za przepustowość i przestrzeń dyskową, ale według wyższej stawki. Będąc w Cloud FireStore, opłaty są naliczane głównie za operacje wykonywane w bazie danych (odczyt, zapis, usuwanie), a przy niższym tempie - przepustowość i pojemność.

0xAliHn
źródło
12
Byłoby miło połączyć oryginalny artykuł: medium.com/@beingrahul/...
Salem Ouerdani
1
Czy możesz wyjaśnić bardziej szczegółowo, co oznacza „sprawdzanie poprawności danych odbywa się automatycznie”?
SoEzPz
12

Powody, dla których warto wybrać Cloud Firestore zamiast Realtime Database

To ulepszona wersja

Baza danych Firebase wystarczyła do podstawowych aplikacji. Ale nie był wystarczająco silny, aby sprostać złożonym wymaganiom. Właśnie dlatego wprowadzono Cloud Firestore. Oto kilka głównych zmian.

  • Podstawowa struktura plików została ulepszona.
  • Wsparcie offline dla klienta WWW.
  • Obsługuje bardziej zaawansowane zapytania.
  • Operacje zapisu i transakcji są atomowe.
  • Poprawa niezawodności i wydajności
  • Skalowanie nastąpi automatycznie.
  • Będzie bardziej bezpieczny.

cennik

W Cloud Firestore stawki spadły, chociaż obciążają głównie operacje wykonywane w bazie danych wraz z przepustowością i pamięcią. Możesz także ustawić dzienny limit wydatków. Oto pełne informacje na temat fakturowania.

Przyszłe plany Google

Kiedy odkryli wady w bazie danych w czasie rzeczywistym, stworzyli inny produkt zamiast ulepszać stary. Chociaż nie ma wiarygodnych danych ujawniających ich obecną pozycję w bazie danych w czasie rzeczywistym, nadszedł czas, aby pomyśleć, że prawdopodobnie zostanie porzucony.



Bertram Gilfoyle
źródło
2

Zaproponuj również link z Google: Firebase Real-Time Database vs. FireStore

Fragment z dokumentów Google, mała sumamia tutaj:

FireBase Real Time DB jest oparty na JSON bez bazy danych SQL, przeznaczony do aplikacji mobilnych, regionalnych i zwykle używany do przechowywania i synchronizacji danych między użytkownikami / urządzeniami w czasie rzeczywistym / bardzo niskim opóźnieniem.

FireStore to JSON „jak” NOSQL DB przeznaczony do utrzymywania wysokiej współbieżności, globalnej, łatwo skalowalnej trwałości, zaprojektowany dla wszystkich klientów (nie tylko aplikacji mobilnych) z typowymi przypadkami użycia, takimi jak śledzenie zasobów, analizy w czasie rzeczywistym, budowanie katalogów produktów detalicznych, użytkownik społecznościowy profil, tabele wyników gier, aplikacje czatowe itp.

TechFree
źródło