Exemple de facturation

Utilisez cet exemple réel d'application de chat de base pour évaluer votre utilisation et vos coûts de Firestore. Il ne s'agit pas d'une estimation exacte, mais cela peut vous aider à mieux comprendre comment votre utilisation de Firestore est facturée.

Présentation: coûts par niveau d'utilisation

Pour illustrer les coûts typiques, prenons l'exemple d'une application de chat, où les utilisateurs peuvent lancer des discussions avec au moins deux participants. Les utilisateurs peuvent consulter leurs messages actifs dans une liste, lire et envoyer des messages. Dans cet exemple, nous utilisons la tarification pour l'emplacement multirégional"Amérique du Nord" (en particulier, la valeur nam5).

Hypothèses

Considérez les hypothèses suivantes concernant l'utilisation et le stockage des données:

  • Les utilisateurs actifs par jour (UAJ) représentent 10% du nombre total d'installations de l'application. Vous pouvez estimer vos coûts quotidiens à l'aide d'une estimation approximative de vos utilisateurs actifs par jour (UAJ). Il s'agit des utilisateurs qui ouvrent et utilisent activement votre application un jour donné, qui correspond généralement à un petit sous-ensemble du nombre total d'installations de l'application. Pour les calculs ci-dessous, nous avons estimé les UAJ comme 10% du nombre total d'installations de l'application.
  • La taille des documents est relativement petite. Consultez le tableau ci-dessous pour connaître la taille du document par type.
  • Les données ne sont stockées que pendant trois mois. Les messages de l'exemple d'application de chat ne sont stockés que pendant une période de trois mois. Pour prendre en compte les opérations de suppression, les calculs ci-dessous indiquent une suppression quotidienne pour chaque écriture quotidienne.
  • Ces estimations reflètent la majeure partie des coûts de l'application, mais pas tous. Nous avons pris en compte la majeure partie des coûts d'une application en calculant les opérations, le stockage des utilisateurs et des messages, et la sortie pour les tâches utilisateur les plus fréquentes décrites dans ce guide. Toutefois, vous devrez peut-être prendre en compte des coûts supplémentaires, en fonction de la structure de votre application et de vos besoins en données. Utilisez cet exemple pour guider vos calculs, mais reportez-vous à la page des tarifs pour obtenir des explications plus détaillées sur les coûts de Firestore.

Pour connaître la répartition des opérations par tâche utilisateur, consultez la section Répartition: utilisation facturée par tâche utilisateur.

Petite
(50 000 installations)

Pour 50 000 installations d'applications (5 000 utilisateurs actifs par jour): 12,14 $/mois

Coûts de lecture/écriture
Coût mensuel total = 11,10 $/mois
400 000 lectures quotidiennes au total =   50 000 lectures gratuites + (350 000 lectures à 0,06 $/100 000 lectures) =   3,5 x 0,06 $
0,21 $/jour x 30 = 6,30 $
 
100 000 écritures quotidiennes au total =   20 000 écritures gratuites + (80 000 écritures à 0,18 $/100 000 écritures) =   0,8 * 0,18 $
0,14 $ / jour x 30 = 4,20 $
 
100 000 suppressions quotidiennes au total =   20 000 suppressions gratuites + (80 000 suppressions à 0,02 $/100 000 suppressions) =   0,8 * 0,02 $
0,02 $ / jour x 30 = 0,60 $
Coûts du stockage et de la mise en réseau
Coût mensuel total = 1,04 $/mois
20 Ko / UAJ de sortie quotidienne x 5 000 UAJ =   100 Mo de sortie quotidienne x 30 =   3 Go de sortie réseau mensuelle
3 Go de sortie sans frais = gratuit1
 
15 Ko de stockage des messages quotidiens / UAJ + 3 Ko de stockage / installation2 =   45 Ko de stockage / utilisateur actif par jour x 5 000 utilisateurs actifs par jour =   225 Mo d'espace de stockage quotidien / UAJ * 30 =   6,75 Go d'espace de stockage mensuel
1 Go de stockage gratuit + (5,75 x 0,18 $) = 1,04 $/mois

1 10 Go de sortie réseau mensuelle sont offerts pour Firestore.
2 Nous partons du principe que les UAJ représentent 10% du nombre total d'installations de l'application. Ce nombre correspond donc au nombre total d'utilisateurs qui ont installé votre application.

