Esistono strumenti e API che semplificano l'amministrazione e i dati di Google Cloud.
Console Google Cloud
Quando utilizzi la console Google Cloud , ricorda che NDB è implementato di Datastore e memcache. Quando NDB "legge" un valore, controlla prima memcache; legge da Datastore solo se non trova il valore in memcache.
Pertanto, se utilizzi la console Google Cloud per modificare un'entità Datastore, l'applicazione potrebbe ancora utilizzare il modello "precedente" valore se questo valore è in memcache. Puoi aggirare il problema eliminando memcache. Questo è piuttosto dirompente, tuttavia, se devi modificare i valori "a mano" spesso, potresti voler configurare un'interfaccia utente nella tua applicazione che scriva valori tramite la libreria client NDB; la scrittura tramite NDB mantiene Datastore memcache sincronizzata.
Query dei metadati
NDB supporta un'API di query sui metadati. Questo consente a un'applicazione di ricevere
informazioni generali sull'utilizzo di Datastore. Questa API è
google.appengine.ext.ndb.metadata
in maggior dettaglio più avanti
in questo modulo. Svolge le seguenti funzioni:
get_namespaces(start=None, end=None)
: restituisce un elenco di nomi degli spazi dei nomiget_kinds(start=None, end=None)
: restituisce un elenco di nomi dei tipiget_properties_of_kind(kind, start=None, end=None)
: restituisce un elenco di nomi di proprietà per l'elemento kind nomeget_representations_of_kind(kind, start=None, end=None)
: restituisce i nomi delle proprietà di mappatura di una detta per la dato nome di tipo a elenchi di nomi di rappresentazione quali "STRING", "BOOLEAN" o "INT64".
Queste funzioni hanno argomenti start ed end facoltativi che possono essere utilizzati per
limitare la query a un determinato intervallo. In questo caso, start è inclusivo e end è
esclusivi. Il valore predefinito di entrambi è None
. Ad esempio, per ottenere che tutti gli spazi dei nomi
con una lettera minuscola che potresti chiamare get_namespaces('a', chr(ord('z') + 1))
.
Tutte queste funzionalità, tranne get_namespaces()
, sono implicitamente limitate all'attuale
nello spazio dei nomi. I dati ricevuti e le query vengono fatturati come
Ottieni e query Datastore.
Query statistiche
Datastore conserva le statistiche sui dati archiviati per un di un'applicazione, ad esempio quante entità esistono di un determinato tipo viene utilizzato dai valori delle proprietà di un determinato tipo. Puoi visualizzare queste statistiche nella console Google Cloud, pagina Dashboard.
Puoi anche accedere a questi valori in modo programmatico all'interno dell'applicazione
eseguire query su entità con nomi specifici usando l'API Datastore.
Ogni statistica è accessibile come un'entità il cui nome del tipo inizia e termina con
due trattini bassi. Ad esempio, ogni app ha esattamente un'entità del tipo
__Stat_Total__
, che rappresenta le statistiche su tutte le entità in
Datastore in totale. Ogni entità statistica ha quanto segue:
proprietà:
count
, il numero di elementi considerati dalla statistica (un numero intero lungo)bytes
, la dimensione totale degli articoli per questa statistica (un numero intero lungo)timestamp
, l'ora dell'aggiornamento più recente della statistica (un data/ora )
Alcuni tipi di statistiche hanno anche proprietà aggiuntive, elencate di seguito.
Un'applicazione può usare le classi di modello fornite dal pacchetto
google.appengine.ext.ndb.stats
per accedere alle entità statistiche.
from google.appengine.ext.ndb import stats
global_stat = stats.GlobalStat.query().get()
print 'Total bytes stored: %d' % global_stat.bytes
print 'Total entities stored: %d' % global_stat.count
Quando il sistema statistico crea nuove entità statistiche, non elimina
quelle vecchie. Il modo migliore per avere una visione coerente
le statistiche consiste nel interrogare
GlobalStat
con l'impostazione più recente
timestamp
, poi usa quel valore del timestamp come filtro durante il recupero di altre
le entità statistiche.
Le entità statistiche sono incluse nei valori statistici calcolati. Le entità statistiche occupano spazio rispetto al numero di tipi unici e dei nomi delle proprietà usati dall'applicazione.
Il sistema statistico creerà anche statistiche specifiche per ogni
spazio dei nomi
Tieni presente che se un'applicazione non utilizza gli spazi dei nomi Datastore
non verranno create statistiche specifiche dello spazio dei nomi. Statistiche specifiche per lo spazio dei nomi
nello spazio dei nomi a cui sono specifici. I nomi dei tipi per
statistiche specifiche per lo spazio dei nomi hanno il prefisso __Stat_Ns_
e hanno lo stesso
come 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 un numero molto elevato di entità statistiche. Per mantenere l'overhead associato ai costi di archiviazione aggiornare le statistiche in modo ragionevole, Datastore progressivamente elimina le entità statistiche, nel seguente ordine:
- Statistiche per spazio dei nomi, per tipo e per proprietà:
__Stat_Ns_PropertyName_Kind__
e__Stat_Ns_PropertyType_PropertyName_Kind__
- statistiche per tipo e per 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__
__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 eliminati.
L'elenco completo delle statistiche disponibili è il seguente:
Statistica | Tipo entità statistiche | Descrizione |
---|---|---|
tutte le entità | __Stat_Total__ Classe Python: GlobalStat Voce specifica dello spazio dei nomi: __Stat_Ns_Total__ Classe Python: NamespaceGlobalStat |
Tutte le entità. Proprietà aggiuntive: • entity_bytes : spazio di archiviazione nella tabella delle entità misurato in byte.• builtin_index_bytes : spazio di archiviazione nelle voci di indice integrate misurato in byte.• builtin_index_count : il numero di voci di indice integrate.• composite_index_bytes : lo spazio di archiviazione nelle voci di indice composto misurato in byte.• composite_index_count : il conteggio delle voci di indice composto. |
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 incontrato e si trovano solo nello spazio dei nomi della stringa vuota. |
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 : spazio di archiviazione nelle voci di indice integrate misurato in byte.• builtin_index_count : il numero di voci di indice integrate.• composite_index_bytes : lo spazio di archiviazione nelle voci di indice composto misurato in byte.• composite_index_count : il conteggio delle voci di indice composto. |
tutte le voci negli indici definiti dall'applicazione | __Stat_Kind_CompositeIndex__ Voce specifica dello spazio dei nomi: __Stat_Ns_Kind_CompositeIndex__ Classe Python: KindStat |
Voci nella tabella degli indici composti; 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__ Classe 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à misurato in byte.• builtin_index_bytes : spazio di archiviazione nelle voci di indice integrate misurato in byte.• builtin_index_count : il numero di voci di indice integrate.• composite_index_bytes : lo spazio di archiviazione nelle voci di indice composto misurato in byte.• composite_index_count : il conteggio delle voci di indice composto. |
entità radice di un tipo | __Stat_Kind_IsRootEntity__ Classe Python: KindRootEntityStat Voce specifica dello spazio dei nomi: __Stat_Ns_Kind_IsRootEntity__ Classe Python: NamespaceKindRootEntityStat |
Entità di un tipo che sono entità radice del gruppo di entità (nessuna entità padre predecessore); un'entità statistica per ogni tipo di entità archiviata. Proprietà aggiuntive: • kind_name , il nome del tipo rappresentato (una stringa)• entity_bytes : l'archiviazione nella tabella delle entità misurata in byte. |
entità non root di un tipo | __Stat_Kind_NotRootEntity__ Classe Python: KindNotRootEntityStat Voce specifica dello spazio dei nomi: __Stat_Ns_Kind_NotRootEntity__ Classe Python: NamespaceKindNotRootEntityStat |
Entità di un tipo che non sono entità radice del gruppo di entità (hanno un padre predecessore); un'entità statistica per ogni tipo di entità archiviata. Proprietà aggiuntive: • kind_name , il nome del tipo rappresentato (una stringa)• entity_bytes : l'archiviazione nella tabella delle entità misurata in byte. |
proprietà di un tipo | __Stat_PropertyType__ Classe Python: PropertyTypeStat Voce specifica dello spazio dei nomi: __Stat_Ns_PropertyType__ Classe Python: NamespacePropertyTypeStat |
Proprietà di un tipo di valore in tutte le entità; un'entità statistica per tipo di valore. Proprietà aggiuntive: • property_type , il nome del tipo di valore (una stringa)• entity_bytes : l'archiviazione nella tabella delle entità misurata in byte.• builtin_index_bytes : spazio di archiviazione nelle voci di indice integrate misurato in byte.• builtin_index_count : il numero di voci di indice integrate. |
di un tipo per tipo | __Stat_PropertyType_Kind__ Classe Python: KindPropertyTypeStat Voce specifica dello spazio dei nomi: __Stat_Ns_PropertyType_Kind__ Classe Python: NamespaceKindPropertyTypeStat |
le proprietà di un tipo di valore tra le entità di un determinato tipo; un'entità statistica per 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 : l'archiviazione nella tabella delle entità misurata in byte.• builtin_index_bytes : 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__ Classe Python: KindPropertyNameStat Voce specifica dello spazio dei nomi: __Stat_Ns_PropertyName_Kind__ Classe Python: NamespaceKindPropertyNameStat |
Proprietà con un determinato nome tra entità di un determinato tipo; un'entità statistica per combinazione di nome e tipo di proprietà univoci. Proprietà aggiuntive: • property_name , il nome della proprietà (una stringa)• kind_name , il nome del tipo rappresentato (una stringa)• entity_bytes : l'archiviazione nella tabella delle entità misurata in byte.• builtin_index_bytes : spazio di archiviazione nelle voci di indice integrate misurato in byte.• builtin_index_count : il numero di voci di indice integrate. |
proprietà di un tipo e con un nome | __Stat_PropertyType_PropertyName_Kind__ Classe Python: KindPropertyNamePropertyTypeStat Voce specifica dello spazio dei nomi: __Stat_Ns_PropertyType_PropertyName_Kind__ Classe Python: NamespaceKindPropertyNamePropertyTypeStat |
Proprietà con un determinato nome e con un determinato tipo di valore tra entità di un determinato tipo; un'entità statistica per 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 : l'archiviazione nella tabella delle entità misurata in byte.• builtin_index_bytes : spazio di archiviazione nelle voci di indice integrate misurato in byte.• builtin_index_count : il numero di voci di indice integrate. |
Alcune statistiche fanno riferimento ai tipi di valori delle proprietà Datastore per come stringhe. I 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"