Qual è la differenza tra Cloud Firestore e Firebase Realtime Database?


252

Google ha appena rilasciato Cloud Firestore, il suo nuovo database dei documenti per le app.

Ho letto la documentazione ma non vedo molte differenze tra Firestore e Firebase DB.

Il punto principale è che Firestore utilizza documenti e raccolte che consentono un facile utilizzo delle query rispetto a Firebase, che è un database noSQL tradizionale con una base JSON.

Vorrei sapere qualcosa di più sulle loro differenze, o sui loro usi, o se Firestore è appena arrivato a sostituire Firebase DB?


1
Le letture sono più veloci su Firestore, le scritture sono più veloci su Firebase Real Time Database
DragonFire

Risposte:


380

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!


2
Grazie mille Todd! Ho visto il post dell'annuncio ma non questo! Sono totalmente innamorato di Firestore, purtroppo ora dovrò riscrivere tutto il mio RxJava avvolto per questo xD.
Francisco Durdin Garcia,

1
Come si inserisce Google Cloud Datastore? Ingenuamente sembra avere molte sovrapposizioni con Cloud Firestore. @ToddKerpelman
Jon G,

2
Ha molto in comune con Cloud Datastore. La differenza più grande è l'integrazione con Firebase, quindi hai accesso agli SDK mobili e web insieme a una modalità offline nativa, nonché alle funzionalità di sincronizzazione in tempo reale. Cloud Datastore è ideale per lo sviluppo lato server su larga scala in cui gestisci la tua connessione alla tua app, ad esempio eseguendo il tuo sito Web su App Engine o tramite Compute / Container Engine.
Todd Kerpelman,

2
Cosa significa veramente "forte coerenza"? Il teorema di CAP afferma che non puoi "essere certo che stai ricevendo l'ultima versione dei tuoi dati" in un ambiente distribuito e disponibile. Coerenza, disponibilità, tolleranza alla partizione => scegli 2.
AjahnCharles

1
@ToddKerpelman Ogni possibilità che tu faccia un confronto Cloud Firestore / Cloud Datastore. I due sembrano terribilmente simili.
TheAddonDepot l'

63

Puoi leggere l'intero articolo qui: https://medium.com/@beingrahul/firebase-cloud-firestore-vs-firebase-realtime-database-931d4265d4b0

Firebase Realtime databaseche viene strutturato come un albero JSON ma Cloud Firestoreviene archiviato i dati nei formati di documenti (che è un insieme di coppie chiave-valore) e di raccolta (che è una raccolta di documenti).

Più dati sulla struttura

Il database in tempo reale ha archiviato i dati nell'albero JSON, ma Cloud ha archiviato i dati archiviati in documenti molto simili a JSON. inserisci qui la descrizione dell'immagine

In Cloud FireStore, Documents può riunire sottocollezioni e oggetti nidificati (come "telefono" nella figura sopra), entrambi i quali possono includere campi primitivi come stringhe (come "nome", "e-mail" e così via nella figura sopra) o oggetti complessi come elenchi.

Interrogazioni migliori

  • Nel database in tempo reale, possiamo solo ordinare o filtrare una proprietà in una singola query, non sia ordinare sia filtrare su una proprietà mentre In Cloud FireStore puoi filtrare e combinare filtri e ordinamenti su una proprietà in una singola query.
  • Se desideri recuperare i dati in ordine decrescente, Cloud FireStore è molto utile per te ma per il database in tempo reale non è disponibile alcuna funzione di query. inserisci qui la descrizione dell'immagine
  • È inoltre possibile concatenare più metodi "where" per creare query più specifiche (AND logico) in Cloud FireStore. inserisci qui la descrizione dell'immagine

scalabilità

Cloud Firestore sarà in grado di scalare meglio del database in tempo reale. È importante notare che le prestazioni della query sono proporzionali 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

Possiamo ascoltare i dati in tempo reale nel Cloud FireStore come il database in tempo reale, ma nel Cloud FireStore, possiamo anche recuperare i dati manualmente (se si desidera qualsiasi dato solo una volta).

Sicurezza

Nel database in tempo reale, è necessario convalidare i dati separatamente utilizzando la regola di convalida, ma nel Cloud FireStore la convalida dei dati avviene automaticamente.

Scrivere i dati

Possiamo eseguire più operazioni come singolo batch e completarle atomicamente, con qualsiasi combinazione delle set(), update()o delete()metodi. inserisci qui la descrizione dell'immagine

Prezzi

Nel database in tempo reale, addebita solo la larghezza di banda e l'archiviazione, ma a una velocità maggiore. Mentre nel Cloud FireStore, gli addebiti si basano principalmente sulle operazioni eseguite nel database (lettura, scrittura, eliminazione) e, a una velocità inferiore, larghezza di banda e archiviazione.


12
Sarebbe bello collegare l'articolo originale: medium.com/@beingrahul/…
Salem Ouerdani

1
Puoi spiegare in modo più dettagliato cosa significa "convalida dei dati avviene automaticamente"?
SoEzPz,

12

Motivi per scegliere Cloud Firestore su Realtime Database

È una versione migliorata

Il database Firebase era sufficiente per le applicazioni di base. Ma non era abbastanza potente per gestire requisiti complessi. Ecco perché è stato introdotto Cloud Firestore. Ecco alcuni cambiamenti importanti.

  • La struttura dei file di base è stata migliorata.
  • Supporto offline per il client Web.
  • Supporta query più avanzate.
  • Le operazioni di scrittura e transazione sono atomiche.
  • Affidabilità e miglioramenti delle prestazioni
  • Il ridimensionamento sarà automatico.
  • Sarà più sicuro.

Prezzi

In Cloud Firestore, le tariffe sono diminuite anche se si carica principalmente per le operazioni eseguite nel database insieme a larghezza di banda e archiviazione. Puoi anche impostare un limite di spesa giornaliero. Ecco i dettagli completi sulla fatturazione.

Piani futuri di Google

Quando hanno scoperto i difetti con Real-time Database, hanno creato un altro prodotto anziché migliorare quello precedente. Anche se non ci sono dettagli affidabili che rivelino la loro attuale posizione nel Real-time Database, è il momento di iniziare a pensare che probabilmente verrà abbandonato.




2

Suggerisci link anche da Google: Firebase Real-time Database vs FireStore

Estratto da Google Documenti, un piccolo riassunto qui:

FireBase Real Time DB è basato su NO SQL DB basato su JSON, pensato per app mobili, regionali e utilizzato in genere per archiviare e sincronizzare i dati tra utenti / dispositivi in ​​tempo reale / latenza estremamente bassa.

FireStore è il DB NOSQL "come" di JSON pensato per persistenza globale, facilmente scalabile e con scalabilità automatica, progettato per tutti i client (non solo app mobili) con casi d'uso tipici come il monitoraggio delle risorse, analisi in tempo reale, creazione di cataloghi di prodotti al dettaglio, utenti social profilo, classifiche di gioco, applicazioni basate su chat ecc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.