Scegli un database: Cloud Firestore o Realtime Database

Firebase offre due soluzioni di database accessibili dal client basate su cloud che supportano la sincronizzazione dei dati in tempo reale:

  • Nuvola FireStore è il nuovo database Firebase per lo sviluppo di applicazioni mobili. Si basa sui successi del Realtime Database con un nuovo modello di dati più intuitivo. Cloud Firestore offre anche query più ricche e veloci e offre una scalabilità superiore rispetto al Realtime Database.

  • Database in tempo reale è il database originale di Firebase. È una soluzione efficiente e a bassa latenza per le app mobili che richiedono stati sincronizzati tra i client in tempo reale.

Quale database consiglia Firebase?

La scelta della soluzione di database dipenderà da molti fattori, ma quando si tratta di determinate funzionalità, possiamo fornire consigli su quale database è giusto per te.

Entrambe le soluzioni offrono:

  • SDK client-first, senza server da distribuire e mantenere
  • Aggiornamenti in tempo reale
  • Livello gratuito, poi paghi per quello che usi

Considerazioni chiave

Oltre alle ottime funzionalità di base comuni a entrambi i database, pensa a come alcune o tutte le considerazioni elencate di seguito influenzeranno il successo delle tue app.

Ruolo della banca dati
La mia app utilizza un database per...
Principalmente sincronizzazione dei dati, con query di base.
Se non avete bisogno di interrogazione avanzata, l'ordinamento e le transazioni, si consiglia in tempo reale del database.
Query, ordinamento e transazioni avanzate.
Se avete bisogno di complesse interazioni con i vostri dati, per esempio in applicazioni e-commerce, si consiglia di cloud Firestore.
Operazioni sui dati
L'utilizzo del database della mia app sembra...
Pochi GB o meno di dati che cambiano frequentemente.
Se la tua applicazione sarà l'invio di un flusso di aggiornamenti piccoli, come ad esempio in un'applicazione lavagna digitale, si consiglia in tempo reale del database.
Da centinaia di GB a TB di dati letti molto più spesso di quanto non vengano modificati.
Per molto grandi insiemi di dati, e quando sono spesso necessarie operazioni batch, si consiglia di cloud Firestore.
Modello di dati
Preferisco strutturare i miei dati come...
Un semplice albero JSON.
Per JSON dati non strutturati, si consiglia in tempo reale del database.
Documenti organizzati in raccolte.
Per i documenti strutturati e collezioni, si consiglia di cloud Firestore.
Disponibilità
Le mie esigenze di disponibilità sono...
Garanzia di uptime estremamente elevata del 99,999%.
Se la disponibilità è della massima importanza, ad esempio in applicazioni e-commerce, si consiglia di cloud Firestore.
Una garanzia di almeno il 99,95% di uptime.
Quando molto alto ma non critico la disponibilità è accettabile, si consiglia sia cloud Firestore o in tempo reale del database.
Query offline su dati locali
La mia app dovrà eseguire query su dispositivi con connettività limitata o assente...
Frequentemente.
Per sofisticate funzionalità di interrogazione sui dati locali quando l'utente non è in linea, si consiglia di cloud Firestore.
Raramente o mai.
Se vi aspettate che i vostri utenti siano costantemente on-line, si consiglia di cloud Firestore o in tempo reale del database.
Numero di istanze del database
Nei miei progetti individuali, devo utilizzare...
Molti database, ad esempio un database per ogni grande cliente.
Dal momento che consente di aggiungere più database per un singolo progetto Firebase, si consiglia in tempo reale del database.
Solo un unico database.
Se avete bisogno di un unico database, si consiglia sia cloud Firestore o in tempo reale del database.

Quali sono altre cose importanti da considerare?

Dopo aver riflettuto sui principali considerazioni precedenti, si potrebbe essere pronti a scegliere una banca dati . Se stai ancora valutando pro e contro, questa sezione copre altre differenze tra Cloud Firestore e Realtime Database.

Modello di dati

Sia Realtime Database che Cloud Firestore sono database NoSQL.

Database in tempo reale Cloud Firestore
Memorizza i dati come un unico albero JSON di grandi dimensioni.
  • I dati semplici sono molto facili da memorizzare.
  • I dati complessi e gerarchici sono più difficili da organizzare su larga scala.

Ulteriori informazioni sul modello di dati di database in tempo reale .

Memorizza i dati come raccolte di documenti.
  • I dati semplici sono facili da archiviare nei documenti, che sono molto simili a JSON.
  • I dati complessi e gerarchici sono più facili da organizzare su larga scala, utilizzando sottoraccolte all'interno dei documenti.
  • Richiede meno denormalizzazione e appiattimento dei dati.

Ulteriori informazioni sul modello di dati cloud Firestore .

Supporto in tempo reale e offline

Entrambi dispongono di SDK in tempo reale per dispositivi mobili ed entrambi supportano l'archiviazione di dati locali per app pronte per la modalità offline.

Database in tempo reale Cloud Firestore
Supporto offline per client iOS e Android. Supporto offline per client iOS, Android e Web.

Presenza

Può essere utile sapere quando un cliente è online o offline. Firebase Realtime Database può registrare lo stato della connessione del client e fornire aggiornamenti ogni volta che cambia lo stato della connessione del client.

