Statistiche Datastore nei servizi legacy in bundle

Nota: gli sviluppatori che creano nuove applicazioni sono vivamente incoraggiati a utilizzare la libreria client NDB, che presenta diversi vantaggi rispetto alla libreria client, ad esempio la memorizzazione automatica delle cache tramite l'API Memcache. Se attualmente utilizzi la libreria client DB precedente, consulta la Guida alla migrazione da DB a NDB

Datastore conserva le statistiche sui dati archiviati per un'applicazione, ad esempio il numero di entità di un determinato tipo o la quantità di spazio utilizzata dai valori della proprietà di un determinato tipo. Puoi visualizzare queste statistiche nella pagina Dashboard della console Google Cloud.

Puoi anche accedere a questi valori in modo programmatico all'interno dell'applicazione eseguendo query sulle entità con nomi speciali utilizzando l'API Datastore. Ogni statistica è accessibile come entità il cui nome tipo inizia e termina con due trattini bassi. Ad esempio, ogni app ha esattamente una entità del tipo __Stat_Total__ che rappresenta le statistiche su tutte le entità in Datastore in totale. Ogni entità statistica ha le seguenti proprietà:

  • count, il numero di elementi considerati dalle statistiche (un numero intero lungo)
  • bytes, dimensione totale degli articoli per questa statistica (un numero intero lungo)
  • timestamp, l'ora dell'ultimo aggiornamento delle statistiche (un valore di data e ora)

Alcuni tipi di statistiche hanno anche proprietà aggiuntive, elencate di seguito.

Un'applicazione Python può utilizzare le classi di modelli fornite dal pacchetto google.appengine.ext.db.stats per accedere alle entità statistiche.

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 il sistema di statistiche crea nuove entità statistiche, non le elimina immediatamente. Il modo migliore per ottenere una visualizzazione coerente delle statistiche è eseguire una query per l'entità GlobalStat con l'elemento timestamp più recente, quindi utilizzare il valore del timestamp come filtro durante il recupero di altre entità statistiche.

Le entità statistiche sono incluse nei valori statistici calcolati. Le entità statistiche occupano spazio rispetto al numero di tipi unici e nomi di proprietà utilizzati dall'applicazione.

Il sistema di statistiche creerà inoltre statistiche specifiche per ogni spazio dei nomi. Tieni presente che se un'applicazione non utilizza gli spazi dei nomi di Datastore, non verranno create statistiche specifiche per lo spazio dei nomi. Le statistiche specifiche dello spazio dei nomi si trovano nello spazio dei nomi a cui sono specifiche. I nomi dei tipi di statistiche specifici per lo spazio dei nomi sono preceduti da __Stat_Ns_ e hanno lo stesso suffisso corrispondente ai tipi di statistiche a livello di applicazione.

Le applicazioni con migliaia di spazi dei nomi, tipi o nomi di proprietà richiedono un numero molto elevato di entità statistiche. Per mantenere l'overhead associato all'archiviazione e all'aggiornamento delle statistiche ragionevole, Datastore elimina progressivamente le entità statistiche, nel seguente ordine:

  • statistiche per nome spazio, per tipo e per proprietà: __Stat_Ns_PropertyName_Kind__, __Stat_Ns_PropertyType_PropertyName_Kind__
  • statistiche per tipo e proprietà: __Stat_PropertyName_Kind__, __Stat_PropertyType_PropertyName_Kind__
  • statistiche per spazio dei nomi e per tipo: __Stat_Ns_Kind__, __Stat_Ns_Kind_IsRootEntity__, __Stat_Ns_Kind_NotRootEntity__ e __Stat_Ns_PropertyType_Kind__
  • statistiche per tipo: __Stat_Kind__, __Stat_Kind_IsRootEntity__, __Stat_Kind_NotRootEntity__, __Stat_PropertyType_Kind__
  • statistiche per spazio dei nomi: __Stat_Namespace__, __Stat_Ns_Kind_CompositeIndex__, __Stat_Ns_PropertyType__, __Stat_Ns_Total__

Le entità delle statistiche di riepilogo (__Stat_Kind_CompositeIndex__, __Stat_PropertyType__ e __Stat_Total__) non vengono mai eliminate.

Di seguito è riportato l'elenco completo delle statistiche disponibili:

Statistica Stat Entity Kind Descrizione
tutte le entità __Stat_Total__
Corso Python: GlobalStat
Voce specifica dello spazio dei nomi:
__Stat_Ns_Total__
Corso Python: NamespaceGlobalStat
Tutte le entità. Proprietà aggiuntive:

entity_bytes: lo spazio di archiviazione nella tabella delle entità misurato in byte.
builtin_index_bytes: lo spazio di archiviazione nelle voci dell'indice integrato misurato in byte.
builtin_index_count: il numero di voci di indice integrate.
composite_index_bytes: lo spazio di archiviazione nelle voci dell'indice composito misurato in byte.
composite_index_count: il numero di voci dell'indice composito.
tutte le entità in uno spazio dei nomi __Stat_Namespace__
Classe Python: NamespaceStat
Tieni presente che le entità __Stat_Namespace__ vengono create per ogni spazio dei nomi rilevato e che si trovano solo nello spazio dei nomi di stringa vuoto.
Tutte le entità in uno spazio dei nomi.

subject_namespace, lo spazio dei nomi rappresentato (una stringa)
entity_bytes: lo spazio di archiviazione nella tabella delle entità misurato in byte.
builtin_index_bytes: lo spazio di archiviazione nelle voci dell'indice integrato misurato in byte.
builtin_index_count: il numero di voci di indice integrate.
composite_index_bytes: lo spazio di archiviazione nelle voci dell'indice composito misurato in byte.
composite_index_count: il numero di voci dell'indice composito.
tutte le voci negli indici definiti dall'applicazione __Stat_Kind_CompositeIndex__
Voce specifica dello spazio dei nomi: __Stat_Ns_Kind_CompositeIndex__

