Estatísticas do Datastore

O Firestore no modo Datastore (Datastore) mantém estatísticas sobre os dados armazenados em um aplicativo, como o número de entidades existentes, de que tipo ou quanto espaço é usado por valores de propriedade de um determinado tipo.

É possível conferir essas estatísticas no console do Google Cloud de uma das seguintes maneiras:

  • Na página Painel.
  • Na página Entidades, execute uma consulta GQL na forma de SELECT * FROM __Stat_Kind__.
  • De maneira programática no aplicativo, consultando entidades com nomes especiais usando a API Datastore. Para mais informações sobre a API Datastore, consulte APIs e referência.

O Datastore usa nomes de tipo que começam e terminam com dois sublinhados para identificar entidades especiais que fornecem estatísticas sobre seus dados. Elas são chamadas de entidades de estatísticas. Por exemplo, cada app tem uma entidade do tipo __Stat_Total__, que representa estatísticas sobre todas as entidades em um banco de dados do modo Datastore.

As entidades de estatísticas rastreiam informações sobre seus dados e oferecem insights sobre o uso deles. Elas são criadas automaticamente. Cada entidade de estatística tem as seguintes propriedades:

  • count: o número de itens considerados pela estatística (um número inteiro longo)
  • bytes: o tamanho total dos itens para essa estatística (um número inteiro longo)
  • timestamp: a hora da atualização mais recente na estatística (um valor de data e hora)

Cada entidade pertence a um tipo específico. Tipo de estatísticas indica a categoria de estatísticas que estão sendo coletadas ou usadas. Use o tipo para identificar a finalidade de uma estatística, como otimizar uma consulta, melhorar a performance ou a análise de dados.

Alguns tipos de estatísticas também têm propriedades adicionais listadas na seção Lista de estatísticas deste documento.

Quando o sistema de estatísticas cria novas entidades, ele não exclui as entidades anteriores imediatamente. A melhor maneira de ter uma visão consistente das estatísticas é consultar a entidade de estatística com o timestamp mais recente e usar esse valor como filtro ao buscar outras entidades de estatística.

O sistema de estatísticas também cria estatísticas específicas para cada namespace. Os nomes de tipo das estatísticas específicas do namespace recebem o prefixo __Stat_Ns__, seguido pelos mesmos sufixos dos nomes de tipo das estatísticas que se aplicam a todo o aplicativo.

Se um aplicativo não usar namespaces, o sistema de estatísticas não vai criar estatísticas específicas de namespace. Só é possível encontrar estatísticas específicas de namespace no namespace em que elas são relevantes.

Lista de estatísticas

Confira a seguir uma lista de estatísticas disponíveis:

Estatística Tipo de entidade de estatística Descrição
todas as entidades __Stat_Total__
Entrada específica do namespace:
__Stat_Ns_Total__
Todas as entidades. Propriedades adicionais:

entity_bytes: o armazenamento na tabela de entidades medido em bytes.
builtin_index_bytes: o armazenamento em entradas de índice integradas medido em bytes.
builtin_index_count: a contagem de entradas de índice integrado.
composite_index_bytes: o armazenamento em entradas de índice composto medido em bytes.
composite_index_count: a contagem de entradas de índice composto.
todas as entidades em um namespace __Stat_Namespace__
As entidades __Stat_Namespace__ são criadas para cada namespace encontrado e são encontradas apenas no namespace de string vazia.
Todas as entidades de um namespace.

subject_namespace: o namespace representado (uma string)
entity_bytes: o armazenamento na tabela de entidades medido em bytes.
builtin_index_bytes: o armazenamento em entradas de índice integradas medido em bytes.
builtin_index_count: a contagem de entradas de índice integrado.
composite_index_bytes: o armazenamento em entradas de índice composto medido em bytes.
composite_index_count: a contagem de entradas de índice composto.

Para mais informações, consulte a seção Limitações de estatísticas deste documento.
todas as entradas em índices definidos pelo aplicativo __Stat_Kind_CompositeIndex__
Entrada específica do namespace:
__Stat_Ns_Kind_CompositeIndex__
Entradas na tabela do índice composto, uma entidade de estatística para cada tipo de entidade armazenada Propriedades adicionais:

