Scegli un database: Cloud Firestore o Realtime Database

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

  • Cloud Firestore è il database di documenti compatibile con JSON di livello enterprise consigliato, utilizzato da oltre 250.000 sviluppatori. È adatto per applicazioni con modelli di dati completi 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 preso in considerazione gli aspetti 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 [ PREFERITO ] 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 complessi e gerarchici sono più facili da organizzare su larga scala utilizzando le sottocollezioni all'interno dei documenti.
  • Richiede meno denormalizzazione e appiattimento dei dati.

Scopri di più sul modello di dati Cloud Firestore.

Memorizza i dati come un'unica grande struttura ad 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 e ottimizzati per il mobile e supportano lo spazio di archiviazione dei dati locale per le app offline.

Cloud Firestore [ PREFERITO ] Realtime Database
Assistenza offline per client Apple, Android e web. Assistenza 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 del client e fornire aggiornamenti ogni volta che lo stato della connessione del client cambia.

Cloud Firestore [ PREFERITO ] 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.

Eseguire query

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

Cloud Firestore [ PREFERITO ] Realtime Database
Query indicizzate con ordinamento e filtri combinati.
  • Puoi concatenare i filtri e combinare il filtro e l'ordinamento in una proprietà in una singola query.
  • Le query sono poco approfondite: restituiscono solo i documenti di una determinata raccolta o di un determinato gruppo di raccolte e non restituiscono i dati delle 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.
Query approfondite con funzionalità di ordinamento e filtro limitate.
  • Le query possono ordinare o filtrare in base a 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 nella struttura ad albero JSON.
  • Le query non richiedono un indice, ma le prestazioni di determinate query peggiorano con la crescita del set di dati.

Operazioni di scrittura e transazioni

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

Affidabilità e prestazioni

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

Tempo di attività

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

Scalabilità

Cloud Firestore [ PREFERITO ] Realtime Database
La scalabilità è automatica.
  • Si scala completamente automaticamente. I limiti di scalabilità sono di circa 1 milione di connessioni simultanee e 10.000 scritture al secondo. Abbiamo in programma di aumentare questi limiti in futuro.
  • Ha limiti sulle frequenze di scrittura per singoli documenti o indici.
La scalabilità richiede lo sharding.
  • Scalabilità fino a circa 200.000 connessioni simultanee e 1000 scritture/secondo in un singolo database. Per scalare oltre questo limite, è necessario eseguire lo sharding dei dati su più database.
  • Nessun limite locale per le frequenze di scrittura dei singoli dati.

Sicurezza

Cloud Firestore [ PREFERITO ] Realtime Database
Regole non gerarchiche che combinano autorizzazione e convalida.
  • Letture e scritture da SDK mobile protetti da Cloud Firestore Security Rules.
  • Letture e scritture dagli SDK del server protetti da Identity and Access Management (IAM).
  • Le regole non vengono applicate in modo ricorsivo, a meno che non 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 non va a buon fine.
Lingua delle regole con struttura a cascata che separa l'autorizzazione e la convalida.

Prezzi

Entrambe le soluzioni sono disponibili nei prezzi dei piani Spark e Blaze.

Cloud Firestore [ PREFERITO ] Realtime Database
Gli addebiti si basano principalmente sulle operazioni eseguite nel database (lettura, scrittura, eliminazione) e, a una tariffa inferiore, sulla larghezza di banda e sullo 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.

Vengono addebitati solo per larghezza di banda e spazio di archiviazione, ma a un tasso più elevato.

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 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 sia in Cloud Firestore.

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