Estatísticas do Datastore

O Firestore no modo Datastore (Datastore) mantém estatísticas sobre os dados que armazena numa aplicação, como o número de entidades existentes, de que tipo ou a quantidade de espaço usado pelos valores das propriedades de um determinado tipo.

Pode ver estas estatísticas na Google Cloud consola de uma das seguintes formas:

  • Na página Painel de controlo.
  • Na página Entidades, execute uma consulta GQL no formato SELECT * FROM __Stat_Kind__.
  • Programaticamente na aplicação, consultando entidades com nomes especiais através da API Datastore. Para mais informações sobre a API Datastore, consulte APIs e referência.

O Datastore usa nomes de tipos que começam e terminam com dois carateres de sublinhado para identificar entidades especiais que fornecem estatísticas sobre os seus dados. Estes elementos são denominados entidades de estatísticas. Por exemplo, cada app tem uma entidade do tipo __Stat_Total__, que representa estatísticas sobre todas as entidades numa base de dados do modo Datastore.

As entidades de estatísticas acompanham informações sobre os seus dados e oferecem-lhe estatísticas sobre a sua utilização de dados. São criados automaticamente. Cada entidade de estatísticas 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 esta estatística (um número inteiro longo)
  • timestamp: a hora da atualização mais recente da estatística (um valor de data/hora)

Cada entidade pertence a um tipo específico. Statistics kind indica a categoria das estatísticas que estão a ser recolhidas ou usadas. Use o tipo para identificar a finalidade de uma estatística, como otimizar uma consulta, melhorar o desempenho ou analisar dados.

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

Quando o sistema de estatísticas cria novas entidades estatísticas, não elimina imediatamente as entidades estatísticas anteriores. A melhor forma de obter uma vista consistente das estatísticas é consultar a entidade de estatísticas com o timestamp mais recente e, em seguida, usar esse valor de data/hora como filtro quando obtiver outras entidades de estatísticas.

O sistema de estatísticas também cria estatísticas específicas para cada espaço de nomes. Os nomes dos tipos de estatísticas específicas do espaço de nomes têm o prefixo __Stat_Ns__, seguido dos mesmos sufixos que os nomes dos tipos de estatísticas que se aplicam a toda a aplicação.

Se uma aplicação não usar espaços de nomes, o sistema de estatísticas não cria estatísticas específicas do espaço de nomes. Só pode encontrar estatísticas específicas do espaço de nomes no espaço de nomes ao qual são relevantes.

Lista de estatísticas

Segue-se uma lista das estatísticas disponíveis:

Estatística Tipo de entidade de estatísticas Descrição
todas as entidades __Stat_Total__
Entrada específica do espaço de nomes:
__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 incorporadas medido em bytes.
builtin_index_count: a contagem de entradas de índice incorporadas.
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 num espaço de nomes __Stat_Namespace__
Tenha em atenção que as entidades __Stat_Namespace__ são criadas para cada espaço de nomes encontrado e só são encontradas no espaço de nomes de string vazia.
Todas as entidades num espaço de nomes.

subject_namespace: o espaço de nomes representado (uma string)
entity_bytes: o armazenamento na tabela de entidades medido em bytes.
builtin_index_bytes: o armazenamento em entradas de índice incorporadas medido em bytes.
builtin_index_count: a contagem de entradas de índice incorporadas.
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 secção Limitações das estatísticas deste documento.
Todas as entradas nos índices definidos pela aplicação __Stat_Kind_CompositeIndex__
Entrada específica do espaço de nomes:
__Stat_Ns_Kind_CompositeIndex__
Entradas na tabela de índice composto; uma entidade de estatísticas para cada tipo de entidade armazenada. Propriedades adicionais:

