Estatísticas do Datastore nos serviços agrupados antigos

Nota: os programadores que criam novas aplicações são fortemente aconselhados a usar a biblioteca de cliente NDB, que tem várias vantagens em comparação com esta biblioteca de cliente, como o armazenamento em cache automático de entidades através da API Memcache. Se estiver a usar atualmente a biblioteca cliente DB mais antiga, leia o guia de migração de DB para NDB

O Datastore mantém estatísticas sobre os dados armazenados para uma aplicação, como o número de entidades de um determinado tipo ou o espaço usado pelos valores das propriedades de um determinado tipo. Pode ver estas estatísticas na Google Cloud consola, na página Painel de controlo.

Também pode aceder a estes valores de forma programática na aplicação consultando entidades com nomes especiais através da API Datastore. Cada estatística é acessível como uma entidade cujo nome do tipo começa e termina com dois carateres de sublinhado. Por exemplo, cada app tem exatamente uma entidade do tipo __Stat_Total__ que representa estatísticas sobre todas as entidades no Datastore no total. 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)

Alguns tipos de estatísticas também têm propriedades adicionais, indicadas abaixo.

Uma aplicação Python pode usar classes de modelos fornecidas pelo pacote google.appengine.ext.db.stats para aceder a entidades de estatísticas.

from google.appengine.ext.db import stats

global_stat = stats.GlobalStat.all().get()
print 'Total bytes stored: %d' % global_stat.bytes
print 'Total entities stored: %d' % global_stat.count

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

As entidades de estatísticas estão incluídas nos valores de estatísticas calculados. As entidades de estatísticas ocupam espaço relativamente ao número de tipos únicos e nomes de propriedades usados pela aplicação.

O sistema de estatísticas também cria estatísticas específicas para cada namespace Tenha em atenção que, se uma aplicação não usar namespaces do Datastore, não são criadas estatísticas específicas do namespace. As estatísticas específicas do espaço de nomes encontram-se no espaço de nomes ao qual são específicas. Os nomes dos tipos para estatísticas específicas do espaço de nomes têm o prefixo __Stat_Ns_ e o mesmo sufixo correspondente que os tipos de estatísticas ao nível da aplicação.

As aplicações com milhares de espaços de nomes, tipos ou nomes de propriedades requerem um número muito elevado de entidades de estatísticas. Para manter a sobrecarga do armazenamento e da atualização das estatísticas razoável, o Datastore elimina progressivamente as entidades de estatísticas, pela seguinte ordem:

  • 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 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__ e __Stat_PropertyType_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 de resumo (__Stat_Kind_CompositeIndex__, __Stat_PropertyType__, __Stat_Total__) nunca são ignoradas.

Segue-se a lista completa de estatísticas disponíveis:

Estatística Tipo de entidade de estatísticas Descrição
todas as entidades __Stat_Total__
Classe Python: GlobalStat
Entrada específica do espaço de nomes:
__Stat_Ns_Total__
Classe Python: NamespaceGlobalStat
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__
Classe Python: NamespaceStat
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 vazio.
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.
Todas as entradas nos índices definidos pela aplicação __Stat_Kind_CompositeIndex__
Entrada específica do espaço de nomes: __Stat_Ns_Kind_CompositeIndex__

classe Python: KindStat
Entradas na tabela de índice composto; uma entidade de estatísticas para cada tipo de entidade armazenada. Propriedades adicionais:

index_id, o ID do índice.
kind_name, o nome do tipo representado (uma string)
entidades de um tipo __Stat_Kind__
Classe Python: KindStat
Entrada específica do espaço de nomes:
__Stat_Ns_Kind__
Classe Python: NamespaceKindStat
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__
Classe Python: KindRootEntityStat
Entrada específica do espaço de nomes:
__Stat_Ns_Kind_IsRootEntity__
Classe Python: NamespaceKindRootEntityStat
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__
Classe Python: KindNotRootEntityStat
Entrada específica do espaço de nomes:
__Stat_Ns_Kind_NotRootEntity__
Classe Python: NamespaceKindNotRootEntityStat
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__
Classe Python: PropertyTypeStat
Entrada específica do espaço de nomes:
__Stat_Ns_PropertyType__
Classe Python: NamespacePropertyTypeStat
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__
Classe Python: KindPropertyTypeStat
Entrada específica do espaço de nomes:
__Stat_Ns_PropertyType_Kind__
Classe Python: NamespaceKindPropertyTypeStat
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 integrado medido em bytes.
builtin_index_count: a contagem de entradas de índice incorporadas.
propriedades com um nome __Stat_PropertyName_Kind__
Classe Python: KindPropertyNameStat
Entrada específica do espaço de nomes:
__Stat_Ns_PropertyName_Kind__
Classe Python: NamespaceKindPropertyNameStat
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__
Classe Python: KindPropertyNamePropertyTypeStat
Entrada específica do espaço de nomes:
__Stat_Ns_PropertyType_PropertyName_Kind__
Classe Python: NamespaceKindPropertyNamePropertyTypeStat
Propriedades com um determinado nome e de um determinado tipo de valor em entidades de um determinado tipo; uma entidade de estatísticas por combinação de nome da propriedade, tipo de valor e tipo que existe no 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 incorporadas medido em bytes.
builtin_index_count: a contagem de entradas de índice incorporadas.

Algumas estatísticas referem-se aos tipos de valores de propriedades do Datastore pelo 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"
só produzirá, no máximo, um único registo.