alphanumeric_id: o identificador alfanumérico do índice. O mesmo identificador usado em gcloud e na API.
index_id: representação de número inteiro interno do ID do índice. Para métodos gcloud e de API, use alphanumeric_id.
kind_name: o nome do tipo representado (uma string)
last_known_usage_timestamp: a última vez que este índice exibiu uma consulta. Sempre haverá um tempo entre stat_tracked_since_time e o carimbo de data/hora. Defina como null se nenhum uso tiver sido registrado nesse período. Não está presente para __Stat_Ns_Kind_CompositeIndex__.
stat_tracked_since_time: o início do período em que o uso do índice é conhecido. Não está presente para __Stat_Ns_Kind_CompositeIndex__.
todas as entradas em índices integrados __Stat_Kind_BuiltinIndex__ Informações sobre os índices integrados no banco de dados. Uma entidade de estatística para cada índice integrado. Propriedades adicionais:

property_name: o nome da propriedade indexada.
kind_name: o nome do tipo representado (uma string).
api_scope: Firestore ou Datastore.
query_scope: o escopo da consulta do índice. Sempre defina como COLLECTION_GROUP (tipo) para bancos de dados do Datastore.
value_mode: o modo do escopo da consulta, como ASC ou DESC.
last_known_usage_timestamp: a última vez que este índice atendeu a uma consulta. Sempre haverá um tempo entre stat_tracked_since_time e o carimbo de data/hora. Defina como null se nenhum uso tiver sido registrado nesse período.
stat_tracked_since_time: o início do intervalo de tempo em que o uso do índice é conhecido.
entidades de um tipo __Stat_Kind__
Entrada específica do namespace:
__Stat_Ns_Kind__
As entidades de um tipo, uma entidade de estatística para cada tipo de entidade armazenado. Propriedades adicionais:

kind_name: o nome do tipo representado (uma string)
entity_bytes: o armazenamento na tabela de entidades medido em bytes.
builtin_index_bytes: o armazenamento em entradas de índice integradas medido em bytes.
builtin_index_count: a contagem de entradas de índice integrado.
composite_index_bytes: o armazenamento em entradas de índice composto medido em bytes.
composite_index_count: a contagem de entradas de índice composto.
entidades raiz de um tipo __Stat_Kind_IsRootEntity__
Entrada específica do namespace:
__Stat_Ns_Kind_IsRootEntity__
Entidades de um tipo que são entidades raiz de um grupo de entidades (sem pai ancestral), uma entidade de estatística para cada tipo de entidade armazenado. Propriedades adicionais:

kind_name: o nome do tipo representado (uma string)
entity_bytes: o armazenamento na tabela de entidades medido em bytes.
entidades não raiz de um tipo __Stat_Kind_NotRootEntity__
Entrada específica do namespace:
__Stat_Ns_Kind_NotRootEntity__
Entidades de um tipo que não são entidades raiz do grupo de entidades (com pai ancestral), uma entidade de estatística para cada tipo de entidade armazenado. Propriedades adicionais:

kind_name: o nome do tipo representado (uma string)
entity_bytes: o armazenamento na tabela de entidades medido em bytes.
propriedades de um tipo __Stat_PropertyType__
Entrada específica do namespace:
__Stat_Ns_PropertyType__
Propriedades de um tipo de valor em todas as entidades, uma entidade de estatística por tipo de valor. Propriedades adicionais:

property_type: o nome do tipo de valor (uma string)
entity_bytes: o armazenamento na tabela de entidades medido em bytes.
builtin_index_bytes: o armazenamento em entradas de índice integradas medido em bytes.
builtin_index_count: a contagem de entradas de índice integrado.
propriedades de um tipo por tipo __Stat_PropertyType_Kind__
Entrada específica do namespace:
__Stat_Ns_PropertyType_Kind__
Propriedades de um tipo de valor nas entidades de determinado tipo, uma entidade de estatística por combinação de tipo de propriedade e tipo.

Propriedades adicionais:

property_type: o nome do tipo de valor (uma string)
kind_name: o nome do tipo representado (uma string)
entity_bytes: o armazenamento na tabela de entidades medido em bytes.
builtin_index_bytes: o armazenamento no índice integrado medido em bytes.
builtin_index_count: a contagem de entradas de índice integradas.

Para mais informações, consulte a seção Limitações de estatísticas deste documento.
propriedades com um nome __Stat_PropertyName_Kind__
Entrada específica do namespace:
__Stat_Ns_PropertyName_Kind__
Propriedades com determinado nome nas entidades de determinado tipo, uma entidade de estatística por combinação de nome de propriedade exclusivo e tipo. Propriedades adicionais:

