Da Google App Engine Joins nicht zulässt, bedeutet das, dass ich alle Tabellen in meiner Web-App nehmen und eine Möglichkeit finden muss, sie zu einer einzigen großen Tabelle zusammenzufassen?Ohne Joins in Google App Engine müssen Ihre Daten in einer großen Tabelle vorhanden sein?
Antwort
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.
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
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.
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.
- 1. Aktualisieren von Daten in Google App-Engine
- 2. Bild Exif Daten in Google App Engine
- 3. Speichern von Daten in einer Google App Engine-App
- 4. Microservice in Google App Engine
- 5. Datenspeicher in Google App Engine
- 6. müssen Sie eine Beispiel-App mit Google App-Engine erstellen
- 7. Aktualisieren einer Entitätsgruppe in Google App Engine
- 8. RESTful API in Google App Engine Sicherung
- 9. Löschen Datensatz von Google App Engine Tabelle
- 10. Jinja2 in Google App Engine
- 11. Google App Engine Entitätsgruppen
- 12. Einfügen von Daten in Google App Engine-Datenspeicher
- 13. Google App Engine in Google Apps Domain
- 14. Bereitstellen in Google App Engine
- 15. Profilieren einer Java Google App Engine App
- 16. Aktualisieren einer großen Anzahl von Entitäten in einem Datenspeicher in Google App Engine
- 17. Retrolambda in Google App Engine
- 18. Wie werden One-to-Many-Joins in einer (Python) Google App Engine-Datenquelle richtig durchgeführt?
- 19. Wann müssen abhängige DLLs vorhanden sein?
- 20. Authentifizierung in der Google App Engine (Webseite)
- 21. Caching in Google App Engine/cloudbasiertes Hosting
- 22. Google-App-Engine NDB
- 23. Google Cloud Datastore vs Google App Engine
- 24. Google App Engine-Datenspeichercodierung?
- 25. Timeouts Zugriff auf Google Spreadsheet in Google App Engine
- 26. Google App Engine + GWT + Eclipse: Wo werden Ihre Komponententests ausgeführt?
- 27. statische Dateien in Google App-Engine aktualisieren
- 28. Debugging Google App Engine App in IntelliJ
- 29. Kann ich Facelets in einer Google App Engine-App verwenden?
- 30. Google App Engine + Validierung
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. –
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
Würde dies nicht zu einer großen Anzahl von Verbindungen mit dem Datenspeicher führen und die Daten verlangsamen? – chakrit