Database in tempo reale Cloud Firestore
Presenza supportata. Non supportato in modo nativo. Puoi sfruttare il supporto di Realtime Database per la presenza sincronizzando Cloud Firestore e Realtime Database utilizzando Cloud Functions. Vedere presenza Costruire in Cloud Firestore .

interrogazione

Recupera, ordina e filtra i dati da entrambi i database tramite query.

Database in tempo reale Cloud Firestore
Query profondi con limitate smistamento e funzionalità di filtraggio .
  • Le query possono ordinare o filtrare su una proprietà, ma non entrambi.
  • Le query sono profonde per impostazione predefinita: restituiscono sempre l'intero sottoalbero.
  • Le query possono accedere ai dati con qualsiasi granularità, fino ai singoli valori dei nodi foglia nell'albero JSON.
  • Le query non richiedono un indice; tuttavia, le prestazioni di alcune query diminuiscono con l'aumento del set di dati.
Query indicizzate con mescola ordinare e filtrare .
  • È possibile concatenare i filtri e combinare il filtraggio e l'ordinamento su una proprietà in un'unica query.
  • Le query sono superficiali: restituiscono solo documenti in una particolare raccolta o gruppo di raccolte e non restituiscono dati di sottoraccolta.
  • Le query devono sempre restituire interi documenti.
  • Le query sono indicizzate per impostazione predefinita: le prestazioni delle query sono proporzionali alla dimensione del set di risultati, non al set di dati.

Scritture e transazioni

Database in tempo reale Cloud Firestore
Operazioni di base di scrittura e transazione. Operazioni avanzate di scrittura e transazione.
  • Operazioni di dati di scrittura attraverso operazioni insiemistiche e aggiornamento nonché trasformazioni avanzate come matrice e operatori numerici.
  • Le transazioni possono atomicamente leggere e scrivere i dati da qualsiasi parte del database.

Affidabilità e prestazioni

Database in tempo reale Cloud Firestore
Realtime Database è una soluzione regionale.
  • Disponibile in configurazioni regionali. I database sono limitati alla disponibilità zonale all'interno di un'area.
  • Latenza estremamente bassa, opzione ideale per frequenti sincronizzazioni di stato.
Per saperne di più sulle prestazioni del database in tempo reale e le caratteristiche di affidabilità nel Service Level Agreement .
Cloud Firestore è una soluzione regionale e multiregionale che si ridimensiona automaticamente.
  • Ospita i tuoi dati in più data center in regioni distinte, garantendo scalabilità globale e forte affidabilità.
  • Disponibile in configurazioni regionali o multiregionali in tutto il mondo.
Per saperne di più su Cloud Firestore prestazioni e affidabilità caratteristiche del Service Level Agreement .

Scalabilità

Database in tempo reale Cloud Firestore
Il ridimensionamento richiede lo sharding.
  • Scala fino a circa 200.000 connessioni simultanee e 1.000 scritture/secondo in un singolo database. Il ridimensionamento oltre richiede la condivisione dei dati su più database.
  • Nessun limite locale sulle velocità di scrittura su singoli pezzi di dati.
Il ridimensionamento è automatico.
  • Scala in modo completamente automatico. Attualmente, i limiti di scalabilità sono di circa 1 milione di connessioni simultanee e 10.000 scritture/secondo. Abbiamo in programma di aumentare questi limiti in futuro.
  • Ha dei limiti sui tassi di scrittura per singoli documenti o indici.

Sicurezza

Database in tempo reale Cloud Firestore
Linguaggio delle regole a cascata che separa autorizzazione e convalida. Regole non a cascata che combinano autorizzazione e convalida.
  • Legge e scrive da SDK per dispositivi mobili protetti da cloud Firestore Regole di sicurezza .
  • Legge e scrive da SDK server protetto da Identity and Access Management (IAM) .
  • Le regole non si sovrappongono a meno che non si utilizzi un carattere jolly.
  • Le regole possono vincolare le query: se i risultati di una query potrebbero contenere dati a cui l'utente non ha accesso, l'intera query ha esito negativo.

Prezzi

Entrambe le soluzioni sono disponibili sul Spark e piani tariffari Blaze .

Database in tempo reale Cloud Firestore
Oneri solo per la larghezza di banda e lo stoccaggio, ma ad un tasso superiore.

Per saperne di più piani tariffari base di dati in tempo reale .

Oneri principalmente sulle operazioni eseguite nel database (lettura, scrittura, cancellazione) e, a un tasso inferiore, larghezza di banda e di archiviazione.

Nuvola Firestore supporta quotidianamente i limiti di spesa per i progetti App Engine, per assicurarsi che non si va oltre i costi sei a tuo agio con.

Per saperne di più piani tariffari Nuvola Firestore .

Utilizzo di Cloud Firestore e Realtime Database

Puoi utilizzare entrambi i database all'interno della stessa app o progetto Firebase. Entrambi i database NoSQL possono memorizzare gli stessi tipi di dati e le librerie client funzionano in modo simile. Tenete a mente le differenze di cui sopra, se si decide di utilizzare entrambi i database nella vostra applicazione .

Per saperne di più sulle funzioni disponibili in entrambi i database in tempo reale e cloud Firestore .

Pronto a scegliere un database?

Speriamo che questo confronto ti abbia aiutato a stabilirti su una soluzione di database Firebase. Ora puoi imparare come aggiungere un database ai tuoi progetti Firebase.