Wie erhält man die Anzahl der Zeilen in einer Tabelle in einem Datenspeicher?

7

In vielen Fällen kann es hilfreich sein, die Anzahl der Zeilen in einer Tabelle (eine Art) in einem Datenspeicher mithilfe von Google Application Engine zu ermitteln.
Es gibt keine klare und schnelle Lösung. Zumindest habe ich keinen gefunden. Hast du?

    
Aftershock 07.06.2010, 10:55
quelle

3 Antworten

14

Sie können die Anzahl aller Entitäten einer bestimmten Art (dh die Anzahl der Zeilen in einer Tabelle) effizient mit dem Datastore-Statistiken . Einfaches Beispiel:

%Vor%

Sie finden hier ein detaillierteres Beispiel, wie Sie die neuesten Statistiken hier herunterladen können (GAE kann mehrere Kopien der Statistiken behalten - eine vor 5 Minuten, eine vor 30 Minuten usw.).

Beachten Sie, dass diese Statistiken nicht ständig aktualisiert werden, sodass sie ein wenig hinter den tatsächlichen Zählwerten liegen. Wenn Sie wirklich die tatsächliche Anzahl benötigen, können Sie Zählungen in Ihrer eigenen benutzerdefinierten Statistik-Tabelle nachverfolgen und sie jedes Mal aktualisieren, wenn Sie eine Entität erstellen / löschen (obwohl das ein wenig teurer ist).

Update 03-08-2015 : Die Verwendung des Datenspeichers Statistiken kann zu veralteten Ergebnissen führen. Wenn das keine Option ist, behalten zwei andere Methoden einen Zähler oder einen Zähler. ( Sie können hier mehr darüber lesen ). Sehen Sie sich diese 2 nur an, wenn Sie Echtzeitergebnisse benötigen.

    
David Underhill 07.06.2010, 12:38
quelle
7

Es gibt kein Konzept für "Anzahl auswählen (*)" in App Engine. Sie müssen einen der folgenden Schritte ausführen:

  1. Machen Sie eine "keys-only" (Index-Traversierung) der Entitäten, die Sie zur Abfragezeit haben wollen, und zählen Sie sie nacheinander. Dies hat die Kosten für langsame Lesevorgänge.
  2. Das Update zählt beim Schreiben - dies hat den Vorteil extrem schneller Lesevorgänge zu höheren Kosten pro Schreibvorgang / Update. Kosten: Sie müssen wissen, was Sie im Voraus zählen möchten. Sie zahlen einen höheren Preis zum Zeitpunkt des Schreibens.
  3. Aktualisieren Sie alle Werte asynchron mithilfe von Aufgabenwarteschlangen, Cron-Jobs oder der neuen Mapper-API . Dies hat den Nachteil, dass es halb frisch ist.
Ikai Lan 07.06.2010 21:45
quelle
3

Sie können nein zählen. von Zeilen in Google App Engine mit com.google.appengine.api.datastore.Query wie folgt:

%Vor%     
Sweta 01.03.2013 10:20
quelle