War es hilfreich?

Lösung

ein BigTable Schema zu entwerfen ist ein offener Prozess, und im Grunde erfordert, dass Sie denken:

  • Die Zugriffsmuster werden Sie verwenden und wie oft jeder verwendet werden
  • Die Beziehungen zwischen den Typen
  • Was Indizes Sie gehen zu müssen,
  • Die Schreib Muster, die Sie verwenden werden (um effektiv zu verbreiten Last)

GAE-Datenspeicher automatisch denormalisiert Ihre Daten. Das heißt, jeder Index enthält eine (meist) vollständige Kopie der Daten und somit fügt jeder Index deutlich zu Zeit genommen ein Schreibdurchzuführen, und der Speicherplatz verwendet wird.

Ist dies nicht der Fall wäre, ein Datastore-Schema entwerfen würde viel mehr Arbeit: Sie müßten sorgfältig über die Primärschlüssel für jede Art denken, und berücksichtigen die Auswirkungen Ihrer Entscheidung über den Ort der Daten. Wenn zum Beispiel eines Blog-Post-Rendering müßten Sie wahrscheinlich die Kommentare angezeigt werden, mit ihm zu gehen zusammen, so dass jeder Schlüssel Kommentar würde wahrscheinlich mit dem zugehörigen Posten Schlüsseln beginnen.

Mit Datastore, das ist nicht so eine große Sache: Die Abfrage Sie etwas aussehen verwenden wie „Select * FROM Kommentar WHERE post_id = N.“ (Wenn Sie die Kommentare Seite möchten, müssen Sie auch eine limit-Klausel haben, und eine mögliche Suffix von „AND comment_id> last_comment_id“.) Wenn Sie eine solche Abfrage hinzufügen, Datenspeicher, den Index für Sie, bauen und Ihre liest, wird sein magisch schnell.

Etwas im Auge zu behalten ist, dass jeder zusätzliche Index einige zusätzliche Kosten erzeugt: Es ist am besten, wenn Sie möglichst wenige Zugriffsmuster wie möglich nutzen können, da sie die Anzahl der Indizes reduzieren GAE konstruieren wird und damit die Gesamtspeicher erforderlich indem Sie Ihre Daten.

Beim Lesen über diese Antwort, finde ich es ein wenig vage. Vielleicht wäre ein Hands-on-Design Frage Umfang helfen diese nach unten? : -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top