Moyenne
(1 million d'installations)

Pour 1 000 000 d'installations (100 000 utilisateurs actifs par jour): 292,02 $/mois

Coûts de lecture/écriture
Coût total mensuel = 261,90 $/mois
8 millions de lectures quotidiennes au total =   50 000 lectures gratuites + (7,95 millions de lectures à 0,06 $/100 000 lectures) =   79,5 x 0,06 $
4,77 $ / jour x 30 = 143,10 $
 
2 millions d'écritures quotidiennes au total =   20 000 écritures gratuites + (1,98 millions d'écritures à 0,18 $/100 000 écritures) =   19,8 x 0,18 $
3,56 $/jour x 30 = 106,80 $
 
2 millions de suppressions quotidiennes au total =   20 000 suppressions gratuites + (1,98 millions de suppressions à 0,02 $/100 000) =   19,8 x 0,02 $
0,40 $/jour x 30 = 12 $
Coûts du stockage et de la mise en réseau
Coût total mensuel = 30,12 $/mois
20 Ko / UAJ de sortie quotidienne x 100 000 UAJ =   2 Go de sortie quotidienne x 30 =   60 Go de sortie réseau mensuelle
10 Go de sortie gratuits + (50 Go de sortie x 0,12 $/Go) = 6,00 $ / mois
 
15 Ko de stockage quotidien des messages / UAJ + 3 Ko de stockage / installation1 =   45 Ko de stockage / UAJ * 100 000 UAJ =   4,5 Go d'espace de stockage quotidien / UAJ * 30 =   135 Go d'espace de stockage mensuel
1 Go de stockage gratuit + (134 Go x 0,18 $/Go) = 24,12 $/mois

1 Comme nous partons du principe que les utilisateurs actifs par jour représentent 10% du nombre total d'installations de l'application, ce nombre correspond au nombre total d'utilisateurs ayant installé votre application.

Grande
(10 millions d'installations)

Pour 10 000 000 d'installations (1 000 000 d'utilisateurs actifs par jour): 2 951,52 $

Coûts de lecture/écriture
Coût total mensuel = 2 637,90 $/mois
80 millions de lectures quotidiennes au total =   50 000 lectures gratuites + (79,95 millions de lectures à 0,06 $/100 000) =   799,5 x 0,06 $
47,97 $ / jour x 30 = 1 439,10 $
 
20 millions d'écritures quotidiennes au total =   20 000 écritures gratuites + (19,98 millions d'écritures à 0,18 $/100 000 écritures) =   199,8 x 0,18 $
35,96 $/jour x 30 = 1 078,80 $
 
20 millions de suppressions quotidiennes au total =   20 000 suppressions gratuites + (19,98 millions de suppressions à 0,02 $/100 000) =   199,8 x 0,02 $
4 $ / jour x 30 = 120 $
Coûts du stockage et de la mise en réseau
Coût total mensuel = 313,62 $/mois
20 Ko / utilisateur actif par jour de sortie quotidienne x 1 million d'utilisateurs actifs par jour =   20 Go de sortie quotidienne x 30 =   600 Go de sortie réseau mensuelle
10 Go de sortie gratuits + (590 Go de sortie x 0,12 $/Go) = 70,80 $ / mois
 
15 Ko de stockage quotidien des messages / UAJ + 3 Ko de stockage / installation1 =   45 Ko de stockage / utilisateur actif par jour x 1 million d'utilisateurs actifs par jour =   45 Go d'espace de stockage quotidien / UAJ * 30 =   1 350 Go d'espace de stockage mensuel
(1 Go de stockage gratuit) + (1 349 Go x 0,18 $/Go) = 242,82 $ / mois

1 Comme nous partons du principe que les utilisateurs actifs par jour représentent 10% du nombre total d'installations de l'application, ce nombre correspond au nombre total d'utilisateurs ayant installé votre application.

L'avantage du modèle de facturation Firestore est que vous ne payez que ce que vous utilisez. Par conséquent, votre facture peut augmenter et diminuer en fonction du nombre d'UAJ.

Répartition: utilisation facturée par tâche utilisateur

Dans notre exemple d'application de chat, la structure des données est la suivante:

  • users/{userId} : enregistrements utilisateur
  • groups/{groupId} : Chat entre deux utilisateurs ou plus
    • messages/{messageId} : chaque message d'un chat.

