Frage

Ich habe eine iPhone App prototypisiert dass Anwendungen (intern) SQLite als Datenbank. Die Absicht war schließlich, um es mit einem Server über PHP kommunizieren, die MySQL als Back-End-Datenbank verwenden würde.

Ich habe gerade entdeckt Google App Engine, aber, aber sehr wenig darüber wissen. Ich denke, es wäre schön, die Python-Schnittstelle zu schreiben, um den Datenspeicher zu verwenden - aber ich weiß sehr wenig über die Fähigkeit GQL. Ich habe im Grunde alle Arbeits Datenbank-Code mit MySQL geschrieben, es testet intern auf dem iPhone mit SQLite. Will GQL bieten die gleiche Funktionalität, die SQL kann? Ich las auf der Website, dass es bietet keine Unterstützung für Join-Abfragen. Auch ist es wirklich relationale?

Im Grunde denke ich, meine Frage ist, kann eine Anwendung, die typischerweise verwendet SQL-Backend funktioniert genauso gut mit Google App Engine, mit GQL?

Ich hoffe, das ist klar ... eine Anleitung groß ist.

War es hilfreich?

Lösung

True, Google App Engine ist ein sehr cooles Produkt, aber der Datenspeicher ist ein anderes Tier als eine normale mySQL Datenbank. Das ist nicht zu sagen, dass das, was Sie brauchen, kann nicht mit dem GAE Datenspeicher durchgeführt werden; jedoch kann es einige Nacharbeiten an Ihrem Ende nehmen.

Der prominenteste unterschiedlich, dass sie praktisch direkt bei Beginn bemerken ist, dass GAE ein objekt-relationales Mapping für das Datenspeicherschema verwendet. Im Wesentlichen Objektdiagramme werden in der Datenbank beibehalten, da Attribute und Beziehungen zu anderen Objekten zu halten. In vielen Fällen ORM (Object Relational Mappings) Karte ziemlich gut auf einer relationalen Datenbank (das ist, wie Hibernate funktioniert). Die Abbildung ist nicht perfekt, obwohl, und Sie werden feststellen, dass Sie Änderungen vornehmen müssen, um Ihre Daten zu beharren. Auch GAE hat einige einzigartige contraints dass komplizieren die Dinge ein wenig. Ein contraint das stört mich viel ist nicht in der Lage zu Abfrage für Attributpfade: z.B. "Wählen ... wo dog.owner.name = 'Bob'". Es sind diese Regeln, die Kraft, die Sie zu lesen und zu verstehen, wie GAE Datenspeicher funktioniert, bevor Sie springen.

ich denke, GAE in Ihrer Situation gut funktionieren könnte. Es kann nur eine gewisse Zeit in Anspruch nehmen ORM Persistenz im Allgemeinen und GAE-Datenspeicher im Besonderen zu verstehen.

Andere Tipps

GQL bietet fast keine Funktionalität überhaupt; es ist nur für SELECT-Abfragen verwendet, und es existiert nur, um das Schreiben SELECT für SQL-Programmierer einfacher abfragt. Hinter den Kulissen, wandelt sie Ihre Fragen zu db.Query Objekten.

Der Datenspeicher App Engine ist nicht eine relationale Datenbank überhaupt. Sie können einige Dinge tun, sieht relational, aber mein Rat für jedermann von einem SQL-Hintergrund kommt unter allen Umständen zu vermeiden GQL die Falle zu denken, den Datenspeicher zu vermeiden, überhaupt etwas zu wie ein RDBMS ist, und alles, was Sie wissen über Datenbank vergessen Design. Insbesondere bald Wenn Sie sich normalisierte etwas, werden Sie wünschen Sie noch nicht.

Ich denke, der Artikel sollten Ihnen helfen.

  

Zusammenfassung: Cloud Computing und Software-Entwicklung für Handheld-Geräte sind zwei sehr heiße Technologien, die zunehmend kombiniert werden Hybrid-Lösungen zu schaffen. Mit diesem Artikel erfahren Sie, wie Google App Engine, Google-Cloud-Computing-Angebot, mit dem iPhone, Apples mobilen Plattform zu verbinden. Sie werden auch sehen, wie die Open-Source-Bibliothek verwenden, TouchEngine, um dynamisch Steueranwendungsdaten auf dem iPhone durch in der App Engine Cloud verbinden und Caching, dass die Daten für die Offline-Nutzung.

Das ist eine ziemlich allgemeine Frage:)

Kurze Antwort: Ja. Es wird ein Umdenken Ihres Datenmodell einzubeziehen, aber ja, Änderungen sind Sie es mit den GAE Datastor API unterstützen können.

Wenn Sie Ihre Python-Modelle erstellen (man denke an diese als Tabellen), können Sie sicherlich Verweise auf andere Modelle definieren (so jetzt haben wir einen Fremdschlüssel haben). Wenn Sie dieses Modell wählen, werden Sie die Referenzierung Modelle zurück (so ziemlich wie ein Join).

Es wird höchstwahrscheinlich Arbeit, aber es ist nicht ein direkter Ersatz für einen mySQL-Server.

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