property_name: o nome da propriedade (uma string)
kind_name: o nome do tipo representado (uma string)
entity_bytes: o armazenamento na tabela de entidades medido em bytes.
builtin_index_bytes: o armazenamento em entradas de índice integradas medido em bytes.
builtin_index_count: a contagem de entradas de índice integrado.
propriedades de um tipo e com um nome __Stat_PropertyType_PropertyName_Kind__
Entrada específica do namespace:
__Stat_Ns_PropertyType_PropertyName_Kind__
Propriedades com um determinado nome e de um tipo de valor específico nas entidades de um certo tipo. Uma entidade de estatística por combinação de nome de propriedade, tipo de valor e tipo existente no Cloud Datastore.

Propriedades adicionais:

property_type: o nome do tipo de valor (uma string)
property_name: o nome da propriedade (uma string).
kind_name: o nome do tipo representado (uma string).
entity_bytes: o armazenamento na tabela de entidades medido em bytes.
builtin_index_bytes: o armazenamento em entradas de índice integradas medido em bytes.
builtin_index_count: a contagem de entradas de índice integradas.

Para mais informações, consulte a seção Limitações de estatísticas deste documento.

Algumas estatísticas se referem a tipos de valor de propriedade por nome, como strings. Veja estes nomes:

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

Limitações das estatísticas

As estatísticas têm as seguintes limitações:

  • A propriedade __Stat_PropertyType_Kind__ e a propriedade __Stat_PropertyType_PropertyName_Kind__ retornam metadados do tipo de propriedade para tipos de valor matriz e registram separadamente o tipo de propriedade para cada valor na matriz. Por exemplo, se uma propriedade de matriz armazenar uma lista de strings, ela vai registrar o tipo de propriedade como STRING, enquanto o tipo real é ARRAY<STRING>.
  • As entidades __Stat_Namespace__ contêm as mesmas informações encontradas nos registros __Stat_Ns_Total__. As entidades __Stat_Namespace__ são armazenadas no namespace vazio e contêm um campo subject_namespace que descreve o namespace a que pertencem. Os registros __Stat_Ns_Total__ são armazenados no namespace ao qual se referem e, portanto, não contêm um campo subject_namespace. Por isso, uma consulta no tipo __Stat_Namespace__ (do namespace de string vazia) em ordem decrescente por bytes listará primeiro os namespaces que consomem o maior armazenamento. Como não é possível fazer consultas em namespaces, qualquer consulta por entidades __Stat_Ns_Total__ apenas produzirá, no máximo, um único registro.

Ordem de queda das entidades de estatísticas

Aplicativos com milhares de namespaces, tipos ou nomes de propriedade exigem um grande número de entidades de estatísticas. Para reduzir a sobrecarga de armazenamento e atualização das estatísticas, os bancos de dados do Firestore no modo Datastore descartam progressivamente as entidades de estatísticas de acordo com a ordem listada mais adiante.

As entidades de estatísticas de resumo __Stat_Kind_CompositeIndex__, __Stat_PropertyType__ e __Stat_Total__ nunca são descartadas.

As entidades de estatísticas são inseridas em grupos na seguinte ordem padrão:

  1. Estatísticas por namespace, por tipo e por propriedade:

    • __Stat_Ns_PropertyName_Kind__
    • __Stat_Ns_PropertyType_PropertyName_Kind__
  2. Estatísticas por tipo e por propriedade

    • __Stat_PropertyName_Kind__
    • __Stat_PropertyType_PropertyName_Kind__
  3. Estatísticas por namespace

    • __Stat_Namespace__
    • __Stat_Ns_Kind_CompositeIndex__
    • __Stat_Ns_PropertyType__
    • __Stat_Ns_Total__

As entidades de estatísticas de tipo têm a seguinte ordem de queda:

  1. Estatísticas por namespace e por tipo

    • __Stat_Ns_Kind__
    • __Stat_Ns_Kind_IsRootEntity__
    • __Stat_Ns_Kind_NotRootEntity__
    • __Stat_Ns_PropertyType_Kind__
  2. Estatísticas por tipo

    • __Stat_Kind__
    • __Stat_Kind_IsRootEntity__
    • __Stat_Kind_NotRootEntity__
    • __Stat_PropertyType_Kind__

A seguir