Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Scegli un database: Cloud Firestore o Realtime Database

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

  • Cloud Firestore è il database più recente di Firebase per lo sviluppo di app 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 scala ulteriormente rispetto al database in tempo reale.

  • Realtime Database è il database originale di Firebase. È una soluzione efficiente ea 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, quindi paga 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 del database
La mia app utilizza un database per ...
Principalmente sincronizzazione dei dati, con query di base.
Se non hai bisogno di query, ordinamento 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 per lavagna digitale, ti consigliamo Realtime Database .
Da centinaia di GB a TB di dati che vengono letti molto più spesso di quanto vengano modificati.
Per set di dati molto grandi e quando sono spesso necessarie operazioni batch, consigliamo Cloud Firestore .
Modello di 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 raccolte e documenti strutturati, consigliamo 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 nelle app di e-commerce, 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 ...
Spesso.
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 di database
Nei miei progetti individuali, devo usare ...
Molti database, ad esempio un database per ogni grande cliente.
Poiché ti consente di aggiungere più database a un singolo progetto Firebase, consigliamo Realtime Database .
Un solo database.
Se hai bisogno di un singolo database, ti consigliamo Cloud Firestore o Realtime Database .

Quali sono altre cose importanti da considerare?

Dopo aver riflettuto sulle considerazioni chiave precedenti, potresti essere pronto per scegliere un database . 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 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 memorizzare 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 mobile-first in tempo reale ed entrambi supportano l'archiviazione dei dati locale per le app pronte per l'uso offline.

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

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.

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. Vedi Creazione di presenza in Cloud Firestore .

Interrogare

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

Database in tempo reale Cloud Firestore
Query approfondite con funzionalità limitate di ordinamento e filtro .
  • Le query possono ordinare o filtrare su una proprietà, ma non su entrambe.
  • Le query sono profonde per impostazione predefinita: restituiscono sempre l'intero sottoalbero.
  • Le query possono accedere ai dati con qualsiasi granularità, fino ai valori dei singoli nodi foglia nell'albero JSON.
  • Le query non richiedono un indice; tuttavia, le prestazioni di determinate query diminuiscono con la crescita del set di dati.
Query indicizzate con ordinamento e filtraggio composti.
  • È possibile concatenare filtri e combinare filtri e ordinamento su una proprietà in una singola 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 alle dimensioni del set di risultati, non al set di dati.

Scritture e transazioni

Database in tempo reale Cloud Firestore
Operazioni di scrittura e transazione di base.
  • Scrivere dati tramite operazioni di impostazione e aggiornamento.
  • Le transazioni sono atomiche su una sottostruttura di dati specifica.
Operazioni avanzate di scrittura e transazione.

Affidabilità e prestazioni

Database in tempo reale Cloud Firestore
Realtime Database è una soluzione regionale.
  • Disponibile nelle configurazioni regionali. I database sono limitati alla disponibilità zonale all'interno di una regione.
  • Latenza estremamente bassa, opzione ideale per frequenti sincronizzazioni di stato.
Ulteriori informazioni sulle prestazioni e sulle caratteristiche di affidabilità del database in tempo reale nell'accordo sul livello di servizio .
Cloud Firestore è una soluzione regionale e multiregionale scalabile automaticamente.
  • Ospita i tuoi dati su più data center in regioni distinte, garantendo scalabilità globale e forte affidabilità.
  • Disponibile in configurazioni regionali o multiregionali in tutto il mondo.
Ulteriori informazioni sulle caratteristiche di affidabilità e prestazioni di Cloud Firestore nell'accordo sul livello di servizio .

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 ciò richiede il partizionamento orizzontale dei dati su più database.
  • Nessun limite locale sulla velocità di scrittura su singole parti di dati.
Il ridimensionamento è automatico.
  • Scala completamente automaticamente. Attualmente, i limiti di scalabilità sono circa 1 milione di connessioni simultanee e 10.000 scritture / secondo. Abbiamo in programma di aumentare questi limiti in futuro.
  • Ha limiti alle velocità di scrittura su singoli documenti o indici.

Sicurezza

Database in tempo reale Cloud Firestore
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 mobili protetti dalle regole di sicurezza di Cloud Firestore .
  • Legge e scrive dagli SDK del server protetti da Identity and Access Management (IAM) .
  • Le regole non si sovrappongono a meno che non utilizzi un carattere jolly.
  • Le regole possono limitare le query: se i risultati di una query possono contenere dati a cui l'utente non ha accesso, l'intera query non riesce.

Prezzi

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

Database in tempo reale Cloud Firestore
Addebiti solo per la larghezza di banda e l'archiviazione , ma a un tasso più elevato.

Ulteriori informazioni sui piani tariffari di Realtime Database .

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

Cloud Firestore supporta ilimiti di spesa giornalieri per i progetti di Google App Engine, per assicurarti di non superare i costi con cui ti trovi bene.

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 memorizzare gli stessi tipi di dati e le librerie client funzionano in modo simile. Tieni presente le differenze delineate sopra se decidi di utilizzare entrambi i database nella tua app .

Ulteriori informazioni sulle funzionalità disponibili sia in Realtime Database che in Cloud Firestore .

Pronto a scegliere un database?

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