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 comoSTRING
, 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 camposubject_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 camposubject_namespace
. Assim, uma consulta do tipo__Stat_Namespace__
(do espaço de nomes de string vazio) ordenada por ordem descendente porbytes
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:
Estatísticas por espaço de nomes, por tipo e por propriedade:
__Stat_Ns_PropertyName_Kind__
__Stat_Ns_PropertyType_PropertyName_Kind__
estatísticas por tipo e por propriedade
__Stat_PropertyName_Kind__
__Stat_PropertyType_PropertyName_Kind__
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:
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__
estatísticas por tipo
__Stat_Kind__
__Stat_Kind_IsRootEntity__
__Stat_Kind_NotRootEntity__
__Stat_PropertyType_Kind__