Stockage de données

Pour calculer les coûts de stockage des données de l'application, appliquez les hypothèses suivantes concernant la taille des documents:

Collecte Taille du document (en transit) Taille du document (sur le disque)*
utilisateurs 1 Ko 3 Ko
Groupes 0,5 Ko 1,5 Ko
messages 0,25 Ko 0,75 Ko

*Ce calcul de taille inclut les index des champs de message, mais suppose que l'indexation est désactivée pour le contenu des messages.

De plus, l'application ne stocke que les messages datant de trois mois maximum afin de réduire les coûts de stockage.

Pour plus d'informations sur le calcul des coûts de stockage, consultez la section Calculer la taille des espaces de stockage.

Opérations

Les utilisateurs effectuent généralement les tâches courantes suivantes dans l'application:

  • Voir la liste des chats:les utilisateurs ouvrent l'écran d'accueil de l'application et voient la liste des chats (de groupe et directs) classés en fonction du message le plus récent publié.
  • Lire les messages d'un chat:les utilisateurs sélectionnent des messages sur l'écran d'accueil et lisent les messages récents.
  • Envoyer un message dans un chat:les utilisateurs envoient des messages dans des chats (de groupe ou directs).

L'exemple d'opérations totales estimées dans Firestore pour les trois tâches utilisateur types est le suivant:

  • Lectures : (5 * 10) + (30) = 80 lectures / utilisateur / jour
  • Écritures : (10 * 2) = 20 écritures/utilisateur/jour
  • Sortie réseau: (50 x 0,25 Ko) + (30 x 0,25 Ko) = 20 Ko / utilisateur / jour
  • Espace de stockage : (20 x 0,75 Ko) = 15 Ko/utilisateur/jour

Utilisation totale par tâche utilisateur

Sélectionnez chaque tâche utilisateur pour afficher la description et le détail des coûts d'exploitation, de stockage et de mise en réseau disponibles dans l'application.

Voir la liste des chats

L'écran d'accueil de l'application charge les 25 chats les plus récents, ce qui entraîne des frais pour 25 lectures de documents. Supposons qu'un utilisateur actif ouvre l'application cinq fois par jour, soit un total de 125 lectures par utilisateur. Toutefois, des requêtes plus efficaces, comme celle de l'exemple suivant, peuvent réduire cette charge.

Dans l'exemple ci-dessous, nous limitons la requête aux nouveaux chats à l'aide d'un horodatage de chaque récupération réussie, stocké par l'application:

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

Supposons qu'il y ait en moyenne 10 chats mis à jour chaque fois que l'utilisateur vérifie l'application. Cette requête n'engendre que 10 lectures de documents.

Lire les messages d'un chat

Les utilisateurs cliquent sur les fils de discussion de l'écran d'accueil pour afficher les messages récents. Les 50 messages les plus récents sont chargés lors du chargement initial.

Supposons que l'utilisateur typique effectue cette action cinq fois par jour (une fois pour chaque fois qu'il ouvre l'écran d'accueil), ce qui donne un total de 250 lectures par utilisateur chaque jour. Nous pouvons également limiter notre requête aux nouveaux messages depuis la dernière récupération:

db.collection('groups')
  .doc('group234')
  .collection('messages')
  .where('sentTime', '>', lastFetchTimestamp)
  .orderBy('sentTime', 'desc')
  .limit(50)

Supposons qu'un utilisateur reçoive environ 30 messages par jour sur toutes les discussions. Étant donné que vous avez limité la requête de récupération de nouveaux messages, cela se traduit par 30 messages récupérés par jour seulement.

Envoyer un message dans un chat

Les utilisateurs peuvent envoyer des messages à d'autres participants une fois qu'ils sont dans un chat. Supposons qu'un utilisateur actif envoie environ 10 messages par jour.

Chaque message envoyé entraîne deux écritures de document: une écriture dans la sous-collection messages du chat et une écriture dans le document parent du chat pour mettre à jour l'horodatage lastUpdated et d'autres métadonnées.

Notez que le coût de lecture de ces messages a été pris en compte dans les autres parcours. Par conséquent, les totaux ci-dessous ne tiennent compte que de ce coût en écriture.