Corso di Python: KindStat
Voci nella tabella Indice composito; un'entità statistica per ogni tipo di entità archiviata. Proprietà aggiuntive:

index_id, l'ID indice.
kind_name, il nome del tipo rappresentato (una stringa)
entità di un tipo __Stat_Kind__
Corso Python: KindStat
Voce specifica dello spazio dei nomi:
__Stat_Ns_Kind__
Classe Python: NamespaceKindStat
Entità di un tipo; un'entità statistica per ogni tipo di entità archiviata. Proprietà aggiuntive:

kind_name, il nome del tipo rappresentato (una stringa)
entity_bytes: lo spazio di archiviazione nella tabella delle entità misurata in byte.
builtin_index_bytes: lo spazio di archiviazione nelle voci dell'indice integrato misurato in byte.
builtin_index_count: il numero di voci di indice integrate.
composite_index_bytes: lo spazio di archiviazione nelle voci dell'indice composito misurato in byte.
composite_index_count: il numero di voci dell'indice composito.
un tipo di entità radice __Stat_Kind_IsRootEntity__
Corso Python: KindRootEntityStat
Voce specifica dello spazio dei nomi:
__Stat_Ns_Kind_IsRootEntity__
Corso Python: NamespaceKindRootEntityStat
Entità di un tipo che sono entità principali dei gruppi di entità (non hanno un predecessore principale); un'entità statistica per ogni tipo di entità archiviata. Proprietà aggiuntive:

kind_name, il nome del tipo rappresentato (una stringa)
entity_bytes: lo spazio di archiviazione nella tabella delle entità misurata in byte.
entità non principali di un determinato tipo __Stat_Kind_NotRootEntity__
Corso Python: KindNotRootEntityStat
Voce specifica dello spazio dei nomi:
__Stat_Ns_Kind_NotRootEntity__
Corso Python: NamespaceKindNotRootEntityStat
Entità di un tipo che non sono entità principali del gruppo di entità (hanno un predecessore principale); un'entità statistica per ogni tipo di entità archiviata. Proprietà aggiuntive:

kind_name, il nome del tipo rappresentato (una stringa)
entity_bytes: lo spazio di archiviazione nella tabella delle entità misurata in byte.
proprietà di un tipo __Stat_PropertyType__
Corso Python: PropertyTypeStat
Voce specifica dello spazio dei nomi:
__Stat_Ns_PropertyType__
Corso Python: NamespacePropertyTypeStat
Proprietà di un tipo di valore per tutte le entità; un'entità statistica per tipo di valore. Proprietà aggiuntive:

property_type, il nome del tipo di valore (una stringa)
entity_bytes: lo spazio di archiviazione nella tabella delle entità misurata in byte.
builtin_index_bytes: lo spazio di archiviazione nelle voci dell'indice integrato misurato in byte.
builtin_index_count: il numero di voci di indice integrate.
proprietà di un tipo per tipo __Stat_PropertyType_Kind__
Corso Python: KindPropertyTypeStat
Voce specifica dello spazio dei nomi:
__Stat_Ns_PropertyType_Kind__
Corso Python: NamespaceKindPropertyTypeStat
Proprietà di un tipo di valore per le entità di un determinato tipo; un'entità statistica per ogni combinazione di tipo e tipo di proprietà. Proprietà aggiuntive:

property_type, il nome del tipo di valore (una stringa)
kind_name, il nome del tipo rappresentato (una stringa)
entity_bytes: lo spazio di archiviazione nella tabella delle entità misurata in byte.
builtin_index_bytes: lo spazio di archiviazione nell'indice integrato misurato in byte.
builtin_index_count: il numero di voci di indice integrate.
proprietà con un nome __Stat_PropertyName_Kind__
Corso Python: KindPropertyNameStat
Voce specifica dello spazio dei nomi:
__Stat_Ns_PropertyName_Kind__
Corso Python: NamespaceKindPropertyNameStat
Proprietà con un nome dato in tutte le entità di un determinato tipo; una sola entità statistica per combinazione di nome e tipo di proprietà univoca. Proprietà aggiuntive:

property_name, il nome della proprietà (una stringa)
kind_name, il nome del tipo rappresentato (una stringa)
entity_bytes: lo spazio di archiviazione nella tabella delle entità misurata in byte.
builtin_index_bytes: lo spazio di archiviazione nelle voci dell'indice integrato misurato in byte.
builtin_index_count: il numero di voci di indice integrate.
di un tipo e con un nome __Stat_PropertyType_PropertyName_Kind__
Corso Python: KindPropertyNamePropertyTypeStat
Voce specifica dello spazio dei nomi:
__Stat_Ns_PropertyType_PropertyName_Kind__
Corso Python: NamespaceKindPropertyNamePropertyTypeStat
Proprietà con un determinato nome e un determinato tipo di valore in entità di un determinato tipo; una entità stat per ogni combinazione di nome proprietà, tipo di valore e tipo esistente in Datastore. Proprietà aggiuntive:

property_type, il nome del tipo di valore (una stringa)
property_name, il nome della proprietà (una stringa)
kind_name, il nome del tipo rappresentato (una stringa)
entity_bytes: lo spazio di archiviazione nella tabella delle entità misurata in byte.
builtin_index_bytes: lo spazio di archiviazione nelle voci dell'indice integrato misurato in byte.
builtin_index_count: il numero di voci di indice integrate.

Alcune statistiche si riferiscono ai tipi di valori delle proprietà Datastore per nome, come stringhe. Questi nomi sono i seguenti:

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