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.
Aperçu de la facturation de Firestore
Firestore propose une version sans frais pour vous aider à démarrer sans frais. Une fois les quotas d'utilisation et de stockage dépassés, les opérations de base de données que vous effectuez, les données que vous stockez et la bande passante réseau que vous utilisez vous sont facturées.
Les frais liés à l'utilisation de Firestore sont classés dans les catégories suivantes :
- Opérations : toutes les opérations de lecture, écriture et suppression ont un coût. Les opérations de lecture incluent les requêtes, les extractions simples et les mises à jour effectuées via des écouteurs en temps réel. Les opérations de lecture que vous effectuez pour évaluer les règles de sécurité de Firestore que vous avez ajoutées à votre base de données vous sont également facturées. En savoir plus sur les frais liés aux opérations dans Firestore.
- Stockage : les données que vous stockez dans Firestore, y compris les métadonnées et les index, vous sont facturées. Les noms de documents, les ID de collection et les noms de champs sont des exemples de métadonnées. Les entrées d'index incluent généralement l'ID de collection, les valeurs de champ indexées et le nom du document. En savoir plus sur les coûts de stockage dans Firestore.
- Bande passante réseau : les coûts de la bande passante réseau sortante (ou sortie réseau) incluent les frais de connexion pour vos requêtes Firestore. La bande passante réseau entrante (entrée réseau) est sans frais. Surveillez votre utilisation pour estimer correctement vos coûts de bande passante réseau.
Pour obtenir une explication complète et détaillée des coûts de Firestore, consultez la page Tarifs de Firestore.
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.
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) | = | 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.
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.
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 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.
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.
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.
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:
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
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
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 débit de lecture = 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