Quindi ho scritto un intero post sul blog proprio su questa domanda e ti consiglio di dare un'occhiata (o la documentazione ufficiale ) per una risposta più completa.
Ma se vuoi il sommario (-ish) veloce, eccolo qui:
Migliore query e dati più strutturati - Mentre il Realtime Database è solo un gigantesco albero JSON, Cloud Firestore è un po 'più strutturato. Tutti i tuoi dati sono costituiti da documenti (che sono fondamentalmente negozi con valori-chiave) e raccolte (che sono raccolte di documenti). Inoltre, i documenti rimandano spesso a raccolte secondarie, che contengono altri documenti, che possono contenere altri documenti e così via.
Questi dati strutturati ti aiutano in due modi. Innanzitutto, tutte le query sono superficiali , il che significa che è possibile richiedere un documento senza acquisire tutti i dati sottostanti. Ciò significa che puoi conservare i tuoi dati in ordine gerarchico in un modo che abbia più senso per te senza doversi preoccupare di mantenere il database superficiale. In secondo luogo, hai query più potenti. Ad esempio, ora puoi eseguire query su più campi senza dover creare quei campi "combinati" che combinano (e denormalizzano) i dati di altre parti del database. In alcuni casi, Cloud Firestore eseguirà direttamente tali query e, in altri casi, creerà e gestirà automaticamente gli indici per te.
Progettato per adattarsi ridimensionamento: Cloud Firestore sarà in grado di scalare meglio del database in tempo reale. È importante notare che le query vengono ridimensionate in base alla dimensione del set di risultati, non al set di dati. Pertanto, la ricerca rimarrà veloce, indipendentemente dalla dimensione del set di dati.
Recupero manuale dei dati più semplice - Come il Realtime Database, è possibile configurare listener in Cloud Firestore per lo streaming in tempo reale delle modifiche. Ma se non vuoi quel tipo di comportamento e vuoi semplicemente una semplice chiamata "recupera i miei dati", Cloud Firestore ha anche quello, ed è integrato come un caso d'uso primario. (Sono molto meglio delonce
chiamate in Realtime Database-land)
Supporto multi-regione : ciò significa sostanzialmente maggiore affidabilità, poiché i dati vengono condivisi tra più data center contemporaneamente. Ma hai ancora una forte coerenza, il che significa che puoi sempre fare una query ed essere certo che stai ricevendo l'ultima versione dei tuoi dati.
Modello di prezzi diversi : mentre il database in tempo reale si carica principalmente in base allo spazio di archiviazione o alla larghezza di banda della rete, Cloud Firestore addebita principalmente in base al numero di operazioni eseguite. Sarà meglio o peggio? Dipende dalla tua app.
Per alimentare un'app di notizie, un gioco multiplayer a turni o qualcosa come la tua versione di Stack Overflow, Cloud Firestore probabilmente sembrerà piuttosto favorevole dal punto di vista dei prezzi. Per qualcosa come un'app di disegno di gruppo in tempo reale in cui stai inviando più aggiornamenti al secondo a più persone, probabilmente sarà più costoso del database in tempo reale.
Perché potresti ancora voler utilizzare il database in tempo reale - Dipende da alcuni motivi. 1) L'intero "probabilmente sarà più economico per le app che fanno molti aggiornamenti frequenti" cosa che ho menzionato in precedenza, 2) È in circolazione da molto tempo ed è stato testato in battaglia da migliaia di app, 3) Ha una latenza migliore e quando hai bisogno di qualcosa con una latenza affidabile per una sensazione in tempo reale, il database in tempo reale potrebbe funzionare meglio.
Per la maggior parte delle nuove app, ti consigliamo di dare un'occhiata a Cloud Firestore. Ma se disponi di un'app già presente nel database in tempo reale, non ti consiglio di cambiare solo per motivi di cambio, a meno che tu non abbia un motivo convincente per farlo.
Spero che aiuti!