Komplexe Abfragen mit GAE-Datenspeicher

Ich befinde mich im Anfangsstadium der Entwicklung einer Website für Sportstatistiken (Ultimate Frisbee) und würde gerne wissen, ob Google App Engine für mich geeignet ist.

Ich schreibe es in Python mit Django und bin seit Jahren mit Standard-RDBMS vertraut, aber diese Seite ist ein langfristiges Projekt. Ich erwarte sehr große Datenmengen, daher würde ich die "unendliche" Skalierung des GAE-Datenspeichers begrüßen. Ein Großteil der Abfragen an die Datenbank gibt sehr standardmäßige Ergebnisse zurück, die den Datenspeicher als logische Wahl erscheinen lassen. Ich möchte jedoch in Zukunft äußerst komplexe Abfragen durchführen können, um neue statistische Metriken oder einfach interessante Ergebnisse zu erhalten. Ich habe vor, in Zukunft eine Menge davon zu tun, werde aber nicht wissen, was diese Abfragen sind, bis die Daten bereits gesammelt sind.

Zum Beispiel sehen Sie oft Statistiken von Baseball-Analysten mit lächerlichen Statistiken wie "Dies ist nur das erste Mal in den letzten 50 Jahren, dass zwei linkshändige Pitcher, deren Nachname mit 'Z' beginnt, One-Hit-Shutouts hintereinander werfen Tage". Ich hätte gerne die Flexibilität, in Zukunft Fragen zu stellen. :)

Ich habe jedoch den Eindruck, dass Sie für eine nicht relationale Datenbank wie bigtable im Voraus Modelle mit redundanten Daten erstellen müssen und die gesamte Arbeit auf den Einfügungen und nicht auf den Abrufen stattfindet. Ich habe bereits Django-Modelle erstellt, die praktisch alle Daten enthalten, die ich jemals abfragen müsste, aber ich habe keine Ahnung, welche denormalisierten Modelle ich in ein oder zwei Jahren haben möchte. Daher habe ich das Gefühl, dass das Erstellen komplexer Abfragen im GAE-Datenspeicher in Zukunft äußerst schwierig sein wird. Daher muss ich eine Menge Informationen vom Server entfernen, bevor ich sie in Python verarbeiten kann.

Ist der Google App Engine-Datenspeicher einfach falsch für das, was ich tun möchte? Oder vermisse einfach etwas. Vielen Dank im Voraus!

Aktualisieren: Vielen Dank für die bisherigen Antworten. Mir ist klar, dass ich auch erwähnen sollte, dass viele dieser komplexen Abfragen Abfragen sind, die die Benutzer ausführen können sollen, sodass eine Offlinedatenbank nicht wirklich in Frage kommt. Beispielsweise sollten Benutzer in der Lage sein, verschiedene Statistiken darüber anzuzeigen, wie gut zwei bestimmte Spieler spielen, wenn sie während bestimmter Spiele oder Spielzeiten gleichzeitig auf dem Spielfeld sind. Obwohl diese Abfragen bei weitem nicht so häufig sind wie die Standardaggregatstatistiken, werden sie dennoch regelmäßig durchgeführt.

Eine relationale Datenbank und der GAE-Datenspeicher wären großartig, aber django unterstützt standardmäßig noch nicht mehrere Datenbanken, und das Zusammenfügen einer Lösung klingt schwierig und chaotisch. Eric Florenzano hat eineschöne lösung Für zwei Datenbanken, die beide die Django-Modelle verwenden, aber wenn ich den GAE-Datenspeicher verwenden würde, müsste ich stattdessen das DB-Modell der App-Engine verwenden. Und eine gute Lösung zu finden, wie er es für dieses komplexe Problem getan hat, übersteigt zu diesem Zeitpunkt meine Fähigkeiten.

Momentan verwende ich am liebsten die GAE-Task-Warteschlange, um schwierige Abfragen durchzuführen, oder gehe zu einem Standard-Webhost wie webfaction und denormalisiere meine Tabellen später, sobald meine Daten wachsen und ich die Leistung steigern muss.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage