Scegli un database: Cloud Firestore o Realtime Database

Firebase offre due database di documenti basati sul cloud e accessibili ai client. Consigliamo ai nuovi clienti di iniziare con Cloud Firestore:

  • Cloud Firestore è il database di documenti compatibile con JSON di livello aziendale consigliato , utilizzato da oltre 600.000 sviluppatori. È adatto ad applicazioni con modelli di dati avanzati che richiedono query, scalabilità e alta disponibilità. Offre anche la sincronizzazione dei client a bassa latenza e l'accesso ai dati offline.

  • Realtime Database è il database JSON classico di Firebase. È adatto ad applicazioni con modelli di dati semplici che richiedono ricerche semplici e sincronizzazione a bassa latenza con scalabilità limitata.

Quali sono altri aspetti importanti da considerare?

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

Modello dei dati

Sia Realtime Database che Cloud Firestore sono database NoSQL.

Cloud Firestore [ PREFERRED ] Realtime Database
Archivia i dati come raccolte di documenti.
  • I dati semplici sono facili da archiviare nei documenti, che sono molto simili a JSON.
  • I dati gerarchici complessi sono più facili da organizzare su larga scala utilizzando le sottoraccolte all'interno dei documenti.
  • Richiede una minore denormalizzazione e un minore appiattimento dei dati.

Scopri di più sul Cloud Firestore modello dei dati.

Archivia i dati come un unico albero JSON di grandi dimensioni.
  • I dati semplici sono molto facili da archiviare.
  • I dati gerarchici complessi sono più difficili da organizzare su larga scala.

Scopri di più sul Realtime Database modello dei dati.

Supporto in tempo reale e offline

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

Cloud Firestore [ PREFERRED ] Realtime Database
Supporto offline per client Apple, Android e web. Supporto offline per client Apple e Android.

Presenza

Può essere utile sapere quando un client è 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.

Cloud Firestore [ PREFERRED ] Realtime Database
Non supportato in modo nativo. Puoi basarti sul supporto di Realtime Database's per la presenza sincronizzando Cloud Firestore e Realtime Database utilizzando Cloud Functions . Consulta Creare la presenza in Cloud Firestore. Presenza supportata.

Fare query

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

Cloud Firestore [ PREFERRED ] Realtime Database
Query indicizzate con ordinamento e filtri composti.
  • Puoi concatenare i filtri e combinare il filtro e l'ordinamento di una proprietà in una singola query.
  • Le query sono superficiali: restituiscono solo i documenti in una determinata raccolta o in un gruppo di raccolte e non restituiscono i dati delle sottoraccolte.
  • Le query devono sempre restituire documenti interi.
  • Le query sono indicizzate per impostazione predefinita: il rendimento delle query è proporzionale a la dimensione del set di risultati, non al set di dati.
Query approfondite con funzionalità di ordinamento e filtro limitate
  • Le query possono ordinare o filtrare una proprietà, ma non entrambe.
  • Le query sono approfondite per impostazione predefinita: restituiscono sempre l'intero sottoalbero.
  • Le query possono accedere ai dati a qualsiasi granularità, fino ai singoli valori dei nodi foglia nell'albero JSON.
  • Le query non richiedono un indice; tuttavia, il rendimento di alcune query peggiora con la crescita del set di dati.

Operazioni di scrittura e transazioni

Cloud Firestore [ PREFERRED ] Realtime Database
Operazioni avanzate di scrittura e transazione.
  • Scrivi operazioni sui dati tramite le operazioni di impostazione e aggiornamento, nonché trasformazioni avanzate come gli operatori di array e numerici.
  • Le transazioni possono leggere e scrivere atomicamente i dati da qualsiasi parte del database.
Operazioni di scrittura e transazione di base.
  • Scrivi i dati tramite le operazioni di impostazione e aggiornamento.
  • Le transazioni sono atomiche su un sottoalbero di dati specifico.

Affidabilità e prestazioni

Cloud Firestore [ PREFERRED ] Realtime Database
Cloud Firestore è una soluzione regionale e multi-regionale che si adatta automaticamente.
  • Una soluzione a bassa latenza, con tempi di risposta tipici non superiori a 30 ms.
  • Ospita i dati in più data center in regioni distinte, garantendo scalabilità globale e forte affidabilità.
  • Disponibile in configurazioni regionali o multi-regionali in tutto il mondo.
Scopri di più sulle caratteristiche di rendimento e affidabilità di Cloud Firestore nell'accordo sul livello del servizio.
Realtime Database è una soluzione regionale.
  • Disponibile in configurazioni regionali. I database sono limitati alla disponibilità zonale all'interno di una regione.
  • Latenza estremamente bassa, con tempi di risposta tipici non superiori a 10 ms. Un' opzione ideale per la sincronizzazione frequente dello stato.
Scopri di più sulle caratteristiche di rendimento e affidabilità di Realtime Database nell'accordo sul livello del servizio.

Tempo di attività

Cloud Firestore [ PREFERRED ] Realtime Database
Rendimento del tempo di attività estremamente elevato.
  • Rendimento del tempo di attività tipico del 99,999%.
  • Se la disponibilità è di massima importanza, ad esempio nelle app di e-commerce, utilizza Cloud Firestore.
Rendimento del tempo di attività elevato.
  • Rendimento del tempo di attività tipico del 99,95%.

Scalabilità

Cloud Firestore [ PREFERRED ] Realtime Database
La scalabilità è automatica.
  • Si adatta in modo completamente automatico. Nessun limite alle connessioni simultanee o alla frequenza complessiva di scrittura/secondo del database.
  • Ha limiti alle frequenze di scrittura per singoli documenti o indici.
La scalabilità richiede lo sharding.
  • Esegui lo scale out fino a circa 200.000 connessioni simultanee e 1000 scritture/secondo in un singolo database. Per scalare oltre questo limite, devi eseguire lo sharding dei dati su più database.
  • Nessun limite locale alle frequenze di scrittura per singoli dati.

Sicurezza

Cloud Firestore [ PREFERRED ] Realtime Database
Regole non a cascata che combinano autorizzazione e convalida.
  • Le letture e le scritture dagli SDK mobile sono protette da Cloud Firestore Security Rules.
  • Le letture e le scritture dagli SDK server sono protette da Identity and Access Management (IAM).
  • Le regole non vengono applicate a cascata, a meno che non 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 non riesce.
Linguaggio delle regole a cascata che separa l'autorizzazione e la convalida.
  • Le letture e le scritture dagli SDK mobile sono protette da Realtime Database Security Rules.
  • Le regole di lettura e scrittura vengono applicate a cascata.
  • Convalida i dati separatamente utilizzando la regola validate.

Prezzi

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

Cloud Firestore [ PREFERRED ] Realtime Database
Addebiti principalmente per le operazioni eseguite nel database (lettura, scrittura, eliminazione) e, a una tariffa inferiore, per la larghezza di banda e lo spazio di archiviazione.

Cloud Firestore supporta budget e avvisi mensili per evitare di spendere più di quanto ti senti a tuo agio.

Scopri di più sui Cloud Firestore piani tariffari.

Addebiti solo per larghezza di banda e spazio di archiviazione, ma a una tariffa più elevata.

Scopri di più sui piani tariffari di Realtime Database.

Utilizzare Cloud Firestore e Realtime Database

Puoi utilizzare entrambi i database all'interno della stessa app o dello stesso 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 in precedenza 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?

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