Was genau ist die Durchsatzbeschränkung für eine Entitätsgruppe im Datenspeicher von Google App Engine?

9

In der Dokumentation wird eine Beschränkung des Durchsatzes für eine Entitätsgruppe im Datenspeicher beschrieben, es ist jedoch unklar, was genau die Einschränkung ist. Meine Verwirrung besteht aus zwei Teilen:

1. Was wird eingeschränkt?

Genauer gesagt, ist es:

  1. Die Anzahl der Schreibvorgänge?
  2. Anzahl der Transaktionen, die in den Datenspeicher schreiben?
  3. Anzahl der Transaktionen, unabhängig davon, ob sie den Datenspeicher liest oder schreibt?

2. Was ist der Typ der Einschränkung?

Genauer gesagt, ist es:

  1. Eine künstlich erzwungene 1/2-Sekunden-Regel?
  2. Ein empirisch beobachteter maximaler Durchsatz, der in der Praxis besser sein kann, basierend auf Faktoren wie Netzwerklast, etc.?
user2771609 01.05.2015, 23:47
quelle

3 Antworten

4

Es gibt keine Durchsatzbeschränkung per se, aber um Atomizität in Transaktionen zu garantieren, müssen Updates serialisiert und nacheinander und in der richtigen Reihenfolge angewendet werden. Wenn Sie also genug von ihnen machen, werden die Dinge fehlschlagen / Timeout. Dies wird als Datenspeicherkonkurrenz bezeichnet:

  

Datenspeicherkonflikte treten auf, wenn eine einzelne Entität oder Entitätsgruppe zu schnell aktualisiert wird. Der Datenspeicher wird gleichzeitige Anforderungen in die Warteschlange stellen, um zu warten, bis er an der Reihe ist. Anforderungen, die in der Warteschlange nach der Zeitüberschreitung warten, lösen eine Nebenläufigkeitsausnahme aus. Wenn Sie erwarten, eine einzelne Entität zu aktualisieren oder mehrmals pro Sekunde in eine Entitätsgruppe zu schreiben, empfiehlt es sich, Ihre Konstruktion frühzeitig zu bearbeiten, um mögliche Konflikte zu vermeiden, sobald die Anwendung bereitgestellt wurde.

Um Ihre Frage in einfachen Worten direkt zu beantworten, ist es speziell die Anzahl der Schreibvorgänge pro Entitätsgruppe (5 / ish pro Sekunde), und es ist nur eine Faustregel, Ihre Laufleistung kann (sehr) variieren.

Einige Leute haben überhaupt keine Konflikte gemeldet, während andere Probleme haben, mehr als ein Update pro Sekunde zu erhalten. Wie Sie sich vorstellen können, hängt dies von der Komplexität der Operation und der Auslastung aller an der Ausführung beteiligten Maschinen ab.

    
Jaime Gómez 02.05.2015 17:56
quelle
0

Grenzen:

  • schreibt pro Sekunde in eine Entitätsgruppe
  • Entitätsgruppen pro transaktionsübergreifender Gruppentransaktion (XG-Transaktion)

Es gibt ein Limit von 1 Schreibvorgang pro Sekunde pro Entitätsgruppe . Dies ist eine dokumentierte Grenze, die in der Praxis eine "weiche" Grenze zu sein scheint, da sie überschritten werden kann, aber nicht garantiert werden kann. Transaktionen blockieren, wenn die Entität in der letzten Sekunde geschrieben wurde, die API ermöglicht jedoch auch vorübergehende Ausnahmen. Offensichtlich sind Sie anfällig für Timeouts.

Dies wirkt sich nicht auf die Gesamtzahl der Transaktionen für Ihre App aus, die speziell auf diese Entitätsgruppe bezogen sind. Wenn Sie möchten, können Sie Teile Ihres Datenmodells entwerfen, um diese Einschränkung zu umgehen.

Es gibt ein Limit von 25 Entitätsgruppen pro XG-Transaktion. Das bedeutet, dass eine Transaktion nicht mehr als enthalten kann 25 Entity-Gruppen in ihrem Kontext (Lesen, Schreiben usw.). Dies war früher eine Grenze von 5, wurde aber kürzlich erhöht.

Um Ihre direkten Fragen zu beantworten:

  1. Schreibt für die gesamte Entitätsgruppe (wie durch den Stammschlüssel definiert) innerhalb eines zweiten Fensters (das nicht streng ist)

  2. künstlich erzwungene Ein-Sekunden-Regel

Nick 01.06.2015 04:32
quelle
-7

Wenn Sie diese Frage stellen, ist der Google DataStore wahrscheinlich nicht für Sie geeignet.

Der Google DataStore ist eine experimentelle Datenbank, in der die API jederzeit geändert werden kann. Sie ist auch für Einzelhandels-Apps, nicht-kritische Anwendungen, geeignet.

Eine klare Anzeige, die Sie treffen, wenn Sie sich für den DataStore anmelden, so etwas wie keine Verantwortung für Abwärtskompatibilität usw. Ein weiterer Hinweis ist das Fehlen klarer Beispiele, das Fehlen von Wrappern bietet eine einfache API, um einen Zugriff auf den DataStore zu implementieren Die Beispiele im Netz sind eine Ansammlung komplizierter Installationen und Prozeduren, um eine einfache Abfrage durchzuführen.

Meine eigene Schlussfolgerung ist, dass Google DataStore nach Tagen der Recherche noch nicht für den kommerziellen Einsatz bereit ist, aber nach Abschluss und in einer stabilen Version vielversprechend aussieht.

Wenn Sie im Internet suchen und sich die wenigen Google-Beispiele anschauen, falls überhaupt welche vorhanden sind - es wird darauf hingewiesen, was nicht erwähnt wird, anstatt was erwähnt wird - worüber nichts von Google erwähnt wird .... . ;-) Wenn Sie sich die Anbieter anschauen, die den Google DataStore unterstützen, verlinken Sie einfach auf die Google DataStore-Site für weitere Informationen, die nichts erwähnen, also befinden Sie sich in einem Ring, wo nichts Konkretes erwähnt wird ....

>     
Jan 04.03.2016 19:33
quelle