Statistiques Datastore

Firestore en mode Datastore (Datastore) conserve des statistiques sur les données que vous stockez dans une application, telles que le nombre d'entités, leur type ou l'espace utilisé par les valeurs de propriété d'un type donné.

Vous pouvez afficher ces statistiques dans la console Google Cloud de l'une des manières suivantes :

  • Sur la page Tableau de bord.
  • Sur la page Entités, exécutez une requête GQL sous la forme SELECT * FROM __Stat_Kind__.
  • de manière programmatique dans l'application en interrogeant des entités portant un nom spécifique à l'aide de l'API Datastore. Pour en savoir plus sur l'API Datastore, consultez API et documentation de référence.

Datastore utilise des noms de genres commençant et se terminant par deux traits de soulignement pour identifier les entités spéciales qui fournissent des statistiques sur vos données. Ces entités sont appelées entités statistiques. Par exemple, chaque application possède une entité de genre __Stat_Total__, qui représente des statistiques sur toutes les entités d'une base de données en mode Datastore.

Les entités de statistiques suivent les informations sur vos données et vous donnent des insights sur leur utilisation. Elles sont créées automatiquement. Chaque entité statistique possède les propriétés suivantes :

  • count : nombre d'éléments pris en compte par la statistique (un entier long)
  • bytes : la taille totale des éléments pour cette statistique (un entier long)
  • timestamp : heure de la mise à jour de la statistique la plus récente (valeur date-heure)

Chaque entité appartient à un genre spécifique. Statistics kind (Type de statistiques) indique la catégorie de statistiques collectées ou utilisées. Utilisez le type pour identifier l'objectif d'une statistique, comme l'optimisation d'une requête, l'amélioration des performances ou l'analyse des données.

Certains genres de statistiques possèdent également des propriétés supplémentaires, répertoriées dans la section Liste des statistiques de ce document.

Lorsque le système de statistiques crée des entités statistiques, il ne supprime pas immédiatement les anciennes. La meilleure façon d'obtenir une vue cohérente des statistiques consiste à rechercher l'entité statistique avec la valeur timestamp la plus récente, puis à utiliser cette valeur d'horodatage comme filtre lors de l'extraction d'autres entités statistiques.

Le système de statistiques crée également des statistiques spécifiques à chaque espace de noms. Les noms de genres des statistiques spécifiques à un espace de noms sont précédés du préfixe __Stat_Ns__, suivi des mêmes suffixes que les noms de genres des statistiques qui s'appliquent à l'ensemble de l'application.

Si une application n'utilise pas les espaces de noms, le système de statistiques ne crée pas de statistiques spécifiques à un espace de noms. Vous ne pouvez trouver les statistiques spécifiques à un espace de noms que dans l'espace de noms auquel elles se rapportent.

Liste des statistiques

Voici une liste des statistiques disponibles :

Statistique Genre d'entité statistique Description
Toutes les entités __Stat_Total__
Entrée spécifique d'un espace de noms :
__Stat_Ns_Total__
Toutes les entités. Propriétés supplémentaires :

entity_bytes : l'espace de stockage dans la table des entités, mesuré en octets
builtin_index_bytes : l'espace de stockage dans les entrées d'index intégrées, mesuré en octets
builtin_index_count : le nombre d'entrées d'index intégrées
composite_index_bytes : l'espace de stockage dans les entrées d'index composite, mesuré en octets
composite_index_count : le nombre d'entrées d'index composite.
Toutes les entités dans un espace de noms __Stat_Namespace__
Notez que les entités __Stat_Namespace__ sont créées pour chaque espace de noms rencontré et ne se trouvent que dans l'espace de noms de chaîne vide.
Toutes les entités dans un espace de noms.

subject_namespace : l'espace de noms représenté (une chaîne)
entity_bytes : l'espace de stockage dans la table des entités, mesuré en octets
builtin_index_bytes : l'espace de stockage dans les entrées d'index intégrées, mesuré en octets
builtin_index_count : le nombre d'entrées d'index intégrées
composite_index_bytes : l'espace de stockage dans les entrées d'index composite, mesuré en octets
composite_index_count : nombre d'entrées d'index composite.

Pour en savoir plus, consultez la section Limites des statistiques de ce document.
Toutes les entrées dans les index définis par l'application __Stat_Kind_CompositeIndex__
Entrée spécifique d'un espace de noms :
__Stat_Ns_Kind_CompositeIndex__
Entrées dans la table d'index composite ; une entité statistique pour chaque genre d'entité stockée. Propriétés supplémentaires :

