Datastore-Statistiken in gebündelten Legacy-Diensten

Hinweis: Entwicklern von neuen Anwendungen wird dringend empfohlen, die NDB-Clientbibliothek zu verwenden. Diese bietet im Vergleich zur vorliegenden Clientbibliothek verschiedene Vorteile, z. B. das automatische Caching von Entitäten über die Memcache API. Wenn Sie derzeit die ältere DB-Clientbibliothek verwenden, finden Sie weitere Informationen im Leitfaden zur Migration von DB- zu NDB-Clientbibliotheken.

Datastore erfasst Statistiken zu den gespeicherten Daten einer Anwendung, wie die Anzahl der Entitäten pro Dateityp oder wie viel Speicherplatz für Attributwerte eines bestimmten Typs verwendet wird. Sie können diese Statistiken in der Google Cloud Console auf der Seite Dashboard einsehen.

Sie können auch programmatisch innerhalb der Anwendung auf diese Werte zugreifen. Führen Sie dazu mit der Datastore API Abfragen nach bestimmten benannten Entitäten aus. Auf jede Statistik kann als Entität zugegriffen werden, deren Artname mit jeweils zwei Unterstrichen beginnt und endet. Jede Anwendung hat beispielsweise genau eine Entität der Art __Stat_Total__, die Statistiken für alle Entitäten in Datastore insgesamt darstellt. Alle Statistikentitäten haben folgende Eigenschaften:

  • count: die Anzahl der von der Statistik berücksichtigten Elemente (eine lange Ganzzahl)
  • bytes: die Gesamtgröße der Elemente für diese Statistik (eine lange Ganzzahl)
  • timestamp: der Zeitpunkt der letzten Aktualisierung der Statistik (ein Datum-/Uhrzeit-Wert)

Einige Statistiktypen besitzen zusätzliche Eigenschaften, die im Folgenden aufgeführt werden.

Bei Python-Anwendungen können vom Paket google.appengine.ext.db.stats bereitgestellte Modellklassen verwendet werden, um auf Statistikentitäten zuzugreifen.

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

Wenn das Statistiksystem neue Statistikentitäten erstellt, werden die alten nicht sofort gelöscht. Die beste Möglichkeit für eine konsistente Ansicht der Statistiken ist die Abfrage der Statistikentität GlobalStat mit dem aktuellen timestamp und der Verwendung dieses Zeitstempelwerts als Filter beim Abruf anderer Statistikentitäten.

Die Statistikentitäten sind in den berechneten Statistikwerten enthalten. Der Speicherbedarf von Statistikentitäten richtet sich nach der Anzahl der von der Anwendung verwendeten eindeutigen Typen und Attributnamen.

Das Statistiksystem erstellt auch für jeden Namespace eigene Statistiken. Wenn eine Anwendung keine Datastore-Namespaces verwendet, werden auch keine Namespace-spezifischen Statistiken erstellt. Namespace-spezifische Statistiken sind in dem Namespace enthalten, für den sie spezifisch sind. Den Artnamen für Namespace-spezifische Statistiken ist __Stat_Ns_ vorangestellt und sie haben dasselbe Suffix wie anwendungsweite Statistikarten.

Anwendungen mit Tausenden von Namespaces, Typen oder Eigenschaftsnamen erfordern eine sehr große Anzahl von Statistikentitäten. Damit der Aufwand für das Speichern und Aktualisieren der Statistiken möglichst gering gehalten wird, löscht Datastore Statistikentitäten progressiv in der folgenden Reihenfolge:

  • Statistiken pro Namespace, pro Art und pro Attribut: __Stat_Ns_PropertyName_Kind__, __Stat_Ns_PropertyType_PropertyName_Kind__
  • Statistiken pro Art und pro Attribut: __Stat_PropertyName_Kind__, __Stat_PropertyType_PropertyName_Kind__
  • Statistiken pro Namespace und pro Art: __Stat_Ns_Kind__, __Stat_Ns_Kind_IsRootEntity__, __Stat_Ns_Kind_NotRootEntity__, __Stat_Ns_PropertyType_Kind__
  • Statistiken pro Art: __Stat_Kind__, __Stat_Kind_IsRootEntity__, __Stat_Kind_NotRootEntity__, __Stat_PropertyType_Kind__
  • Statistiken pro Namespace: __Stat_Namespace__, __Stat_Ns_Kind_CompositeIndex__, __Stat_Ns_PropertyType__, __Stat_Ns_Total__

