Utilisation et limites

Consultez ce guide pour comprendre les limites de Cloud Firestore et consultez la section Tarification Cloud Firestore pour obtenir une explication complète et détaillée des coûts Cloud Firestore, y compris les points à surveiller.

Surveiller votre utilisation

Pour surveiller votre utilisation de Cloud Firestore, ouvrez l'onglet Utilisation Cloud Firestore dans la console Firebase. Le tableau de bord vous permet d'évaluer votre utilisation sur différentes périodes.

Utilisation détaillée dans la console Google Cloud

Lorsque vous créez un projet Firebase, vous créez également un projet Google Cloud. Les pages Quotas d'API Cloud Firestore et Quotas App Engine de la console Google Cloud permettent de suivre l'utilisation et les informations sur les quotas Cloud Firestore.

Quota gratuit

Cloud Firestore inclut un quota gratuit qui vous permet de démarrer sans frais avec votre base de données (default). Les montants de quotas gratuits sont répertoriés ci-dessous. Si vous avez besoin d'augmenter votre quota, vous devez activer la facturation pour votre projet Google Cloud.

Les quotas sont calculés sur une base quotidienne et réinitialisés vers minuit, heure du Pacifique.

Seule la base de données (default) peut bénéficier du quota gratuit.

Version gratuite Quotas
Données stockées 1 Gio
Lectures de documents 50 000 par jour
Écritures de documents 20 000 par jour
Suppressions de documents 20 000 par jour
Transfert de données sortant 10 Gio par mois

Les opérations et fonctionnalités suivantes n'incluent pas l'utilisation gratuite. Vous devez activer la facturation pour utiliser les fonctionnalités suivantes :

  • Utilisation de bases de données nommées (non par défaut)
  • Suppressions TTL
  • Données PITR
  • Sauvegarder les données
  • Opérations de restauration

Pour en savoir plus sur la facturation de ces fonctionnalités, consultez la section Tarifs du stockage.

Limites standards

Les tableaux suivants présentent les limites applicables à Cloud Firestore. Sauf indication contraire, ces limites sont strictes.

Bases de données

Limite Détails
Nombre maximal de bases de données par projet

100

Vous pouvez contacter l'assistance pour demander une augmentation de cette limite.

Collections, documents et champs

Limite Détails
Contraintes sur les ID de collection
  • Doivent être des caractères UTF-8 valides
  • Ne doivent pas dépasser 1 500 octets
  • Ne doivent pas contenir de barre oblique (/)
  • Ne doivent pas être composés d'un seul point (.) ni de doubles points (..)
  • Ne doivent pas correspondre à une expression régulière __.*__
Profondeur maximale des sous-collections 100
Contraintes sur les ID de document
  • Doivent être des caractères UTF-8 valides
  • Ne doivent pas dépasser 1 500 octets
  • Ne doivent pas contenir de barre oblique (/)
  • Ne doivent pas être composés d'un seul point (.) ni de doubles points (..)
  • Ne doivent pas correspondre à une expression régulière __.*__
  • Si vous importez des entités Datastore vers une base de données Firestore, les ID d'entité numérique sont exposés sous la forme __id[0-9]+__.
Taille maximale d'un nom de document 6 Kio
Taille maximale d'un document 1 Mio (1 048 576 octets)
Contraintes sur les noms de champ
  • Doivent être des caractères UTF-8 valides
  • Ne doivent pas correspondre à une expression régulière __.*__
Taille maximale d'un nom de champ 1 500 octets
Contraintes sur les chemins d'accès des champs
  • Doivent séparer les noms de champ avec un seul point (.)
  • Peut être transmis sous la forme d'une chaîne de segments délimités par des points (.), où chaque segment est un nom de champ simple ou un nom de champ entre guillemets (défini ci-dessous).
Un nom de champ est simple lorsque toutes les conditions suivantes sont remplies :
  • Le nom de champ ne contient que les caractères a-z, A-Z, 0-9 et le trait de soulignement (_).
  • Il ne commence pas par 0-9.