alphanumeric_id : identifiant alphanumérique de l'index. Le même identifiant utilisé dans gcloud et l'API.
index_id : représentation interne sous forme d'entier de l'ID de l'index. Pour les méthodes gcloud et API, utilisez plutôt alphanumeric_id.
kind_name : le nom du genre représenté (une chaîne)
last_known_usage_timestamp : la dernière fois que cet index a diffusé une requête. Il s'agira toujours d'une heure comprise entre stat_tracked_since_time et l'horodatage. Définissez sur null si aucune utilisation n'a été enregistrée au cours de cette période. Absent pour __Stat_Ns_Kind_CompositeIndex__.
• stat_tracked_since_time : début de la période pour laquelle l'utilisation de l'index est connue. Non présent pour __Stat_Ns_Kind_CompositeIndex__.
Toutes les entrées dans les index intégrés __Stat_Kind_BuiltinIndex__ Informations sur les index intégrés dans la base de données. Une entité statistique pour chaque index intégré. Propriétés supplémentaires :

property_name : nom de la propriété indexée
kind_name : le nom du genre représenté (une chaîne).
api_scope : Firestore ou Datastore.
query_scope : portée de la requête d'index. Toujours défini sur COLLECTION_GROUP (type) pour les bases de données Datastore.
value_mode : mode du champ d'application de la requête, tel que ASC ou DESC.
• last_known_usage_timestamp : dernière fois que cet index a diffusé une requête. Il s'agira toujours d'une heure comprise entre stat_tracked_since_time et l'horodatage. Définissez sur null si aucune utilisation n'a été enregistrée au cours de cette période.
stat_tracked_since_time : début de la période pour laquelle l'utilisation de l'index est connue.
Entités d'un genre __Stat_Kind__
Entrée spécifique d'un espace de noms :
__Stat_Ns_Kind__
Entités d'un genre ; une entité statistique pour chaque genre d'entité stocké. Propriétés supplémentaires :

kind_name : le nom du genre représenté (une chaîne)
entity_bytes : l'espace de stockage dans la table des entités, mesuré en octets
builtin_index_bytes : l'espace de stockage dans les entrées d'index intégrées, mesuré en octets
builtin_index_count : le nombre d'entrées d'index intégrées
composite_index_bytes : l'espace de stockage dans les entrées d'index composite, mesuré en octets
composite_index_count : le nombre d'entrées d'index composite.
Entités racines d'un genre __Stat_Kind_IsRootEntity__
Entrée spécifique d'un espace de noms :
__Stat_Ns_Kind_IsRootEntity__
Entités d'un genre qui sont les entités racines d'un groupe d'entités (sans parent ascendant) ; une entité statistique pour chaque genre d'entité stocké. Propriétés supplémentaires :

kind_name : le nom du genre représenté (une chaîne)
entity_bytes : l'espace de stockage dans la table des entités, mesuré en octets
Entités non racines d'un genre __Stat_Kind_NotRootEntity__
Entrée spécifique d'un espace de noms :
__Stat_Ns_Kind_NotRootEntity__
Entités d'un genre qui ne sont pas les entités racines d'un groupe d'entités (avec parent ascendant) ; une entité statistique pour chaque genre d'entité stocké. Propriétés supplémentaires :

kind_name : le nom du genre représenté (une chaîne)
entity_bytes : l'espace de stockage dans la table des entités, mesuré en octets
propriétés d'un type __Stat_PropertyType__
Entrée spécifique d'un espace de noms :
__Stat_Ns_PropertyType__
Propriétés d'un type de valeur sur l'ensemble des entités ; une entité statistique par type de valeur. Propriétés supplémentaires :

property_type : le nom du type de valeur (une chaîne)
entity_bytes : l'espace de stockage dans la table des entités, mesuré en octets
builtin_index_bytes : l'espace de stockage dans les entrées d'index intégrées, mesuré en octets
builtin_index_count : le nombre d'entrées d'index intégrées
Propriétés d'un type par genre __Stat_PropertyType_Kind__
Entrée spécifique d'un espace de noms :
__Stat_Ns_PropertyType_Kind__
Propriétés d'un type de valeur sur les entités d'un genre donné ; une entité statistique par combinaison de type de propriété et de genre.

Propriétés supplémentaires :

property_type : le nom du type de valeur (une chaîne)
kind_name : le nom du genre représenté (une chaîne)
entity_bytes : l'espace de stockage dans la table des entités, mesuré en octets
builtin_index_bytes : l'espace de stockage dans les entrées d'index intégrées, mesuré en octets
builtin_index_count : le nombre d'entrées d'index intégrées.

Pour en savoir plus, consultez la section Limites des statistiques de ce document.
propriétés avec un nom __Stat_PropertyName_Kind__
Entrée spécifique d'un espace de noms :
__Stat_Ns_PropertyName_Kind__
Propriétés avec un nom donné sur les entités d'un genre donné ; une entité statistique par combinaison de nom de propriété unique et de genre. Propriétés supplémentaires :

