Comprendre la facturation de base de données en temps réel

Firebase facture les données que vous stockez dans votre base de données et tout le trafic réseau sortant au niveau de la couche de session (couche 5) du modèle OSI. Le stockage est facturé 5 $ pour chaque Go/mois, évalué quotidiennement. La facturation n'est pas affectée par l'emplacement de votre base de données. Le trafic sortant inclut la surcharge de connexion et de chiffrement de toutes les opérations de base de données et les données téléchargées via les lectures de base de données. Les lectures et les écritures de base de données peuvent entraîner des coûts de connexion sur votre facture. Tout le trafic vers et depuis votre base de données, y compris les opérations refusées par les règles de sécurité, entraîne des coûts facturables.

Voici quelques exemples courants de trafic facturé :

  • Les données téléchargées: Lorsque les clients obtiennent des données de votre base de données, les frais Firebase pour les données téléchargées. En règle générale, cela représente l'essentiel de vos coûts de bande passante, mais ce n'est pas le seul facteur de votre facture.
  • Les frais généraux du Protocole: trafic supplémentaire entre le serveur et les clients est nécessaire pour établir et maintenir une session. Selon le protocole sous-jacent, ce trafic peut inclure : la surcharge du protocole en temps réel de Firebase Realtime Database, la surcharge de WebSocket et la surcharge de l'en-tête HTTP. Chaque fois qu'une connexion est établie, cette surcharge, combinée à toute surcharge de cryptage SSL, contribue aux coûts de connexion. Bien que ce ne soit pas beaucoup de bande passante pour une seule demande, cela peut représenter une partie importante de votre facture si vos charges utiles sont minuscules ou si vous effectuez des connexions fréquentes et courtes.
  • Chiffrement SSL en tête: Il y a un coût associé au cryptage SSL frais généraux nécessaires pour les connexions sécurisées. En moyenne, ce coût est d'environ 3,5 Ko pour la poignée de main initiale et d'environ des dizaines d'octets pour les en-têtes d'enregistrement TLS sur chaque message sortant. Pour la plupart des applications, il s'agit d'un petit pourcentage de votre facture. Cependant, cela peut devenir un pourcentage important si votre cas spécifique nécessite de nombreuses poignées de main SSL. Par exemple, les appareils qui ne prennent pas en charge les tickets de session TLS peuvent nécessiter un grand nombre de poignées de main de connexion SSL.
  • Données de la console Firebase: Bien que ce soit généralement pas une partie importante des coûts en temps réel de la base de données, les frais Firebase pour les données que vous avez lu et écriture à partir de la console Firebase.

Estimez votre consommation facturée

Pour voir vos connexions de base de données en temps réel et l' utilisation des données, vérifier l' utilisation onglet dans la console Firebase. Vous pouvez vérifier l'utilisation sur la période de facturation en cours, les 30 derniers jours ou les 24 dernières heures.

Firebase affiche des statistiques d'utilisation pour les métriques suivantes :

  • Connexions: Le nombre de simultanées, actuellement ouverts, les connexions en temps réel à la base de données. Cela inclut les connexions en temps réel suivantes : WebSocket, interrogation longue et événements envoyés par le serveur HTML. Il n'inclut pas les requêtes RESTful.
  • Stockage: Dans quelle mesure les données sont stockées dans votre base de données. Cela n'inclut pas l'hébergement Firebase ou les données stockées via d'autres produits Firebase.
  • Téléchargements: Tous les octets téléchargés à partir de votre base de données, y compris le protocole et les frais généraux de chiffrement.
  • Charge: Ce graphique montre combien de votre base de données est en cours d' utilisation, le traitement des demandes, sur un intervalle de 1 minute donnée. Vous pourriez voir des problèmes de performances lorsque votre base de données approche les 100%.

Optimiser l'utilisation

Il existe quelques bonnes pratiques que vous pouvez utiliser pour optimiser l'utilisation de votre base de données et les coûts de bande passante.

  • Utilisez les SDKs natifs: Chaque fois que possible, utiliser les kits de développement qui correspondent à la plate - forme de votre application, au lieu de l'API REST. Les SDK maintiennent des connexions ouvertes, réduisant les coûts de cryptage SSL qui s'ajoutent généralement à l'API REST.
  • Vérifiez les bugs: Si vos coûts de bande passante sont étonnamment élevés, vérifiez que votre application ne se synchronise pas plus de données ou la synchronisation plus souvent que vous avez initialement prévu. Pour les questions Pinpoint, utilisez l' outil profileur pour mesurer vos opérations de lecture et activer l'enregistrement de débogage dans l' Android , Objective-C et Web SDKs. Vérifiez l'arrière-plan et les processus de synchronisation dans votre application pour vous assurer que tout fonctionne comme prévu.
  • Réduire les connexions: Si possible, essayez d'optimiser la bande passante de la connexion. Les petites requêtes REST fréquentes peuvent être plus coûteuses qu'une seule connexion continue utilisant le SDK natif. Si vous utilisez l'API REST, envisagez d' utiliser un keep-alive HTTP ou les événements envoyés par le serveur , ce qui peut réduire les coûts de authentifications SSL.
  • Utilisez des tickets de session TLS: réduire les frais généraux de cryptage SSL sur les connexions repris par l' émission de billets de session TLS . Ceci est particulièrement utile si vous avez besoin de connexions fréquentes et sécurisées à la base de données.
  • Requêtes d'index: l' indexation de vos données réduit la bande passante totale que vous utilisez pour les requêtes, ce qui a le double avantage de réduire vos coûts et d' augmenter les performances de votre base de données. Utilisez l'outil de profileur pour trouver des requêtes non indexées dans la base de données.
  • Optimisez vos auditeurs: Ajouter des requêtes pour limiter les données que vos opérations retournent et écouter les auditeurs d'utilisation que les mises à jour uniquement de téléchargement de données - par exemple, on() au lieu d' once() . De plus, placez vos auditeurs aussi loin que possible du chemin pour limiter la quantité de données qu'ils synchronisent.
  • Réduction des coûts de stockage: exécuter des travaux de nettoyage périodique et réduire les données en double dans votre base de données.
  • Utiliser des règles: empêcher toute opération, non autorisées potentiellement coûteuses sur votre base de données. Par exemple, l'utilisation de règles de base de données en temps réel Firebase pourrait éviter un scénario dans lequel un utilisateur malveillant télécharge à plusieurs reprises l'intégralité de votre base de données. En savoir plus sur l' utilisation Firebase en temps réel les règles de base de données .

Le meilleur plan d'optimisation pour votre application dépend de votre cas d'utilisation particulier. Bien que cela ne constitue pas une liste exhaustive des meilleures pratiques, vous pouvez trouver plus de conseils et astuces des experts Firebase sur notre chaîne Slack ou sur débordement de la pile .