Esempio di fatturazione
Utilizza questo esempio pratico di un'app di chat di base per valutare l'utilizzo e i costi di Firestore. Non si tratta di una stima esatta, ma può aiutarti a comprendere meglio come viene fatturato l'utilizzo di Firestore.
Panoramica: costi per livello di utilizzo
Per illustrare i costi tipici, prendiamo ad esempio un'app di chat in cui gli utenti possono avviare chat con due o più partecipanti. Gli utenti possono vedere le chat attive in un elenco, leggere i messaggi e inviarli. Per questo esempio, utilizziamo i prezzi per la multi-regione del Nord America (in particolare nam5
).
Ipotesi
Prendi in considerazione 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, in genere un piccolo sottoinsieme delle installazioni totali dell'app. Per i calcoli riportati di seguito, abbiamo stimato che i DAU corrispondano al 10% del numero totale di installazioni di app.
- Le dimensioni dei documenti sono relativamente piccole. Consulta la tabella di seguito per una suddivisione delle dimensioni dei documenti in base al tipo.
- I dati vengono archiviati solo per tre mesi. I messaggi nell'app 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 preso in considerazione la maggior parte dei costi di un'app calcolando operazioni, spazio di archiviazione per utenti e messaggi ed elaborazione in uscita per le attività utente più frequenti descritte in questa guida. Tuttavia, potresti dover prendere in considerazione costi aggiuntivi, a seconda della struttura e delle esigenze di dati della tua app. Utilizza questo esempio come guida per i tuoi calcoli, ma consulta la pagina dei prezzi per spiegazioni più dettagliate sui costi di Firestore.
Per un'analisi dettagliata delle operazioni per attività utente, consulta la sezione Analisi dettagliata: utilizzo fatturato per attività utente.
Piccole
(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 aggiuntivi + (350.000 letture a 0,06 $ogni 100.000) | = | 3,5 * 0,06 $ | |
0,21 $ / giorno * 30 = 6,30 $ | |||||
100.000 scritture giornaliere totali | = | 20.000 scritture senza costi + (80.000 scritture a 0,18 $ogni 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 $ogni 100.000) | = | 0,8 * 0,02 $ | |
0,02 $ / 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 al mese di traffico di rete in uscita | |||
3 GB di traffico in uscita senza costi = senza costi1 | |||||||
Spazio di archiviazione giornaliero per i messaggi di 15 KB / DAU + spazio di archiviazione di 3 KB / installazione2 | = | 45 KB di spazio di archiviazione / DAU * 5000 DAU | = | 225 MB di spazio di archiviazione giornaliero / DAU * 30 | = | Utilizzo mensile dello spazio di archiviazione di 6,75 GB | |
1 GB di spazio di archiviazione senza costi + (5,75 * 0,18 $) = 1,04 $al mese |
1 10 GB di traffico di rete in uscita mensile sono senza costi per Firestore.
2 Dato che presupponiamo che le DAU rappresentino il 10% delle installazioni totali di app, questo numero tiene conto del numero totale di utenti che hanno installato la tua app.
Medio
(1 milione 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 aggiuntivi + (7,95 milioni di letture a 0,06 $ogni 100.000) | = | 79,5 * 0,06 $ | |
4,77 $ / giorno * 30 = 143,10 $ | |||||
2 milioni di scritture giornaliere totali | = | 20.000 scritture senza costi + (1,98 milioni di scritture a 0,18 $ogni 100.000) | = | 19,8 * 0,18 $ | |
3,56 $ / giorno * 30 = 106,80 $ | |||||
2 milioni di eliminazioni giornaliere totali | = | 20.000 eliminazioni senza costi aggiuntivi + (1,98 milioni di eliminazioni a 0,02 $/100.000) | = | 19,8 * 0,02 $ | |
0,40 $ / 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 al mese di traffico di rete in uscita | |||
10 GB di traffico in uscita senza costi + (50 GB di traffico in uscita * 0,12 $/GB) = 6,00 $al mese | |||||||
Spazio di archiviazione giornaliero per i messaggi di 15 KB / DAU + spazio di archiviazione di 3 KB / installazione1 | = | 45 KB di spazio di archiviazione / DAU * 100.000 DAU | = | 4,5 GB di spazio di archiviazione giornaliero / DAU * 30 | = | Utilizzo mensile dello spazio di archiviazione di 135 GB | |
1 GB di spazio di archiviazione senza costi + (134 GB * 0,18 $/GB) = 24,12 $ / mese |
1 Poiché presupponiamo che i DAU rappresentino il 10% delle installazioni totali di app, questo numero tiene conto del numero totale di utenti che hanno installato la tua app.
Grande
(10 milioni di installazioni)
Per 10.000.000 installazioni di app (1.000.000 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 aggiuntivi + (79,95 milioni di letture a 0,06 $ogni 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 $ogni 100.000) | = | 199,8 * 0,18 $ | |
35,96 $ / giorno * 30 = 1078,80 $ | |||||
20 milioni di eliminazioni giornaliere totali | = | 20.000 eliminazioni senza costi aggiuntivi + (19.980.000 eliminazioni a 0,02 $/100.000) | = | 199,8 * 0,02 $ | |
4 $ / giorno * 30 = 120 $ |
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 al mese di traffico di rete in uscita | |||
10 GB di traffico in uscita senza costi + (590 GB di traffico in uscita * 0,12 $/GB) = 70,80 $ / mese | |||||||
Spazio di archiviazione giornaliero per i messaggi di 15 KB / DAU + spazio di archiviazione di 3 KB / installazione1 | = | 45 KB di spazio di archiviazione / DAU * 1 milione di DAU | = | 45 GB di spazio di archiviazione giornaliero / DAU * 30 | = | Utilizzo mensile di 1350 GB di spazio di archiviazione | |
(1 GB di spazio di archiviazione senza costi) + (1349 GB * 0,18 $/GB) = 242,82 $ al mese |
1 Poiché presupponiamo che i DAU rappresentino il 10% delle installazioni totali di app, questo numero tiene conto del numero totale di utenti che hanno installato la tua app.
Un vantaggio del modello di fatturazione di Firestore che vale la pena prendere in considerazione è che paghi solo per ciò che utilizzi. Di conseguenza, la tua fattura potrebbe aumentare e diminuire in base al conteggio dei 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 per la memorizzazione dei dati dell'app, applica le seguenti ipotesi sulle dimensioni dei documenti:
Raccolta | Dimensioni del documento (in transito) | Dimensioni del documento (sul disco)* |
---|---|---|
utenti | 1KB | 3KB |
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 assume 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 della data corrente, per ridurre i costi di archiviazione.
Per ulteriori informazioni sul calcolo dei costi di archiviazione, consulta Informazioni sui calcoli delle dimensioni 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.
- Leggi i messaggi in una chat: gli utenti selezionano le chat dalla schermata iniziale 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 Firestore per le tre attività comuni dell'utente 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 un'analisi dettagliata dei costi di operazioni, archiviazione e networking nell'app.
Visualizzare l'elenco delle chat
La schermata Home dell'app carica le 25 chat più recenti, comportando costi per 25 letture di documenti. Supponiamo che un utente attivo apra l'app 5 volte al giorno, per un totale di 125 letture al giorno per utente. 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, archiviato 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.
Leggere 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 medio esegua questa azione 5 volte al giorno (una volta ogni volta che apre la schermata Home), per un totale di 250 letture al giorno per utente. Possiamo anche limitare la query ai nuovi messaggi dall'ultima volta che è stato eseguito il 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 al recupero dei nuovi messaggi, si tratta di soli 30 messaggi recuperati al giorno.
Inviare un messaggio a una chat
Gli utenti possono inviare messaggi ad altri partecipanti quando sono in una chat. Supponiamo che un utente attivo invii circa 10 messaggi al giorno.
Ogni messaggio inviato causerà due scritture nel documento: una nella raccolta secondaria messages
della chat e una 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 prendono in considerazione solo questo costo di scrittura.
Utilizzo fatturato per le attività di amministrazione
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 dagli 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 comporta i seguenti addebiti mensili:
Piccole
(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 dell'indice per addebito lettura = 50 letture
50 letture al giorno * 30 giorni = 1500 letture al mese
1500 letture al mese * 0,06 $/100.000 letture = 0,0009 $ al mese
Medio
(1 milione di installazioni)
Per 1.000.000 installazioni di app (100.000 utenti attivi giornalieri): 0,018 $/mese
100.000 utenti attivi * 10 nuovi messaggi per utente = 1.000.000 nuovi documenti di messaggi al giorno
1.000.000 documenti conteggiati / 1000 corrispondenze dell'indice per addebito lettura = 1000 letture
1000 letture al giorno * 30 giorni = 30.000 letture al mese
30.000 letture al mese * 0,06 $/100.000 letture = 0,018 $ al mese
Grande
(10 milioni di installazioni)
Per 10.000.000 installazioni di app (1.000.000 utenti attivi giornalieri): 0,18 $
1.000.000 utenti attivi * 10 nuovi messaggi per utente = 10.000.000 nuovi documenti di messaggi al giorno
10.000.000 documenti conteggiati / 1000 corrispondenze dell'indice per addebito 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 letture = 0,18 $ al mese