Wie gestalten Sie Datenmodelle für Bigtable / Datastor (GAE)?
-
09-06-2019 - |
Frage
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? : -)
Andere Tipps
Sie können www.web2py.com verwenden. Sie bauen das Modell und die Anwendung einmal und es funktioniert auf GAE aber auch witl SQLite, MySQL, Posgres, Oracle, MSSQL, Firebird
Wie GAE baut auf, wie Daten in Django verwaltet gibt es eine Menge von Informationen darüber, wie ähnliche Fragen in der Django-Dokumentation zu adressieren (siehe zum Beispiel hier , scrollen Sie nach unten zu" Ihrem ersten Modell).
Kurz gesagt Sie entwerfen Sie DB-Modell als reguläres Objektmodell und lassen GAE aussortieren alle der objektrelationalen Mappings.