Exemple de facturation

Utilisez cet exemple concret d'application de chat basique pour évaluer l'utilisation et les coûts liés à 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.

Coûts par niveau d'utilisation

Pour illustrer les coûts typiques, prenons l'exemple d'une application de chat, dans laquelle les utilisateurs peuvent initier des chats avec deux participants ou plus. Les utilisateurs peuvent voir leurs chats actifs dans une liste, lire des messages et envoyer des messages. Dans cet exemple, nous utilisons la tarification pour l'Amérique du Nord (multirégional), en particulier nam5.

Hypothèses

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

  • Les utilisateurs actifs par jour représentent 10 % du nombre d'installations total. Vous pouvez estimer vos coûts quotidiens en vous basant sur votre nombre approximatif d'utilisateurs actifs par jour. Il s'agit des utilisateurs qui ouvrent et utilisent activement votre application un jour donné, ce qui correspond généralement à un petit sous-ensemble de votre nombre d'installations total. Pour les calculs ci-dessous, nous avons estimé que les utilisateurs actifs par jour représentent 10 % du nombre total d'installations.
  • La taille des documents est relativement petite. Consultez le tableau ci-dessous pour connaître la taille de document par type.
  • Les données ne sont stockées que pendant trois mois. Les messages dans notre exemple d'application de chat ne sont stockés que pendant une période de trois mois. Pour tenir compte des opérations de suppression, les calculs ci-dessous indiquent une suppression quotidienne pour chaque écriture quotidienne.
  • Ces estimations de coûts reflètent l'essentiel des coûts de l'exemple d'application, mais pas tous. Nous avons pris en compte l'essentiel des coûts d'une application en calculant les opérations, le stockage des messages et des utilisateurs, ainsi que les sorties pour les tâches 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 des besoins en termes de données. Utilisez cet exemple pour guider vos calculs, mais reportez-vous à la page de tarification pour obtenir des explications plus détaillées sur les coûts liés à Firestore.

Pour en savoir plus sur l'utilisation facturée par tâche utilisateur, consultez la section Utilisation facturée par tâche utilisateur.

Peu élevé
(50 000 installations)

