Esempio di fatturazione

Utilizza questo esempio reale di un'app di chat di base per valutare l'utilizzo e i costi di Firestore in modalità nativa. Non si tratta di una stima esatta, ma può aiutarti a capire meglio come viene fatturato l'utilizzo di Firestore in modalità Native.

Panoramica: costi per livello di utilizzo

Per illustrare i costi tipici, prendi 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 chat attive in un elenco, leggere i messaggi e inviarli. Per questo esempio, utilizziamo i prezzi per la multi-regione Nord America (nello specifico nam5).

Ipotesi

Considera i seguenti presupposti 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 è un piccolo sottoinsieme delle installazioni totali dell'app. Per i calcoli riportati di seguito, abbiamo stimato gli utenti attivi giornalieri come il 10% del numero totale di installazioni dell'app.
  • Le dimensioni dei documenti sono relativamente piccole. Consulta la tabella riportata di seguito per una suddivisione delle dimensioni dei documenti per 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 di utenti e messaggi e l'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ù approfondite sui costi di Firestore in modalità nativa.

Per una suddivisione delle operazioni per attività utente, consulta la sezione Suddivisione: utilizzo fatturato per attività utente.

Piccolo
(50.000 installazioni)

Per 50.000 installazioni di app (5000 utenti attivi giornalieri): 12,14 $ al mese

Costi di lettura/scrittura
Costo totale mensile = 11,10 $/mese
400.000 letture giornaliere totali =   50.000 letture senza costi + (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 operazioni di scrittura senza costi + (80.000 operazioni di scrittura a 0,18 $ogni 100.000) =   0,8 * 0,18 $
0,14$al 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 totale mensile = 1,04 $/mese
20 KB / DAU di traffico in uscita giornaliero * 5000 DAU =   100 MB di traffico in uscita al giorno * 30 =   3 GB al mese di traffico di rete in uscita
3 GB di traffico in uscita senza costi = Nessun costo1
 
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 $al mese

1 10 GB di traffico di rete in uscita mensile sono gratuiti per Firestore in modalità nativa.
2 Poiché il nostro presupposto è che gli utenti attivi giornalieri rappresentino il 10% delle installazioni totali dell'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 dell'app (100.000 utenti attivi giornalieri): 292,02 $ al mese

Costi di lettura/scrittura
Costo totale mensile = 261,90 $/mese
8 milioni di letture giornaliere totali =   50.000 letture senza costi + (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 operazioni di scrittura senza costi + (1,98 milioni di operazioni di scrittura 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 + (1.980.000 eliminazioni a 0,02 $ogni 100.000) =   19,80 $ * 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 al giorno * 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 $ / 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é il nostro presupposto è che gli utenti attivi giornalieri rappresentino il 10% delle installazioni totali dell'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 di installazioni di app (1.000.000 di utenti attivi giornalieri): 2951,52 $

Costi di lettura/scrittura
Costo totale mensile = Totale: 2637,90 $/mese
80 milioni di letture giornaliere totali =   50.000 letture senza costi + (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,98 milioni di eliminazioni a 0,02 $per 100.000) =   199,8 * 0,02 $
4 € / giorno * 30 = 120 €
Costi di archiviazione/networking
Costo totale mensile = 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
 
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é il nostro presupposto è che gli utenti attivi giornalieri rappresentino il 10% delle installazioni totali dell'app, questo numero tiene conto del numero totale di utenti che hanno installato la tua app.

Un vantaggio del modello di fatturazione di Firestore in modalità Native da prendere in considerazione è che paghi solo per ciò che utilizzi. Di conseguenza, la fattura potrebbe aumentare e diminuire in base al conteggio degli 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} - User records
  • groups/{groupId}: chat tra due o più utenti
    • messages/{messageId}: ogni messaggio in 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 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 del messaggio, ma presuppone che l'indicizzazione sia disattivata per i contenuti del messaggio.

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, vedi Informazioni sui calcoli delle dimensioni di archiviazione.

Operazioni

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

Le operazioni totali stimate dell'app di esempio in Firestore in modalità Native 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
  • 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 delle operazioni, dei costi di archiviazione e di rete nell'app.

Visualizzare l'elenco delle chat

La schermata Home dell'app carica le 25 chat più recenti, addebitando i costi 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.

Leggere i messaggi in 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 tipico esegua questa azione 5 volte al giorno (una volta per ogni volta che apre la schermata Home), il che porta a un totale di 250 letture al giorno per utente. 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, ciò si traduce in soli 30 messaggi recuperati al giorno.

Inviare un messaggio a una chat

Una volta in una chat, gli utenti possono inviare messaggi ad altri partecipanti. Supponiamo che un utente attivo invii circa 10 messaggi al giorno.

Ogni messaggio inviato causa due scritture di documenti: una scrittura nella raccolta secondaria 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 viaggi, quindi i totali riportati di seguito tengono conto solo di questo costo di scrittura.

Utilizzo fatturato per le attività amministrative

In qualità di proprietario o amministratore dell'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 costi mensili:

Piccolo
(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 di 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 di installazioni dell'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 dell'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 letture = 0,018 $ al mese

Grande
(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 messaggi al giorno

10.000.000 di documenti conteggiati / 1000 corrispondenze dell'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 letture = 0,18 $ al mese