Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Scegli un database: Cloud Firestore o Database in tempo reale

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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

  • Cloud Firestore è il database più recente di Firebase per lo sviluppo di app per dispositivi mobili. Si basa sui successi del database in tempo reale con un nuovo modello di dati più intuitivo. Cloud Firestore offre anche query più ricche e veloci e scalabilità maggiori rispetto al database in tempo reale.

  • Realtime Database è 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 tua scelta della soluzione di database dipenderà da molti fattori, ma quando si tratta di determinate funzionalità, possiamo darti 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, quindi paga per quello che usi

Considerazioni chiave

Oltre alle fantastiche funzionalità di base comuni a entrambi i database, pensa a come una o tutte le considerazioni elencate di seguito influiranno sul successo delle tue app.

Ruolo della banca dati
La mia app utilizza un database per...
Principalmente la sincronizzazione dei dati, con query di base.
Se non hai bisogno di query, ordinamenti e transazioni avanzate, ti consigliamo Realtime Database .
Interrogazione, ordinamento e transazioni avanzate.
Se hai bisogno di interazioni complesse con i tuoi dati, ad esempio nelle app di e-commerce, ti consigliamo Cloud Firestore .
Operazioni sui dati
L'utilizzo del database della mia app è simile a...
Pochi GB o meno di dati che cambiano frequentemente.
Se la tua app invierà un flusso di piccoli aggiornamenti, ad esempio in un'app di lavagna digitale, ti consigliamo Realtime Database .
Da centinaia di GB a TB di dati che vengono letti molto più spesso di quanto non vengano modificati.
Per set di dati molto grandi e quando sono necessarie operazioni in batch, consigliamo Cloud Firestore .
Modello dati
Preferisco strutturare i miei dati come...
Un semplice albero JSON.
Per i dati JSON non strutturati, consigliamo Realtime Database .
Documenti organizzati in raccolte.
Per documenti strutturati e raccolte, consigliamo Cloud Firestore .
Disponibilità
Le mie esigenze di disponibilità sono...
Garanzia di operatività estremamente elevata del 99,999%.
Se la disponibilità è della massima importanza, ad esempio nelle app di e-commerce, ti consigliamo Cloud Firestore .
Una garanzia di almeno il 99,95% di uptime.
Quando è accettabile una disponibilità molto elevata ma non critica, consigliamo Cloud Firestore o Realtime Database .
Query offline sui dati locali
La mia app dovrà eseguire query su dispositivi con connettività limitata o assente...
Frequentemente.
Per funzionalità di query sofisticate sui dati locali quando l'utente è offline, consigliamo Cloud Firestore .
Raramente o mai.
Se ti aspetti che i tuoi utenti siano costantemente online, ti consigliamo Cloud Firestore o Realtime Database .
Numero di istanze del database
Nei miei progetti individuali, ho bisogno di usare...
Molti database, ad esempio un database per ogni cliente principale.
Poiché ti consente di aggiungere più database a un singolo progetto Firebase, ti consigliamo Realtime Database .
Solo un unico database.
Se hai bisogno di un singolo database, ti consigliamo Cloud Firestore o Realtime Database .

Quali sono alcune altre cose importanti da considerare?

Dopo aver riflettuto sulle precedenti considerazioni chiave, potresti essere pronto per scegliere un database . Se stai ancora valutando i pro e i contro, questa sezione illustra altre differenze tra Cloud Firestore e Realtime Database.

Modello dati

Sia Realtime Database che Cloud Firestore sono database NoSQL.

Database in tempo reale CloudFirestore
Memorizza i dati come un grande albero JSON.
  • 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 del database in tempo reale .

Memorizza i dati come raccolte di documenti.
  • I dati semplici sono facili da archiviare in 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 di Cloud Firestore .

Supporto in tempo reale e offline

Entrambi hanno SDK mobile-first in tempo reale ed entrambi supportano l'archiviazione locale dei dati per le app pronte per l'offline.

Database in tempo reale CloudFirestore
Supporto offline per client Apple e Android. Supporto offline per client Apple, 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 lo stato della connessione del client cambia.

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

Interrogazione

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

Database in tempo reale CloudFirestore
Query approfondite con funzionalità limitate di ordinamento e filtraggio .
  • Le query possono ordinare o filtrare una proprietà, ma non entrambe.
  • 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 del nodo foglia nell'albero JSON.
  • Le query non richiedono un indice; tuttavia, le prestazioni di determinate query diminuiscono con l'aumentare del set di dati.
Query indicizzate con ordinamento e filtri composti.
  • Puoi concatenare i filtri e combinare filtraggio e ordinamento su una proprietà in un'unica query.
  • Le query sono poco profonde: restituiscono solo documenti in una particolare raccolta o gruppo di raccolte e non restituiscono dati di sottoraccolte.
  • Le query devono sempre restituire documenti interi.
  • 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 CloudFirestore
Operazioni di scrittura e transazione di base.
  • Scrivere dati tramite operazioni di impostazione e aggiornamento.
  • Le transazioni sono atomiche su un sottoalbero di dati specifico.
Operazioni avanzate di scrittura e transazione.

Affidabilità e prestazioni

Database in tempo reale CloudFirestore
Realtime Database è una soluzione regionale.
  • Disponibile nelle configurazioni regionali. I database sono limitati alla disponibilità di zona all'interno di una regione.
  • Latenza estremamente bassa, opzione ideale per la sincronizzazione frequente dello stato.
Maggiori informazioni sulle prestazioni e le caratteristiche di affidabilità di Realtime Database nel Contratto sul livello di servizio .
Cloud Firestore è una soluzione regionale e multiregionale che scala automaticamente.
  • Ospita i tuoi dati in più data center in regioni distinte, garantendo scalabilità globale e una forte affidabilità.
  • Disponibile in configurazioni regionali o multiregionali in tutto il mondo.
Scopri di più sulle prestazioni e le caratteristiche di affidabilità di Cloud Firestore nel Contratto sul livello di servizio .

Scalabilità

Database in tempo reale CloudFirestore
Il ridimensionamento richiede lo sharding.
  • Scala fino a circa 200.000 connessioni simultanee e 1.000 scritture/secondo in un unico database. Il ridimensionamento oltre a ciò richiede il frazionamento dei dati su più database.
  • Nessun limite locale sulla 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 limiti sulle velocità di scrittura su singoli documenti o indici.

Sicurezza

Database in tempo reale CloudFirestore
Linguaggio delle regole a cascata che separa l'autorizzazione e la convalida. Regole non a cascata che combinano autorizzazione e convalida.
  • Legge e scrive da SDK per dispositivi mobili protetti dalle regole di sicurezza di Cloud Firestore .
  • Legge e scrive da SDK del server protetti da Identity and Access Management (IAM) .
  • Le regole non si sovrappongono a meno che non si utilizzi un carattere jolly.
  • Le regole possono limitare 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 nei piani tariffari Spark e Blaze .

Database in tempo reale CloudFirestore
Addebiti solo per larghezza di banda e spazio di archiviazione , ma a una tariffa più elevata.

Ulteriori informazioni sui piani tariffari di Realtime Database .

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

Cloud Firestore supporta i limiti di spesa giornalieri per i progetti App Engine, per assicurarti di non superare i costi con cui sei a tuo agio.

Ulteriori informazioni sui piani tariffari di Cloud 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 archiviare gli stessi tipi di dati e le librerie client funzionano in modo simile. Tieni presente le differenze descritte sopra se decidi di utilizzare entrambi i database nella tua app .

Scopri di più sulle funzionalità disponibili sia in Realtime Database che in Cloud Firestore .

Pronto a scegliere un database?

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