Pour 50 000 installations (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 sans frais + (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 sans frais + (80 000 écritures à 0,18 $/100 000 écritures) 0,8 x 0,18 $
0,14 $/jour x 30 = 4,20 $
 
100 000 suppressions quotidiennes au total 20 000 suppressions sans frais + (80 000 suppressions à 0,02 $/100 000 suppressions) 0,8 x 0,02 $
0,02 $/jour x 30 = 0,60 $
Coûts de stockage/mise en réseau
Coût mensuel total = 1,04 $/mois
20 Ko/utilisateur actif par jour de sortie quotidienne x 5 000 utilisateurs actifs par jour 100 Mo de sortie quotidienne x 30 3 Go de sortie réseau mensuelle
3 Go de sortie sans frais = sans frais1
 
15 Ko de stockage de messages quotidien/utilisateur actif par jour + 3 Ko de stockage/installation2 45 Ko de stockage/utilisateur actif par jour x 5 000 utilisateurs actifs par jour 225 Mo de stockage quotidien/utilisateur actif par jour x 30 6,75 Go d'utilisation de stockage mensuelle
1 Go de stockage sans frais + (5,75 x 0,18 $) = 1,04 $ / mois

1 10 Go de sortie réseau mensuelle sont offerts pour Firestore.
2 Étant donné que nous supposons que les utilisateurs actifs par jour représentent 10% du nombre d'installations total, ce nombre prend en compte le nombre total d'utilisateurs ayant installé votre application.

Moyen
(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 mensuel total = 261,90 $/mois
8 millions de lectures quotidiennes au total 50 000 lectures sans frais + (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 sans frais + (1,98 millions d'écritures à 0,18 $/100 000) 19,8 x 0,18 $
3,56 $/jour x 30 = 106,80 $
 
2 millions de suppressions quotidiennes au total 20 000 suppressions sans frais + (1,98 millions de suppressions à 0,02 $/100 000) 19,8 x 0,02 $
0,40 $/jour x 30 = 12 $
Coûts de stockage/mise en réseau
Coût mensuel total = 30,12 $/mois
20 Ko/utilisateur actif par jour de sortie quotidienne x 100 000 utilisateurs actifs par jour 2 Go de sortie quotidienne x 30 60 Go de sortie réseau mensuelle
10 Go de sortie sans frais + (50 Go de sortie x 0,12 $/Go) = 6 $ / mois
 
15 Ko de stockage de messages quotidien/utilisateur actif par jour + 3 Ko de stockage/installation1 45 Ko de stockage/utilisateur actif par jour x 100 000 utilisateurs actifs par jour 4,5 Go de stockage quotidien/utilisateur actif par jour x 30 135 Go d'utilisation de stockage mensuelle
1 Go de stockage sans frais + (134 Go x 0,18 $/Go) = 24,12 $ / mois

2 Étant donné que nous supposons que les utilisateurs actifs par jour représentent 10 % du nombre d'installations total, ce nombre prend en compte le nombre total d'utilisateurs ayant installé votre application.

Élevé
(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 mensuel total = 2 637,90 $/mois
80 millions de lectures quotidiennes au total 50 000 lectures sans frais + (79,95 millions de lectures à 0,06 $/100 000 lectures) 799,5 x 0,06 $
47,97 $/jour x 30 = 1 439,10 $
 
20 millions d'écritures quotidiennes au total 20 000 écritures sans frais + (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 sans frais + (19,98 millions de suppressions à 0,02 $/100 000) 199,8 x 0,02 $
4 $/jour x 30 = 120 $
Coûts de stockage/mise en réseau
Coût mensuel total = 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 sans frais + (590 Go de sortie x 0,12 $/Go) = 70,80 $ / mois
 
15 Ko de stockage de messages quotidien/utilisateur actif par jour + 3 Ko de stockage/installation1 45 Ko de stockage/utilisateur actif par jour x 1 million d'utilisateurs actifs par jour 45 Go de stockage quotidien/utilisateur actif par jour x 30 1 350 Go d'utilisation de stockage mensuelle
(1 Go de stockage sans frais) + (1 349 Go x 0,18 $/Go) = 242,82 $ / mois

2 Étant donné que nous supposons que les utilisateurs actifs par jour représentent 10 % du nombre d'installations total, ce nombre prend en compte le nombre total d'utilisateurs ayant installé votre application.

L'un des avantages 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'utilisateurs actifs par jour.

Utilisation facturée par tâche utilisateur

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

  • users/{userId} – Enregistrements utilisateur
  • groups/{groupId} – Chats 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 :

Collection Taille du document (en transit) Taille du document (sur le disque)*
users 1 Ko 3 Ko
groups 0,5 Ko 1,5 Ko
messages 0,25 Ko 0,75 Ko

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

En outre, 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 page Calculs de la taille des espaces de stockage.

Opérations

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

  • Consulter la liste des chats : les utilisateurs ouvrent l'écran d'accueil de l'application et consultent la liste des chats (discussions de groupe et chats privés), classés du message le plus récent au plus ancien.
  • Lire des messages dans un chat : les utilisateurs sélectionnent les chats 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 (discussions de groupe ou chats privés).

Le nombre total d'opérations estimé dans notre exemple d'application dans Firestore pour les trois tâches utilisateur courantes est le suivant :

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

Utilisation totale par tâche utilisateur

Sélectionnez chaque tâche utilisateur pour afficher une description complète et détaillée des coûts liés aux opérations, au stockage et à la mise en réseau dans l'application.

Consulter la liste des chats

L'écran d'accueil de l'application charge les 25 chats les plus récents, entraînant des frais pour 25 lectures de documents. Si un utilisateur actif ouvre l'application cinq fois par jour, cela revient à un total de 125 lectures par utilisateur chaque jour. Des requêtes plus efficaces, comme celle de l'exemple suivant, peuvent toutefois réduire cette charge.

Dans l'exemple ci-dessous, nous limitons la requête aux nouveaux chats à l'aide d'un horodatage de chaque extraction 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 des messages dans un chat

Les utilisateurs cliquent dans les fils de discussion à partir 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.

Si l'utilisateur effectue cette action cinq fois par jour (une fois à chaque ouverture de l'écran d'accueil), cela revient à un total de 250 lectures par utilisateur chaque jour. Nous pouvons également limiter notre requête aux nouveaux messages depuis la dernière extraction :

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 dans tous les chats. Étant donné que vous avez limité la requête pour récupérer les nouveaux messages, cela ne représente que 30 messages récupérés par jour.

Envoyer un message dans un chat

Dans un chat, les utilisateurs peuvent envoyer des messages aux autres participants. Supposons qu'un utilisateur actif envoie environ 10 messages par jour.

Chaque message envoyé génère deux écritures : 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 scénarios. Par conséquent, les totaux ci-dessous ne tiennent compte que de ce coût d'écriture.

Utilisation facturée pour les tâches d'administrateur

En tant que propriétaire ou administrateur d'une application, vous souhaitez probablement générer des rapports à partir des données de votre application. Par exemple, vous pouvez conserver un compte quotidien du nombre de messages envoyés par vos utilisateurs. Pour ce faire, utilisez une agrégation count() du groupe de collections messages.

Pour les requêtes d'agrégation telles que count(), une lecture de document vous est facturée pour chaque lot de 1 000 entrées d'index maximum correspondant à la requête. L'exécution de cette agrégation quotidienne entraîne les frais mensuels suivants:

Peu élevé
(50 000 installations)

Pour 50 000 installations (5 000 UAJ): 0,0009 $/mois

5 000 utilisateurs actifs * 10 nouveaux messages par utilisateur = 50 000 nouveaux documents de messages par jour

50 000 documents comptabilisés / 1 000 correspondances d'index par lecture facturée = 50 lectures

50 lectures par jour * 30 jours = 1 500 lectures par mois

1 500 lectures par mois * 0,06 $/100 000 lectures = 0,0009 $ par mois

Moyen
(1 million d'installations)

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

100 000 utilisateurs actifs * 10 nouveaux messages par utilisateur = 1 000 000 nouveaux documents de messages par jour

1 000 000 documents comptabilisés / 1 000 correspondances d'index par lecture facturée = 1 000 lectures

1 000 lectures par jour * 30 jours = 30 000 lectures par mois

30 000 lectures par mois * 0,06 $/100 000 lectures = 0,018 $/mois

Élevé
(10 millions d'installations)

Pour 10 000 000 d'installations (1 000 000 d'utilisateurs actifs par jour): 0,18 $

1 000 000 utilisateurs actifs * 10 nouveaux messages par utilisateur = 10 000 000 nouveaux documents de messages par jour

10 000 000 documents comptabilisés / 1 000 correspondances d'index par lecture facturée = 10 000 lectures

10 000 lectures par jour * 30 jours = 300 000 lectures par mois

300 000 lectures par mois * 0,06 $/100 000 lectures = 0,18 $/mois