alphanumeric_id: o identificador alfanumérico do índice. O mesmo identificador usado no gcloud e na API.
index_id: representação de número inteiro interno do ID do índice. Para gcloud e métodos da API, use alphanumeric_id em alternativa.
kind_name: o nome do tipo representado (uma string)
last_known_usage_timestamp: a última vez que este índice respondeu a uma consulta. Será sempre um momento entre stat_tracked_since_time e a data/hora. Definido como null se não tiver sido registada nenhuma utilização nesse período. Não presente para __Stat_Ns_Kind_CompositeIndex__.
stat_tracked_since_time: o início do período em que a utilização do índice é conhecida. Não presente para __Stat_Ns_Kind_CompositeIndex__.
Todas as entradas nos índices incorporados __Stat_Kind_BuiltinIndex__ Informações sobre os índices incorporados na base de dados. Uma entidade de estatísticas para cada índice incorporado. 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 âmbito da consulta de índice. Defina sempre como COLLECTION_GROUP (tipo) para bases de dados do Datastore.
value_mode: o modo do âmbito da consulta, como ASC ou DESC.
last_known_usage_timestamp: a última vez que este índice respondeu a uma consulta. Será sempre um momento entre stat_tracked_since_time e a data/hora. Definido como null se não tiver sido registada nenhuma utilização nesse período.
stat_tracked_since_time: o início do período em que a utilização do índice é conhecida.
entidades de um tipo __Stat_Kind__
Entrada específica do espaço de nomes:
__Stat_Ns_Kind__
Entidades de um tipo; uma entidade de estatísticas para cada tipo de entidade armazenada. 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 incorporadas medido em bytes.
builtin_index_count: a contagem de entradas de índice incorporadas.
composite_index_bytes: o armazenamento em entradas de índice composto medido em bytes.
composite_index_count: a contagem de entradas de índice composto.
entidades de raiz de um tipo __Stat_Kind_IsRootEntity__
Entrada específica do espaço de nomes:
__Stat_Ns_Kind_IsRootEntity__
Entidades de um tipo que são entidades raiz do grupo de entidades (não têm um elemento principal antecessor); uma entidade de estatísticas para cada tipo de entidade armazenada. 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 principais de um tipo __Stat_Kind_NotRootEntity__
Entrada específica do espaço de nomes:
__Stat_Ns_Kind_NotRootEntity__
Entidades de um tipo que não são entidades raiz do grupo de entidades (têm um elemento superior antecessor); uma entidade de estatísticas para cada tipo de entidade armazenada. 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 espaço de nomes:
__Stat_Ns_PropertyType__
Propriedades de um tipo de valor em todas as entidades; uma entidade de estatísticas 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 incorporadas medido em bytes.
builtin_index_count: a contagem de entradas de índice incorporadas.
propriedades de um tipo por género __Stat_PropertyType_Kind__
Entrada específica do espaço de nomes:
__Stat_Ns_PropertyType_Kind__
Propriedades de um tipo de valor em entidades de um determinado tipo; uma entidade de estatísticas 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 incorporado medido em bytes.
builtin_index_count: a contagem de entradas de índice incorporadas.

Para mais informações, consulte a secção Limitações das estatísticas deste documento.
propriedades com um nome __Stat_PropertyName_Kind__
Entrada específica do espaço de nomes:
__Stat_Ns_PropertyName_Kind__
Propriedades com um determinado nome em todas as entidades de um determinado tipo; uma entidade de estatísticas por combinação de nome de propriedade e tipo exclusivos. 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 incorporadas medido em bytes.
builtin_index_count: a contagem de entradas de índice incorporadas.
propriedades de um tipo e com um nome __Stat_PropertyType_PropertyName_Kind__
Entrada específica do espaço de nomes:
__Stat_Ns_PropertyType_PropertyName_Kind__
Propriedades com um determinado nome e de um determinado tipo de valor em todas as entidades de um determinado tipo; uma entidade de estatísticas por combinação de nome da propriedade, tipo de valor e tipo que existe na base de dados.

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 incorporadas medido em bytes.
builtin_index_count: a contagem de entradas de índice incorporadas.

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

Algumas estatísticas referem-se aos tipos de valores de propriedades por nome, como strings. Estes nomes são os seguintes:

  • "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__ devolvem metadados do tipo de propriedade para tipos de valores array e registam separadamente o tipo de propriedade para cada valor na matriz. Por exemplo, se uma propriedade de matriz armazenar uma lista de strings, a propriedade regista o tipo de propriedade como STRING, enquanto o tipo de propriedade real é ARRAY<STRING>.
  • As entidades __Stat_Namespace__ contêm as mesmas informações encontradas nos registos __Stat_Ns_Total__. As entidades __Stat_Namespace__ são armazenadas no espaço de nomes vazio e contêm um campo subject_namespace que descreve o espaço de nomes ao qual pertencem. Os registos __Stat_Ns_Total__ são armazenados no espaço de nomes ao qual se referem e, por isso, não contêm um campo subject_namespace. Assim, uma consulta do tipo __Stat_Namespace__ (do espaço de nomes de string vazio) ordenada por ordem descendente por bytes apresenta primeiro os espaços de nomes que consomem o maior armazenamento. Uma vez que as consultas em todos os espaços de nomes não são possíveis, qualquer consulta de entidades __Stat_Ns_Total__ produzirá sempre, no máximo, um único registo.

Ordem de eliminação de entidades de estatísticas

As aplicações com milhares de espaços de nomes, tipos ou nomes de propriedades requerem um grande número de entidades de estatísticas. Para reduzir a sobrecarga do armazenamento e da atualização das estatísticas, as bases de dados do Firestore no modo Datastore eliminam progressivamente as entidades de estatísticas de acordo com a ordem indicada mais tarde.

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

As entidades de estatísticas são ignoradas em grupos pela seguinte ordem predefinida:

  1. Estatísticas por espaço de nomes, 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 espaço de nomes

    • __Stat_Namespace__
    • __Stat_Ns_Kind_CompositeIndex__
    • __Stat_Ns_PropertyType__
    • __Stat_Ns_Total__

As entidades de estatísticas do tipo têm a seguinte ordem de eliminação:

  1. Estatísticas por espaço de nomes 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__

O que se segue?