Bestehende Entität in Google App Engine eingefügt

9

Aus irgendeinem Grund hatte ich den Eindruck, dass das Schreiben einer bestehenden Entität genauso teuer ist, wenn nicht mehr, als eine neue Entität zu schreiben. Daher konzentrierte sich ein Großteil meines Codes auf Möglichkeiten, Entitäten in kleinere Entitäten zu zerlegen Wenn ich eine Eigenschaft modifiziere, entstehen weniger Schreibkosten. In der Dokumentation wird jedoch angegeben, dass eine bestehende Entität folgende Kosten verursacht:

  

1 Schreiben + 4 Schreibvorgänge pro modifiziertem indexierten Eigenschaftswert + 2 Schreibvorgänge pro   modifizierter zusammengesetzter Indexwert

Bevor ich die gesamte Struktur meines Codes ändere, möchte ich sicher sein, dass ich die Details verstehe. Was genau qualifiziert einen Index als "modifiziert"? Angenommen, ich habe 4 indizierte Zeichenfolgeneigenschaften und keine zusammengesetzten Indizes. Um dies als eine neue Entität zu setzen, würde 10 Schreibvorgänge (2 + 2(indexed properties)) kosten. Angenommen, ich ändere jetzt eine dieser Zeichenfolgeneigenschaften und lege sie zurück. Würde das kosten 5 schreibt nur (1 + 4 per modified index) ? Fehle ich etwas? Gibt es irgendwelche Dinge, die ich berücksichtigen sollte?

Und was wäre, wenn ich vier indizierte Eigenschaften und eine nicht indizierte Eigenschaft hätte und nur die nicht indexierte Eigenschaft modifiziere - das kostet mich nur einen einzigen Schreibvorgang, um ihn wiederzuverwenden?

    
Snowman 25.08.2012, 14:02
quelle

2 Antworten

3

Alle deine Vermutungen sind richtig. Es hilft, wenn Sie wissen, wofür die Schreibvorgänge sind: Der 1 Schreibvorgang bezieht sich auf die Entität selbst; Die 2 Schreibvorgänge pro indizierte Eigenschaft in create sind für die aufsteigenden und absteigenden einzelnen Eigenschaftsindizes für jede Eigenschaft und die 4 Schreibvorgänge pro indizierte Eigenschaft bei der Aktualisierung sollen den alten Wert löschen und den neuen Wert in diese aufsteigenden und absteigenden Indizes einfügen. p>     

Nick Johnson 26.08.2012, 22:36
quelle
1

Ich habe gerade ein Experiment durchgeführt, bei dem ich ein Modell mit drei indizierten Eigenschaften (von denen eine eine Liste ist) und vier nicht indizierten Eigenschaften aktualisiert habe.

Ich habe einen mapreduce-Lauf verwendet, um eine der nicht indizierten Eigenschaften und Put () die Entität zu aktualisieren.

Wenn ich meine Berechnungen richtig gemacht habe, habe ich überprüft, dass es nur einen Schreibvorgang pro Entity benötigt, obwohl es drei indizierte Eigenschaften gab (die nicht aktualisiert wurden).

(meine Mathematik könnte ein bisschen zweifelhaft gewesen sein, da ich mapreduce verwendet habe, und mapreduce selbst gibt eine Reihe von Datenspeicherschreibvorgängen aus. Ich habe ein separates Experiment durchgeführt, um die Anzahl der mapreduce-Schreibvorgänge zu schätzen, also habe ich dies berücksichtigt) / p>     

dragonx 25.08.2012 20:37
quelle

Tags und Links