Die zusammenfassenden Statistikentitäten (__Stat_Kind_CompositeIndex__, __Stat_PropertyType__, __Stat_Total__) werden niemals gelöscht.

Die vollständige Liste der verfügbaren Statistiken sieht so aus:

Statistik Typ der Statistikentität Beschreibung
Alle Entitäten __Stat_Total__
Python-Klasse: GlobalStat
Namespace-spezifischer Eintrag:
__Stat_Ns_Total__
Python-Klasse: NamespaceGlobalStat
Alle Entitäten. Zusätzliche Attribute:

entity_bytes: der Speicherplatz in der Entitätstabelle, gemessen in Byte
builtin_index_bytes: der Speicherplatz in integrierten Indexeinträgen, gemessen in Byte
builtin_index_count: die Anzahl der integrierten Indexeinträge
composite_index_bytes: der Speicherplatz in zusammengesetzten Indexeinträgen, gemessen in Byte
composite_index_count: die Anzahl der zusammengesetzten Indexeinträge
Alle Entitäten in einem Namespace __Stat_Namespace__
Python-Klasse: NamespaceStat
Beachten Sie, dass __Stat_Namespace__-Entitäten für jeden ermittelten Namespace erstellt werden und nur im leeren String-Namespace enthalten sind.
Alle Entitäten in einem Namespace

subject_namespace: der dargestellte Namespace (ein String)
entity_bytes: der Speicherplatz in der Entitätstabelle, gemessen in Byte
builtin_index_bytes: der Speicherplatz in integrierten Indexeinträgen, gemessen in Byte
builtin_index_count: die Anzahl der integrierten Indexeinträge
composite_index_bytes: der Speicherplatz in zusammengesetzten Indexeinträgen, gemessen in Byte
composite_index_count: die Anzahl der zusammengesetzten Indexeinträge
Alle Einträge in von der Anwendung definierten Indexen __Stat_Kind_CompositeIndex__
Namespace-spezifischer Eintrag: __Stat_Ns_Kind_CompositeIndex__

Python-Klasse: KindStat
Einträge in der zusammengesetzten Indextabelle; eine Statistikentität für jeden gespeicherten Entitätstyp. Zusätzliche Attribute:

index_id: die Index-ID
kind_name: der Name des dargestellten Typs (ein String)
Entitäten eines Typs __Stat_Kind__
Python-Klasse: KindStat
Namespace-spezifischer Eintrag:
__Stat_Ns_Kind__
Python-Klasse: NamespaceKindStat
Entitäten eines Typs; eine Statistikentität für jeden gespeicherten Entitätstyp. Zusätzliche Attribute:

kind_name: der Name des dargestellten Typs (ein String)
entity_bytes: der Speicherplatz in der Entitätstabelle, gemessen in Byte
builtin_index_bytes: der Speicherplatz in integrierten Indexeinträgen, gemessen in Byte
builtin_index_count: die Anzahl der integrierten Indexeinträge
composite_index_bytes: der Speicherplatz in zusammengesetzten Indexeinträgen, gemessen in Byte
composite_index_count: die Anzahl der zusammengesetzten Indexeinträge
Stammentitäten eines Typs __Stat_Kind_IsRootEntity__
Python-Klasse: KindRootEntityStat
Namespace-spezifischer Eintrag:
__Stat_Ns_Kind_IsRootEntity__
Python-Klasse: NamespaceKindRootEntityStat
Entitäten eines Typs, die Entitätengruppen-Stammentitäten sind (kein übergeordnetes Element haben); eine Statistikentität für jeden gespeicherten Entitätstyp. Zusätzliche Attribute:

