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 Puisque nous supposons que les UAJ (utilisateurs actifs par jour) représentent 10% de l'ensemble des applications
installations, cela
représente 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 M de lectures à 0,06 $/100 000) | = | 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 M 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) | = | 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 utilisateurgroups/{groupId}
– Chats entre deux utilisateurs ou plusmessages/{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. Exécution de cette
l'agrégation quotidienne ajoute les frais mensuels suivants:
Peu élevé
(50 000 installations)
Pour 50 000 installations d'application (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 x 0,06/100 000 prix en lecture = 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 x 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 d'application (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 charge de lecture = 10 000 lectures
10 000 lectures par jour x 30 jours = 300 000 lectures par mois
300 000 lectures par mois * 0,06 $/100 000 lectures = 0,18 $/mois