Esempio di fatturazione

Utilizza questo esempio reale di 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 capire meglio come viene fatturato l'utilizzo di Firestore.

Panoramica: costi per livello di utilizzo

Per illustrare i costi tipici, considera un'app di chat di esempio in cui gli utenti possono avviare chat con due o più partecipanti. Gli utenti possono visualizzare le chat attive in un elenco, leggere e inviare messaggi. Per questo esempio, utilizziamo i prezzi per la località a più regioni del Nord America (nello specifico nam5).

Ipotesi

Considera i seguenti presupposti sull'utilizzo e l'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 è un piccolo sottoinsieme delle installazioni totali di app. Per i calcoli riportati di seguito, abbiamo stimato i DAU pari al 10% del numero totale di installazioni di app.
  • Le dimensioni dei documenti sono relativamente piccole. Consulta la tabella seguente per un'analisi 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 seguenti 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. La maggior parte dei costi di un'app è stata calcolata calcolando le operazioni, l'archiviazione di utenti e messaggi e il traffico 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 dei dati dell'app. Utilizza questo esempio per semplificare i calcoli, ma fai riferimento alla pagina dei prezzi per spiegazioni più dettagliate sui costi di Firestore.

Per un'analisi dettagliata delle operazioni per attività utente, consulta la sezione Analisi: 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 + (350.000 letture a 0,06/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/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 $ / 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 in uscita senza costi aggiuntivi = senza costi1
 
15 kB di archiviazione giornaliera dei 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 =   Spazio di archiviazione mensile utilizzato: 6,75 GB
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 gratuiti per Firestore.
2 Partendo dal presupposto che i DAU rappresentano il 10% delle installazioni totali di app, questo numero rappresenta il numero totale di utenti che hanno installato la tua app.

Media
(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 + (7,95 milioni di letture a 0,06/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/100.000) =   19,8 * 0,18 $
3,56 $ / 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 $ / 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 archiviazione giornaliera dei 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 =   Spazio di archiviazione mensile utilizzato: 135 GB
1 GB di spazio di archiviazione senza costi + (134 GB * 0,18 $/GB) = 24,12 $ / mese

1 Partendo dal presupposto che i DAU rappresentano il 10% delle installazioni totali di app, questo numero rappresenta il numero totale di utenti che hanno installato la tua app.

Grandi
(10 milioni 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 Mln 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 Mln 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 $ / 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 archiviazione giornaliera dei 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 =   Spazio di archiviazione mensile utilizzato: 1350 GB
(1 GB di spazio di archiviazione senza costi) + (1349 GB * $0,18/GB) = 242,82 $ / mese

1 Partendo dal presupposto che i DAU rappresentano il 10% delle installazioni totali di app, questo numero rappresenta il numero totale di utenti che hanno installato la tua app.

Uno dei vantaggi del modello di fatturazione Firestore che vale la pena prendere in considerazione è che paghi solo per ciò che utilizzi. Di conseguenza, la fattura potrebbe aumentare e ridursi con il numero di utenti attivi giornalieri.

Suddivisione: utilizzo fatturato per attività utente

Per la nostra app di chat di esempio, la struttura dei dati è la seguente:

  • users/{userId}: record utente
  • groups/{groupId}: chat tra 2 o più utenti
    • messages/{messageId}: ogni messaggio di una chat.

Archiviazione dei dati

Per calcolare i costi di archiviazione per l'archiviazione dei dati dell'app, applica le seguenti ipotesi sulle dimensioni dei documenti:

Raccolta Dimensioni 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 del messaggio, ma presuppone che l'indicizzazione sia disabilitata per i contenuti dei messaggi.

Inoltre, l'app archivia solo i messaggi che risalgono a massimo tre mesi prima della data corrente, per ridurre i costi di archiviazione.

Per ulteriori informazioni sul calcolo dei costi di archiviazione, consulta Informazioni sul calcolo delle dimensioni dello spazio di archiviazione.

Suite operativa

In genere, gli utenti completano le seguenti attività comuni nell'app:

Di seguito sono riportate le operazioni totali stimate dell'app di esempio in Firestore per le tre tipiche attività utente:

  • Letture: (5 * 10) + (30) = 80 letture / utente / giorno
  • Scritture: (10 * 2) = 20 scritture / utente / giorno
  • 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 ciascuna 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, che sono soggette ad 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 il timestamp di ogni recupero riuscito, archiviato dall'app:

db.collection('groups')
  .where('participants', 'array-contains', 'user123')
  .where('lastUpdated', '>', lastFetchTimestamp)
  .orderBy('lastUpdated', 'desc')
  .limit(25)

Supponi che ci siano una media di 10 chat aggiornate ogni volta che l'utente controlla l'app. Questa query prevede 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 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 nostra query ai nuovi messaggi dal momento dell'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 al recupero di nuovi messaggi, questo si traduce in appena 30 messaggi recuperati al giorno.

Inviare un messaggio a una chat

Gli utenti possono inviare messaggi ad altri partecipanti mentre sono in 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 l'altra 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, quindi i totali riportati di seguito considerano solo questo costo di scrittura.

Utilizzo fatturato per le attività di amministrazione

In qualità di proprietario o amministratore dell'app, probabilmente vorrai generare report a partire dai dati dell'app. Ad esempio, potresti voler mantenere 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 addebitato un documento letto per ogni batch di massimo 1000 voci di indice corrispondenti alla query. Eseguendo questa aggregazione giornaliera, vengono aggiunti i seguenti addebiti mensili:

Piccole
(50.000 installazioni)

Per 50.000 installazioni di app (5000 DAU): 0,0009 $/mese

5000 utenti attivi * 10 nuovi messaggi per utente = 50.000 nuovi documenti di messaggio al giorno

50.000 documenti conteggiati / 1000 corrispondenze indice per addebito di lettura = 50 letture

50 letture al giorno * 30 giorni = 1500 letture al mese

1500 letture al mese * prezzo di lettura di 0,06/100.000 = 0,0009 $al mese

Media
(1 milione di installazioni)

Per 1.000.000 di installazioni di app (100.000 utenti attivi giornalieri): 0,018 $/mese

100.000 utenti attivi * 10 nuovi messaggi per utente = 1.000.000 di nuovi documenti di messaggio 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 * prezzo di lettura di 0,06/100.000 = 0,018 $al mese

Grandi
(10 milioni 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 messaggio al giorno

10.000.000 di documenti conteggiati / 1000 corrispondenze 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 * prezzo di lettura di 0,06/100.000 = 0,18 $ al mese