欢迎参加我们将于 2022 年 10 月 18 日举办的 Firebase 峰会(线上线下同时进行),了解 Firebase 如何帮助您加快应用开发速度、满怀信心地发布应用并在之后需要时轻松地扩大应用规模。立即报名

Scegli un database: Cloud Firestore o Database in tempo reale

Firebase offre due soluzioni di database accessibili ai 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 mobili. Si basa sui successi di Realtime Database con un nuovo modello di dati più intuitivo. Cloud Firestore offre anche query più complete e veloci e una scalabilità maggiore rispetto al database in tempo reale.

  • Il database in tempo reale è il database originale di Firebase. È una soluzione efficiente e a bassa latenza per le app mobili che richiedono la sincronizzazione degli stati 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 straordinarie 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 sincronizzando i dati, con query di base.
Se non hai bisogno di query, ordinamento e transazioni avanzate, ti consigliamo Realtime Database .
Interrogazione avanzata, ordinamento e transazioni.
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 sembra...
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 .
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 frequentemente 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 documenti strutturati e raccolte, 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, 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 su 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 prevedi 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 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 unico database, ti consigliamo Cloud Firestore o Realtime Database .

Quali sono altre cose importanti da considerare?

Dopo aver riflettuto sulle precedenti considerazioni chiave, 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
Archivia 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 dispongono di SDK in tempo reale per dispositivi mobili ed entrambi supportano l'archiviazione dei dati in locale per le app pronte per l'offline.

Database in tempo reale Cloud Firestore
Supporto offline per client Apple 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 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. Consulta Creare la presenza in Cloud Firestore .

Interrogazione

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

Database in tempo reale Cloud Firestore
Query approfondite con funzionalità di ordinamento e filtraggio limitate.
  • Le query possono ordinare o filtrare una proprietà, ma non entrambi.
  • 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 dei nodi foglia nell'albero JSON.
  • Le query non richiedono un indice; tuttavia, le prestazioni di determinate query peggiorano all'aumentare del set di dati.
Query indicizzate con ordinamento e filtraggio composti.
  • È possibile concatenare i filtri e combinare il filtraggio e l'ordinamento su una proprietà in un'unica query.
  • Le query sono superficiali: restituiscono solo documenti in una particolare raccolta o gruppo di raccolta e non restituiscono dati di sottoraccolta.
  • 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 Cloud Firestore
Operazioni di base di scrittura e transazione.
  • Scrivere i dati tramite le 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 Cloud Firestore
Il database in tempo reale è una soluzione regionale.
  • Disponibile in configurazioni regionali. I database sono limitati alla disponibilità zonale all'interno di una regione.
  • Latenza estremamente bassa, opzione ideale per frequenti sincronizzazioni di stato.
Maggiori 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 multiregione che si ridimensiona automaticamente.
  • Ospita i tuoi dati in più data center in regioni distinte, garantendo scalabilità globale e forte affidabilità.
  • Disponibile in configurazioni regionali o multiregionali in tutto il mondo.
Maggiori informazioni sulle prestazioni e sulle caratteristiche di affidabilità di Cloud Firestore nel Service Level Agreement .

Scalabilità

Database in tempo reale Cloud Firestore
Il ridimensionamento richiede la partizionamento orizzontale.
  • Scala fino a circa 200.000 connessioni simultanee e 1.000 scritture al secondo in un unico database. Il ridimensionamento oltre ciò richiede il partizionamento orizzontale dei dati su più database.
  • Nessun limite locale alle velocità di scrittura su singoli dati.
Il ridimensionamento è automatico.
  • Ridimensiona in modo completamente automatico. Attualmente, 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 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 da server SDK protetti da Identity and Access Management (IAM) .
  • Le regole non si sovrappongono a meno che non utilizzi un carattere jolly.
  • Le regole possono vincolare le query: se i risultati di una query possono contenere dati a cui l'utente non ha accesso, l'intera query non riesce.

Prezzo

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

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

Ulteriori informazioni sui piani tariffari del database in tempo reale .

Addebiti principalmente sulle operazioni eseguite nel database (lettura, scrittura, eliminazione) e, a una tariffa inferiore, 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 con cui ti senti a tuo agio.

Ulteriori informazioni sui piani tariffari di Cloud Firestore .

Utilizzo di Cloud Firestore e database in tempo reale

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?

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