Un nom de champ entre guillemets commence et se termine par le caractère apostrophe (`). Par exemple, foo.`x&y` fait référence au champ x&y imbriqué sous le champ foo. Pour créer un nom de champ avec le caractère de guillemet, échappez-le avec le caractère de barre oblique inverse (\). Pour des raisons pratiques, vous pouvez éviter d'utiliser des guillemets pour les noms de champ en transmettant le chemin d'accès au champ en tant qu'objet FieldPath (voir, par exemple, FieldPath JavaScript).
Taille maximale d'un chemin d'accès de champ 1 500 octets
Taille maximale d'une valeur de champ 1 Mio – 89 octets (1 048 487 octets)
Profondeur maximale des champs dans une carte ou un tableau

20

Les champs de carte et de tableau ajoutent un niveau à la profondeur globale d'un objet. Par exemple, l'objet suivant a une profondeur totale de trois niveaux:


{
  nested_map: {         #depth 1
    nested_array: [     #depth 2
      {
        foo: "bar"      #depth 3
      }
    ]
  }
}
      

Écritures et transactions

En plus de ces limites, consultez les bonnes pratiques en matière de conception à grande échelle.

Limite Détails
Taille maximale des requêtes API 10 Mio
Durée maximale d'une transaction 270 secondes, avec un délai d'inactivité avant expiration de 60 secondes
Nombre maximal de transformations de champ pouvant être effectuées dans un seul document via une opération Commit ou une transaction 500

Index

Les limites suivantes s'appliquent aux index à champ unique et aux index composites :

Limite Détails
Nombre maximal d'index composites pour une base de données
Nombre maximal de configurations à champ unique pour une base de données
  • 200 lorsque vous n'avez pas activé la facturation pour votre projet Google Cloud.

    Si vous avez besoin d'augmenter votre quota, vous devez activer la facturation pour votre projet Google Cloud.

  • 500 fois lorsque vous activez la facturation pour votre projet Google Cloud.

Une configuration au niveau du champ peut contenir plusieurs configurations pour le même champ. Par exemple, une exception d'indexation à champ unique et une règle TTL sur le même champ comptent pour une seule configuration de champ dans la limite.

Nombre maximal d'entrées d'index pour chaque document

40 000

Le nombre d'entrées d'index représente la somme des entrées suivantes pour un document :

  • Nombre d'entrées d'index à champ unique
  • Nombre d'entrées d'index composite

Pour savoir comment Cloud Firestore transforme un document et un ensemble d'index en entrées d'index, consultez cet exemple de nombre d'entrées d'index.

Nombre maximal de champs dans un indice composite 100
Taille maximale d'une entrée d'index

7,5 Kio

Pour savoir comment Cloud Firestore calcule la taille des entrées d'index, consultez la section Taille des entrées d'index.

Somme maximale des tailles d'entrée d'index d'un document

8 Mio

La taille totale représente la somme des tailles suivantes pour un document :

  • Somme des tailles d'entrée d'index à champ unique d'un document
  • Somme des tailles d'entrée d'index composite d'un document
  • Taille maximale d'une valeur de champ indexé

    1 500 octets

    Les valeurs de champ au-delà de 1 500 octets sont tronquées. Les requêtes impliquant des valeurs de champ tronquées peuvent renvoyer des résultats incohérents.

    Valeur TTL (Time to Live)

    Limite Détails
    Nombre maximal de configurations à champ unique pour une base de données
    • 200 lorsque vous n'avez pas activé la facturation pour votre projet Google Cloud.

      Si vous avez besoin de plus de quotas, vous devez activer la facturation pour votre projet Google Cloud.

    • 500 fois lorsque vous activez la facturation pour votre projet Google Cloud.

    Une configuration au niveau du champ peut contenir plusieurs configurations pour le même champ. Par exemple, une exception d'indexation à champ unique et une règle TTL sur le même champ comptent pour une seule configuration de champ dans la limite.

    Exportation/Importation

    Les limites ci-dessous sont appliquées aux opérations d'importation et d'exportation gérées :

    Limite Détails
    Nombre maximal total de requêtes d'exportation et d'importation autorisé par minute pour un projet 20
    Nombre maximal d'exportations et d'importations simultanées 50
    Nombre maximal de filtres d'ID de collection autorisé pour les requêtes d'exportation et d'importation 100

    Règles de sécurité

    Limite Détails
    Nombre maximal d'appels de méthode exists(), get() et getAfter() par requête
    • 10 pour les requêtes de documents uniques et les requêtes de type "query".
    • 20 pour les lectures de plusieurs documents, les transactions et les écritures par lot. La limite de 10 précédente s'applique également à chaque opération.

      Par exemple, imaginons que vous créez une requête d'écriture par lot comprenant trois opérations, et que vos règles de sécurité utilisent deux appels d'accès au document pour valider chaque écriture. Dans ce cas, chaque écriture utilise deux de ses 10 appels d'accès et la requête d'écriture par lot utilise six de ses 20 appels d'accès.

    Le dépassement de l'une ou l'autre limite entraîne une erreur de type "permission refusée".

    Certains appels d'accès aux documents peuvent être mis en cache, et les appels en cache ne sont pas pris en compte dans les limites.

    Profondeur maximale d'instructions match imbriquées 10
    Longueur maximale du chemin, en segments de chemin, autorisée dans un ensemble d'instructions match imbriquées 100
    Nombre maximal de variables de capture de chemin autorisées dans un ensemble d'instructions match imbriquées 20
    Profondeur maximale des appels de fonction 20
    Nombre maximal d'arguments de fonction 7
    Nombre maximal de liaisons de variables let par fonction 10
    Nombre maximal d'appels de fonction récursifs ou cycliques 0 (non autorisé)
    Nombre maximal d'expressions évaluées par requête 1 000
    Taille maximale d'un ensemble de règles Les ensembles de règles doivent respecter deux limites de taille :
    • une limite de 256 Ko applicable à la taille du texte source de l'ensemble de règles publié à partir de la console Firebase ou de la CLI à l'aide de firebase deploy.
    • une limite de 250 Ko applicable à la taille de l'ensemble de règles compilé qui apparaît lorsque Firebase traite la source et l'active sur le backend.

    Gérer les dépenses

    Pour éviter des frais inattendus sur votre facture, définissez des budgets mensuels et des alertes.

    Définir un budget mensuel

    Pour suivre vos coûts Cloud Firestore, créez un budget mensuel dans la console Google Cloud. Les budgets ne limitent pas votre utilisation, mais vous pouvez définir des alertes pour être averti lorsque vous approchez ou dépassez vos coûts prévus pour le mois.

    Pour définir un budget, accédez à la section Facturation de la console Google Cloud et créez un budget pour votre compte Cloud Billing. Vous pouvez utiliser les paramètres d'alerte par défaut ou les modifier pour envoyer des notifications à différents pourcentages de votre budget mensuel.

    En savoir plus sur la configuration des budgets et des alertes budgétaires