kind_name: der Name des dargestellten Typs (ein String)
entity_bytes: der Speicherplatz in der Entitätstabelle, gemessen in Byte
Nicht-Stammentitäten eines Typs __Stat_Kind_NotRootEntity__
Python-Klasse: KindNotRootEntityStat
Namespace-spezifischer Eintrag:
__Stat_Ns_Kind_NotRootEntity__
Python-Klasse: NamespaceKindNotRootEntityStat
Entitäten eines Typs, die keine Entitätengruppen-Stammentitäten sind (ein übergeordnetes Element haben); eine Statistikentität für jeden gespeicherten Entitätstyp. Zusätzliche Attribute:

kind_name: der Name des dargestellten Typs (ein String)
entity_bytes: der Speicherplatz in der Entitätstabelle, gemessen in Byte
Attribute eines Typs __Stat_PropertyType__
Python-Klasse: PropertyTypeStat
Namespace-spezifischer Eintrag:
__Stat_Ns_PropertyType__
Python-Klasse: NamespacePropertyTypeStat
Attribute eines Werttyps über alle Entitäten hinweg; eine Statistikentität pro Werttyp. Zusätzliche Attribute:

property_type: der Name des Werttyps (ein String)
entity_bytes: der Speicherplatz in der Entitätstabelle, gemessen in Byte
builtin_index_bytes: der Speicherplatz in integrierten Indexeinträgen, gemessen in Byte
builtin_index_count: die Anzahl der integrierten Indexeinträge
Attribute eines Typs pro Entitätstyp __Stat_PropertyType_Kind__
Python-Klasse: KindPropertyTypeStat
Namespace-spezifischer Eintrag:
__Stat_Ns_PropertyType_Kind__
Python-Klasse: NamespaceKindPropertyTypeStat
Attribute eines Werttyps über Entitäten eines bestimmten Typs hinweg; eine Statistikentität pro Kombination aus Attributtyp und Entitätstyp. Zusätzliche Attribute:

property_type: der Name des Werttyps (ein String)
kind_name: der Name des dargestellten Typs (ein String)
entity_bytes: der Speicherplatz in der Entitätstabelle, gemessen in Byte
builtin_index_bytes: der Speicherplatz im integrierten Index, gemessen in Byte
builtin_index_count: die Anzahl der integrierten Indexeinträge
Attribute mit einem Namen __Stat_PropertyName_Kind__
Python-Klasse: KindPropertyNameStat
Namespace-spezifischer Eintrag:
__Stat_Ns_PropertyName_Kind__
Python-Klasse: NamespaceKindPropertyNameStat
Attribute mit einem bestimmten Namen über Entitäten eines bestimmten Typs hinweg; eine Statistikentität pro Kombination aus eindeutigem Attributnamen und Entitätstyp. Zusätzliche Attribute:

property_name: der Name des Attributs (ein String)
kind_name: der Name des dargestellten Typs (ein String)
entity_bytes: der Speicherplatz in der Entitätstabelle, gemessen in Byte
builtin_index_bytes: der Speicherplatz in integrierten Indexeinträgen, gemessen in Byte
builtin_index_count: die Anzahl der integrierten Indexeinträge
Attribute eines Typs und mit einem Namen __Stat_PropertyType_PropertyName_Kind__
Python-Klasse: KindPropertyNamePropertyTypeStat
Namespace-spezifischer Eintrag:
__Stat_Ns_PropertyType_PropertyName_Kind__
Python-Klasse: NamespaceKindPropertyNamePropertyTypeStat
Attribute mit einem bestimmten Namen und einem bestimmten Werttyp über Entitäten eines bestimmten Typs hinweg; eine Statistikentität pro Kombination von Attributsname, Werttyp und Entitätstyp, die in Datastore vorhanden ist. Zusätzliche Attribute:

property_type: der Name des Werttyps (ein String)
property_name: der Name des Attributs {ein String}
kind_name: der Name des dargestellten Typs (ein String)
entity_bytes: der Speicherplatz in der Entitätstabelle, gemessen in Byte
builtin_index_bytes: der Speicherplatz in integrierten Indexeinträgen, gemessen in Byte
builtin_index_count: die Anzahl der integrierten Indexeinträge

Einige Statistiken beziehen sich auf Werttypen von Datastore-Attributen nach deren Namen, wie Strings. Diese Namen sind:

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