Utilizza questo esempio reale di un'app di chat di base per valutare l'utilizzo e i costi di Cloud Firestore. Non si tratta di una stima esatta, ma può aiutarti a comprendere meglio come viene fatturato l'utilizzo di Cloud Firestore.
Panoramica: costi per livello di utilizzo
Per illustrare i costi tipici, prendiamo in considerazione un'app di chat di esempio, in cui gli utenti possono avviare chat con due o più partecipanti. Gli utenti possono visualizzare le loro chat attive in un elenco, leggere i messaggi e inviarli. Per questo esempio, utilizziamo i prezzi per la località multiregione Nord America (nello specifico nam5).
Premesse
Considera le seguenti ipotesi sull'utilizzo e sull'archiviazione dei dati:
- Gli utenti attivi giornalieri (DAU) rappresentano il 10% delle installazioni totali dell'app. Puoi stimare i costi giornalieri utilizzando una stima approssimativa degli utenti attivi giornalieri (DAU). Si tratta degli utenti che aprono e utilizzano attivamente la tua app in un determinato giorno, che in genere rappresentano un piccolo sottoinsieme delle installazioni totali dell'app. Per i calcoli riportati di seguito, abbiamo stimato che gli utenti attivi giornalieri corrispondano al 10% del numero totale di installazioni dell'app.
- Le dimensioni dei documenti sono relativamente ridotte. Consulta la tabella riportata di seguito per un'analisi dettagliata delle dimensioni dei documenti in base al tipo.
- I dati vengono archiviati solo per tre mesi. I messaggi nell'app di chat di esempio vengono archiviati solo per un periodo di tre mesi. Per tenere conto delle operazioni di eliminazione, i calcoli riportati di seguito mostrano un'eliminazione giornaliera per ogni scrittura giornaliera.
- Queste stime dei costi riflettono la maggior parte dei costi dell'app di esempio, ma non tutti. Abbiamo tenuto conto della maggior parte dei costi di un'app calcolando le operazioni, lo spazio di archiviazione per utenti e messaggi e il traffico in uscita per le attività utente più frequenti descritte in questa guida. Tuttavia, potresti dover tenere conto di costi aggiuntivi, a seconda della struttura dell'app e delle esigenze relative ai dati. Utilizza questo esempio per guidare i tuoi calcoli, ma consulta la pagina dei prezzi per spiegazioni più dettagliate dei costi di Cloud Firestore.
Per una suddivisione delle operazioni in base all'attività utente, consulta la sezione Suddivisione: utilizzo fatturato per attività utente.
Piccola
(50.000 installazioni)
Per 50.000 installazioni di app (5000 utenti attivi giornalieri): 12,14 $/mese
| Costi di lettura/scrittura | |||||
|---|---|---|---|---|---|
| Costo mensile totale = 11,10 $/mese | |||||
| 400.000 letture giornaliere totali | = | 50.000 letture senza costi + (350.000 letture a 0,06 $/100.000) | = | 3,5 * 0,06 $ | |
| 0,21$al giorno * 30 = 6,30 $ | |||||
| 100.000 scritture giornaliere totali | = | 20.000 scritture senza costi + (80.000 scritture a 0,18 $/100.000) | = | 0,8 * 0,18 $ | |
| 0,14 $ / giorno * 30 = 4,20 $ | |||||
| 100.000 eliminazioni giornaliere totali | = | 20.000 eliminazioni senza costi + (80.000 eliminazioni a 0,02 $/100.000) | = | 0,8 * 0,02 $ | |
| 0,02$al giorno * 30 = 0,60 $ | |||||
| Costi di archiviazione/networking | |||||||
|---|---|---|---|---|---|---|---|
| Costo mensile totale = 1,04 $/mese | |||||||
| 20 KB / DAU di traffico in uscita giornaliero * 5000 DAU | = | 100 MB di traffico in uscita giornaliero * 30 | = | 3 GB di traffico di rete in uscita al mese | |||
| 3 GB di traffico in uscita senza costi = senza costi1 | |||||||
| 15 kB di spazio di archiviazione giornaliero per i messaggi / DAU + 3 kB di spazio di archiviazione / installazione2 | = | 45 KB di spazio di archiviazione / DAU * 5000 DAU | = | 225 MB di spazio di archiviazione giornaliero / DAU * 30 | = | 6,75 GB di utilizzo dello spazio di archiviazione mensile | |
| 1 GB di spazio di archiviazione senza costi + (5,75 * 0,18 $) = 1,04 $ / mese | |||||||
1 10 GB di traffico di rete in uscita mensile sono senza costi per Cloud Firestore.
2 Poiché supponiamo che i DAU siano il 10% delle installazioni totali dell'app, questo numero rappresenta il numero totale di utenti che hanno installato la tua app.
Media
(1 mln di installazioni)
Per 1.000.000 di installazioni di app (100.000 utenti attivi giornalieri): 292,02 $/mese
| Costi di lettura/scrittura | |||||
|---|---|---|---|---|---|
| Costo mensile totale = 261,90 $/mese | |||||
| 8 milioni di letture giornaliere totali | = | 50.000 letture senza costi + (7,95 milioni di letture a 0,06 $/100.000) | = | 79,5 * 0,06 $ | |
| 4,77$al giorno * 30 = 143,10 $ | |||||
| 2 milioni di scritture giornaliere totali | = | 20.000 operazioni di scrittura senza costi + (1,98 milioni di operazioni di scrittura a 0,18 $/100.000) | = | 19,8 * 0,18 $ | |
| 3,56$al giorno * 30 = 106,80 $ | |||||
| 2 milioni di eliminazioni giornaliere totali | = | 20.000 eliminazioni senza costi + (1,98 milioni di eliminazioni a 0,02 $/100.000) | = | 19,8 * 0,02 $ | |
| 0,40$al giorno * 30 = 12,00 $ | |||||
| Costi di archiviazione/networking | |||||||
|---|---|---|---|---|---|---|---|
| Costo mensile totale = 30,12 $/mese | |||||||
| 20 KB / DAU di traffico in uscita giornaliero * 100.000 DAU | = | 2 GB di traffico in uscita giornaliero * 30 | = | 60 GB di traffico di rete in uscita al mese | |||
| 10 GB di traffico in uscita senza costi + (50 GB di traffico in uscita * 0,12 $/GB) = 6,00 $ / mese | |||||||
| 15 kB di spazio di archiviazione giornaliero per i messaggi / DAU + 3 kB di spazio di archiviazione / installazione1 | = | 45 kB di spazio di archiviazione / DAU * 100.000 DAU | = | 4,5 GB di spazio di archiviazione giornaliero / DAU * 30 | = | 135 GB di utilizzo dello spazio di archiviazione mensile | |
| 1 GB di spazio di archiviazione senza costi + (134 GB * 0,18 $/GB) = 24,12 $ / mese | |||||||
1 Poiché la nostra ipotesi è che gli utenti attivi giornalieri rappresentino il 10% delle installazioni totali dell'app, questo numero rappresenta il numero totale di utenti che hanno installato la tua app.
Grande
(10 mln di installazioni)
Per 10.000.000 di installazioni di app (1.000.000 di utenti attivi giornalieri): 2951,52 $
| Costi di lettura/scrittura | |||||
|---|---|---|---|---|---|
| Costo mensile totale = Totale: 2637,90 $/mese | |||||
| 80 milioni di letture giornaliere totali | = | 50.000 letture senza costi + (79,95 milioni di letture a 0,06 $/100.000) | = | 799,5 * 0,06 $ | |
| 47,97 $ / giorno * 30 = 1439,10 $ | |||||
| 20 milioni di scritture giornaliere totali | = | 20.000 scritture senza costi + (19,98 milioni di scritture a 0,18 $/100.000) | = | 199,8 * 0,18 $ | |
| 35,96 $ / giorno * 30 = 1078,80 $ | |||||
| 20 milioni di eliminazioni giornaliere totali | = | 20.000 eliminazioni senza costi + (19,98 milioni di eliminazioni a 0,02 $/100.000) | = | 199,8 * 0,02 $ | |
| 4,00$al giorno * 30 = 120,00 $ | |||||
| Costi di archiviazione/networking | |||||||
|---|---|---|---|---|---|---|---|
| Costo mensile totale = 313,62 $/mese | |||||||
| 20 KB / DAU di traffico in uscita giornaliero * 1 milione di DAU | = | 20 GB di traffico in uscita giornaliero * 30 | = | 600 GB di traffico di rete in uscita al mese | |||
| 10 GB di traffico in uscita senza costi + (590 GB di traffico in uscita * 0,12 $/GB) = 70,80 $ / mese | |||||||
| 15 kB di spazio di archiviazione giornaliero per i messaggi / DAU + 3 kB di spazio di archiviazione / installazione1 | = | 45 KB di spazio di archiviazione / DAU * 1 milione di DAU | = | 45 GB di spazio di archiviazione giornaliero / DAU * 30 | = | 1350 GB di utilizzo dello spazio di archiviazione mensile | |
| (1 GB di spazio di archiviazione senza costi) + (1349 GB * 0,18 $/GB) = 242,82 $ / mese | |||||||
1 Poiché supponiamo che gli utenti attivi giornalieri siano il 10% delle installazioni totali dell'app, questo numero rappresenta il numero totale di utenti che hanno installato la tua app.
Un vantaggio del modello di fatturazione di Cloud Firestore che vale la pena considerare è che paghi solo per ciò che utilizzi. Di conseguenza, la tua fattura potrebbe aumentare e diminuire in base al numero di DAU.
Suddivisione: utilizzo fatturato per attività utente
Per la nostra app di chat di esempio, la struttura dei dati è la seguente:
users/{userId}- Record utentegroups/{groupId}: chat tra 2 o più utentimessages/{messageId}: ogni messaggio in una chat.
Archiviazione dei dati
Per calcolare i costi di archiviazione dei dati dell'app, applica le seguenti ipotesi sulle dimensioni dei documenti:
| Raccolta | Dimensioni del documento (in transito) | Dimensioni del documento (su disco)* |
|---|---|---|
| utenti | 1 kB | 3 kB |
| gruppi | 0,5 kB | 1,5 kB |
| messaggi | 0,25 KB | 0,75 KB |
*Questo calcolo delle dimensioni include gli indici per i campi dei messaggi, ma presuppone che l'indicizzazione sia disattivata per i contenuti dei messaggi.
Inoltre, l'app memorizza solo i messaggi risalenti a un massimo di tre mesi prima, per ridurre i costi di archiviazione.
Per saperne di più sul calcolo dei costi di archiviazione, consulta Informazioni sui calcoli delle dimensioni dello spazio di archiviazione.
Operazioni
In genere, gli utenti completano le seguenti attività comuni nell'app:
- Visualizzare l'elenco delle chat:gli utenti aprono la schermata Home dell'app e visualizzano un elenco di chat (di gruppo e dirette) ordinate in base al messaggio più recente pubblicato.
- Leggere i messaggi in una chat: gli utenti selezionano le chat dalla schermata Home e leggono i messaggi recenti delle chat.
- Inviare un messaggio a una chat:gli utenti inviano messaggi alle chat (di gruppo o dirette).
Le operazioni totali stimate dell'app di esempio in Cloud Firestore per le tre attività utente tipiche sono le seguenti:
- Letture: (5 * 10) + (30) = 80 letture / utente / giorno
- Scritture: (10 * 2) = 20 scritture / utente / giorno
- Traffico in uscita dalla rete: (50 * 0,25 kB) + (30 * 0,25 kB) = 20 kB / utente / giorno
- Spazio di archiviazione: (20 * 0,75 KB) = 15 KB / utente / giorno
Utilizzo totale per attività utente
Seleziona ogni attività utente per visualizzare una descrizione completa e una suddivisione dei costi di operazioni, archiviazione e networking nell'app.
Visualizza l'elenco delle chat
La schermata Home dell'app carica le 25 chat più recenti, generando addebiti per 25 letture di documenti. Supponiamo che un utente attivo apra l'app 5 volte al giorno, per un totale di 125 letture per utente al giorno. Tuttavia, query più efficienti, come quella nell'esempio seguente, possono ridurre questo carico.
Nell'esempio seguente, limitiamo la query alle nuove chat utilizzando un timestamp di ogni recupero riuscito, memorizzato dall'app:
db.collection('groups') .where('participants', 'array-contains', 'user123') .where('lastUpdated', '>', lastFetchTimestamp) .orderBy('lastUpdated', 'desc') .limit(25)
Supponiamo che ci siano in media 10 chat aggiornate ogni volta che l'utente controlla l'app. Questa query comporta solo 10 letture di documenti.
Leggi i messaggi di una chat
Gli utenti fanno clic sui thread di chat dalla schermata Home per visualizzare i messaggi recenti, caricando i 50 messaggi più recenti nel caricamento iniziale.
Supponiamo che l'utente tipo esegua questa azione 5 volte al giorno (una volta ogni volta che apre la schermata Home), per un totale di 250 letture per utente al giorno. Possiamo anche limitare la query ai nuovi messaggi dall'ultimo recupero:
db.collection('groups') .doc('group234') .collection('messages') .where('sentTime', '>', lastFetchTimestamp) .orderBy('sentTime', 'desc') .limit(50)
Supponiamo che un utente riceva circa 30 messaggi al giorno in tutte le chat. Poiché hai limitato la query per recuperare i nuovi messaggi, questo si traduce in soli 30 messaggi recuperati al giorno.
Invia un messaggio a una chat
Gli utenti possono inviare messaggi ad altri partecipanti una volta entrati in una chat. Supponiamo che un utente attivo invii circa 10 messaggi al giorno.
Ogni messaggio inviato causerà due scritture di documenti: una scrittura nella sottoraccolta messages della chat e una scrittura nel documento principale della chat per aggiornare il timestamp lastUpdated e altri metadati.
Tieni presente che il costo della lettura di questi messaggi è stato preso in considerazione negli altri percorsi, pertanto i totali riportati di seguito considerano solo questo costo di scrittura.
Utilizzo fatturato per le attività dell'amministratore
In qualità di proprietario o amministratore di un'app, probabilmente vuoi generare report dai dati della tua app. Ad esempio, potresti voler tenere un conteggio giornaliero del numero di messaggi inviati dai tuoi utenti. Puoi farlo con un'aggregazione count() del gruppo di raccolte messages.
Per le query di aggregazione come count(), ti viene addebitata una lettura di documenti per ogni batch di massimo 1000 voci di indice corrispondenti alla query. L'esecuzione di questa aggregazione giornaliera aggiunge i seguenti addebiti mensili:
Piccola
(50.000 installazioni)
Per 50.000 installazioni di app (5000 DAU): 0,0009 $ al mese
5000 utenti attivi * 10 nuovi messaggi per utente = 50.000 nuovi documenti di messaggi al giorno
50.000 documenti conteggiati / 1000 corrispondenze di indice per addebito di lettura = 50 letture
50 letture al giorno * 30 giorni = 1500 letture al mese
1500 letture al mese * 0,06 $/100.000 prezzo di lettura = 0,0009 $ al mese
Media
(1 mln di installazioni)
Per 1.000.000 di installazioni di app (100.000 utenti attivi giornalieri): 0,018 $ al mese
100.000 utenti attivi * 10 nuovi messaggi per utente = 1.000.000 di nuovi documenti di messaggi al giorno
1.000.000 di documenti conteggiati / 1000 corrispondenze di indice per addebito di lettura = 1000 letture
1000 letture al giorno * 30 giorni = 30.000 letture al mese
30.000 letture al mese * 0,06/100.000 prezzo di lettura = 0,018 $al mese
Grande
(10 mln di installazioni)
Per 10.000.000 di installazioni di app (1.000.000 di utenti attivi giornalieri): 0,18 $
1.000.000 di utenti attivi * 10 nuovi messaggi per utente = 10.000.000 di nuovi documenti di messaggi al giorno
10.000.000 di documenti conteggiati / 1000 corrispondenze di indice per addebito di lettura = 10.000 letture
10.000 letture al giorno * 30 giorni = 300.000 letture al mese
300.000 letture al mese * 0,06/100.000 prezzo di lettura = 0,18 $ al mese
Vantaggi inclusi: servizi senza costi per la tua app
Sebbene le operazioni, lo spazio di archiviazione e la larghezza di banda di rete di Cloud Firestore siano tutti considerati utilizzi fatturabili, ottieni anche una serie di altri vantaggi senza costi aggiuntivi. Quando confronti Cloud Firestore con altre opzioni di database, tieni presente che i seguenti servizi sono senza costi:
- Accesso client diretto: l'accesso a Cloud Firestore avviene direttamente dal codice client utilizzando i nostri SDK nativi. Ciò significa che non è necessario creare ed eseguire un server API per connettere i client mobile al database.
- Bilanciamento del carico: poiché Cloud Firestore scala automaticamente per supportare il traffico verso il tuo database, non è necessario eseguire un bilanciatore del carico.
- Uptime del server: i database Cloud Firestore operano su server Google Cloud, offrendo un uptime mensile superiore al 99%.
- Autenticazione: autentica un numero illimitato di utenti in modo semplice e sicuro con Firebase Authentication. Firebase Authentication si integra direttamente con Cloud Firestore, quindi non è necessario eseguire il tuo servizio di autenticazione.
- Notifiche push:invia messaggi e notifiche con Cloud Messaging.
- Altri prodotti Firebase:integra altri prodotti Firebase senza costi, tra cui A/B Testing, Analytics, Crashlytics e Performance Monitoring. Scopri di più sugli altri prodotti Firebase e sui prezzi di Firebase.