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 250.000 sviluppatori. È adatto ad applicazioni con modelli di dati avanzati che richiedono query, scalabilità e alta disponibilità. Offre inoltre sincronizzazione dei client a bassa latenza e accesso ai dati offline.

  • Realtime Database è il database JSON Firebase classico. È adatto per 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

Realtime Database e Cloud Firestore sono entrambi database NoSQL.

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

Scopri di più sul modello di dati Cloud Firestore.

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

Scopri di più sul modello di dati Realtime Database.

Supporto in tempo reale e offline

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

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

Presence

Può essere utile sapere quando un cliente è online o offline. Firebase Realtime Database può registrare lo stato della connessione 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 sfruttare il supporto della presenza di Realtime Database sincronizzando Cloud Firestore e Realtime Database utilizzando Cloud Functions. Consulta Creare la presenza in Cloud Firestore. Presenza supportata.

Query

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

Cloud Firestore [ PREFERRED ] Realtime Database
Query indicizzate con ordinamento e filtraggio combinati.
  • Puoi concatenare i filtri e combinare il filtraggio e l'ordinamento di una proprietà in una singola query.
  • Le query sono superficiali: restituiscono solo i documenti in una determinata raccolta o gruppo di raccolte e non restituiscono i dati delle raccolte secondarie.
  • 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.
Query approfondite con funzionalità di ordinamento e filtro limitate.
  • Le query possono ordinare o filtrare in base a una proprietà, ma non entrambe.
  • Per impostazione predefinita, le query sono approfondite: 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, ma le prestazioni di alcune query peggiorano man mano che il set di dati cresce.

Operazioni di scrittura e transazioni

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

Affidabilità e prestazioni

Cloud Firestore [ PREFERRED ] Realtime Database
Cloud Firestore è una soluzione regionale e multiregionale che si adatta automaticamente.
  • Una soluzione a bassa latenza, con tempi di risposta tipici non superiori a 30 ms.
  • Ospita i tuoi dati in più data center in regioni distinte, garantendo scalabilità globale e grande affidabilità.
  • Disponibile in configurazioni a livello di una o più regioni 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 nelle 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
Prestazioni di uptime estremamente elevate.
  • Rendimento tipico dell'uptime del 99,999%.
  • Se la disponibilità è di massima importanza, ad esempio nelle app di e-commerce, utilizza Cloud Firestore.
Prestazioni di uptime elevate.
  • Rendimento tipico dell'uptime del 99,95%.

Scalabilità

Cloud Firestore [ PREFERRED ] Realtime Database
La scalabilità è automatica.
  • Scalabilità completamente automatica. I limiti di scalabilità sono circa 1 milione di connessioni simultanee e 10.000 scritture al secondo. Abbiamo in programma di aumentare questi limiti in futuro.
  • Ha limiti alle velocità di scrittura per singoli documenti o indici.
Lo scaling richiede lo sharding.
  • Scalabilità fino a circa 200.000 connessioni simultanee e 1000 scritture al secondo in un singolo database. Per scalare oltre questo limite, devi partizionare i dati in più database.
  • Nessun limite locale alle velocità di scrittura per i singoli dati.

Sicurezza

Cloud Firestore [ PREFERRED ] Realtime Database
Regole non a cascata che combinano autorizzazione e convalida.
  • Letture e scritture dagli SDK mobile protetti da Cloud Firestore Security Rules.
  • Letture e scritture dagli SDK server 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 va a buon fine.
Linguaggio delle regole a cascata che separa l'autorizzazione dalla convalida.

Prezzi

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

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

Cloud Firestore supporta i limiti di spesa giornalieri per i progetti App Engine, per assicurarti di non superare i costi che ritieni accettabili.

Scopri di più sui piani tariffari di Cloud Firestore.

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

Scopri di più sui piani tariffari di Realtime Database.

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 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.