property_name : le nom de la propriété (une chaîne)
kind_name : le nom du genre représenté (une chaîne)
entity_bytes : l'espace de stockage dans la table des entités, mesuré en octets
builtin_index_bytes : l'espace de stockage dans les entrées d'index intégrées, mesuré en octets
builtin_index_count : le nombre d'entrées d'index intégrées
Propriétés d'un type comportant un nom __Stat_PropertyType_PropertyName_Kind__
Entrée spécifique d'un espace de noms :
__Stat_Ns_PropertyType_PropertyName_Kind__
Propriétés avec un nom donné et un type de valeur donné sur les entités d'un genre donné ; une entité statistique par combinaison de nom de propriété, de type de valeur et de genre existant dans la base de données.

Propriétés supplémentaires :

property_type : le nom du type de valeur (une chaîne)
property_name : le nom de la propriété (une chaîne)
kind_name : le nom du genre représenté (une chaîne).
entity_bytes : l'espace de stockage dans la table des entités, mesuré en octets
builtin_index_bytes : l'espace de stockage dans les entrées d'index intégrées, mesuré en octets
builtin_index_count : le nombre d'entrées d'index intégrées.

Pour en savoir plus, consultez la section Limites des statistiques de ce document.

Certaines statistiques font référence aux types de valeur de propriété par nom, sous forme de chaînes. Ces noms sont les suivants :

  • "Blob"
  • "BlobKey"
  • "Boolean"
  • "Category"
  • "Date/Time"
  • "Email"
  • "Float"
  • "GeoPt"
  • "IM"
  • "Integer"
  • "Key"
  • "Link"
  • "NULL"
  • "PhoneNumber"
  • "PostalAddress"
  • "Rating"
  • "ShortBlob"
  • "String"
  • "Text"
  • "User"

Limites des statistiques

Les statistiques sont soumises aux limites suivantes :

  • Les propriétés __Stat_PropertyType_Kind__ et __Stat_PropertyType_PropertyName_Kind__ renvoient des métadonnées de type de propriété pour les types de valeurs array et enregistrent séparément le type de propriété pour chaque valeur du tableau. Par exemple, si une propriété de tableau stocke une liste de chaînes, la propriété enregistre le type de propriété en tant que STRING, tandis que le type de propriété réel est ARRAY<STRING>.
  • Les entités __Stat_Namespace__ comportent les mêmes informations que celles qui se trouvent dans les enregistrements __Stat_Ns_Total__. Les entités __Stat_Namespace__ sont stockées dans l'espace de noms vide et contiennent un champ subject_namespace décrivant l'espace de noms auquel elles appartiennent. Les enregistrements __Stat_Ns_Total__ sont stockés dans l'espace de noms auquel ils font référence et ne contiennent donc pas de champ subject_namespace. Par conséquent, une requête sur le genre __Stat_Namespace__ (depuis l'espace de noms de chaîne vide) par ordre de bytes décroissant va répertorier les espaces de noms qui consomment en premier la plus grande quantité d'espace de stockage. Étant donné que les requêtes sur les espaces de noms ne sont pas possibles, toute requête sur les entités __Stat_Ns_Total__ ne produira jamais plus d'un seul enregistrement.

Ordre de suppression des entités de statistiques

Les applications comportant des milliers d'espaces de noms, de genres ou de noms de propriétés nécessitent un grand nombre d'entités statistiques. Pour réduire la surcharge liée au stockage et à la mise à jour des statistiques, les bases de données Firestore en mode Datastore suppriment progressivement les entités de statistiques selon l'ordre indiqué plus loin.

Les entités statistiques récapitulatives __Stat_Kind_CompositeIndex__, __Stat_PropertyType__ et __Stat_Total__ ne sont jamais supprimées.

Les entités statistiques sont déposées dans des groupes dans l'ordre par défaut suivant :

  1. Statistiques par espace de noms, par genre et par propriété :

    • __Stat_Ns_PropertyName_Kind__
    • __Stat_Ns_PropertyType_PropertyName_Kind__
  2. Statistiques par genre et par propriété

    • __Stat_PropertyName_Kind__
    • __Stat_PropertyType_PropertyName_Kind__
  3. statistiques par espace de noms

    • __Stat_Namespace__
    • __Stat_Ns_Kind_CompositeIndex__
    • __Stat_Ns_PropertyType__
    • __Stat_Ns_Total__

Les entités statistiques de type "Kind" ont l'ordre de suppression suivant :

  1. Statistiques par espace de noms et par genre

    • __Stat_Ns_Kind__
    • __Stat_Ns_Kind_IsRootEntity__
    • __Stat_Ns_Kind_NotRootEntity__
    • __Stat_Ns_PropertyType_Kind__
  2. statistiques par genre

    • __Stat_Kind__
    • __Stat_Kind_IsRootEntity__
    • __Stat_Kind_NotRootEntity__
    • __Stat_PropertyType_Kind__

Étapes suivantes