2009-05-01 2 views

Antwort

9

Nur weil Sie keine vom DBMS implementierten Joins haben, heißt das nicht, dass Sie nicht mehrere Tabellen haben können. In der App Engine werden diese als Entitätstypen bezeichnet, und Sie können beliebig viele davon verwenden.

Im Allgemeinen müssen Sie Ihre Daten denormalisieren, um häufige Joins zu vermeiden. In den wenigen Situationen, in denen sie unvermeidbar sind, können Sie andere Techniken verwenden, z. B. den Join-Benutzercode eingeben.

5

Die Kombination mit einem großen Tisch ist immer eine Option, führt aber meistens zu unnötig großen und redundanten Tischen. Dadurch wird Ihre App langsam und schwer zu warten.

Sie können einen Join auch emulieren, indem Sie die Ergebnisse einer Abfrage durchlaufen und eine zweite Abfrage für jedes Ergebnis ausführen, das für die erste Abfrage gefunden wurde. Wenn Sie die SQL-Abfrage

SELECT a.x FROM b INNER JOIN a ON a.y=b.y; 

haben, können Sie dies mit so etwas wie dieses emulieren:

for b in db.GqlQuery("SELECT * FROM b"): 
    for a in db.GqlQuery("SELECT * FROM a WHERE y=:1", b.y): 
    print a.x 
+0

App Engine verwendet GQL, das eine sehr grundlegende Teilmenge der SQL-Syntax aufweist. Ich bin mir nicht 100% ig sicher, aber ich glaube, Ihr SQL-Beispiel würde nicht funktionieren. –

+0

Ja, GQL ist weniger mächtig als SQL, aber mächtig genug, damit mein Beispiel funktioniert. Siehe http://code.google.com/appengine/docs/python/datastore/gqlreference.html – pts

+0

Würde dies nicht zu einer großen Anzahl von Verbindungen mit dem Datenspeicher führen und die Daten verlangsamen? – chakrit

0

Der Wechsel von einer relationalen Datenbank in den App Engine-Datenspeicher einen Paradigmenwechsel für Entwickler erfordert, wenn ihre Daten zu modellieren. Werfen Sie einen Blick auf here, um eine bessere Idee zu bekommen. Dies erfordert, dass Sie im Voraus darüber nachdenken, wie Sie Ihr Problem in die Einschränkungen einpassen können, die der Datenspeicher auferlegt, aber wenn Sie das können, sind Sie garantiert schnell und skalierbar.

2

Wenn Sie nach Möglichkeiten suchen, die Datentabelle zu entwerfen. Ich würde empfehlen, dass Sie ein wenig recherchieren, bevor Sie mit der Arbeit beginnen. Es gibt ziemlich magische Eigenschaften für Google App Engine mag:

  • Selbst fusionieren
  • Mehrwertige Liste Eigenschaft

, die in Ihrem Design sehr hilfreich wäre. Ich habe my experience here geteilt.

Um über Skalierbarkeit zu lernen gibt es eine exklusive free course in Udacity here gerade zum Thema. Es wird vom Gründer von reddit.com gelehrt und er erklärt ganz klar die ganze Skalierung der Dinge, die in reddit passieren, einer der Websites mit der höchsten Besucherzahl. Er zeigt die gesamte Kurs-Demo-Implementierung in gae (und das war ein Jackpot für mich!). Sie bieten den gesamten Kurs Videos free to download here. Ich habe mich mit der App Engine beschäftigt, bevor ich diese Ressourcen bekam. Also dachte ich, dass das Teilen anderen, die den Fuß in Wasser treten, helfen könnte.

Verwandte Themen