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ż once
połą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!