Domanda

Ho realizzato il prototipo di un'applicazione per iPhone che utilizza (internamente) SQLite come la sua base di dati. L'intento era quello in ultima analisi, farlo comunicare con un server tramite PHP, che sarebbe usare MySQL come database di back-end.

Ho appena scoperto di Google App Engine, tuttavia, ma sappiamo molto poco su di esso. Penso che sarebbe bello utilizzare l'interfaccia di Python di scrivere all'archivio dati - ma so molto poco di capacità di GQL. Ho praticamente scritto tutto il codice del database di lavoro utilizzando MySQL, testando internamente su iPhone con SQLite. Sarà GQL offrire le stesse funzionalità che possono SQL? Ho letto sul sito che non supporta unirsi query. Inoltre essa è veramente relazionale?

In sostanza Credo che la mia domanda è: può un app che utilizza in genere il lavoro di back-end di SQL altrettanto bene con App Engine di Google, con GQL?

Spero che sia chiaro ... alcun orientamento è grande.

È stato utile?

Soluzione

È vero, Google App Engine è un prodotto molto fresco, ma il datastore è una bestia diversa da un database mySQL regolare. Questo non vuol dire che ciò che è necessario non può essere fatto con il datastore GAE; ma può richiedere un po 'rielaborazione da parte vostra.

Il più importante di diverso che si nota a destra fuori dall'inizio è che GAE utilizza un object-relational mapping per il suo sistema di archiviazione dei dati. Essenzialmente oggetto grafici vengono mantenute nel database, mantenendo là attributi e relazioni ad altri oggetti. In molti casi ORM (Object mappature relazionali) mappa abbastanza bene in cima ad un database relazionale (questo è il modo Hibernate funziona). La mappatura non è perfetto e anche se troverete che è necessario apportare modifiche a persistere i dati. Inoltre, GAE ha alcuni vincoli unici che complicano le cose un po '. Uno contraint che mi preoccupa molto, non è in grado di eseguire una query per i percorsi degli attributi: per esempio "Select ... dove dog.owner.name = 'bob'". Sono queste le regole che ti costringono a leggere e capire come archivio dati GAE funziona prima di saltare.

Credo GAE potrebbe funzionare bene nella vostra situazione. E 'appena può richiedere un certo tempo per capire ORM persistenza in generale, e GAE datastore nello specifico.

Altri suggerimenti

GQL offre quasi nessuna funzionalità a tutti; è utilizzato solo per query SELECT, ed esiste solo per rendere la scrittura query SELECT più facile per i programmatori SQL. Dietro le quinte, converte le vostre domande a oggetti db.Query.

Il datastore App Engine non è un database relazionale a tutti. Si può fare un po 'di roba che sembra relazionale, ma il mio consiglio per chi viene da un background SQL è quello di evitare GQL a tutti i costi per evitare la trappola di pensare il datastore è niente affatto come un RDBMS, e di dimenticare tutto quello che sai di banca dati design. In particolare, se si sta normalizzando nulla, presto vi auguriamo non aveva.

Credo che questo articolo dovrebbe aiutare.

  

Riepilogo: Il cloud computing e lo sviluppo di software per dispositivi palmari sono due tecnologie molto caldi che vengono sempre più spesso combinati per creare soluzioni ibride. Con questo articolo, imparare come collegare Google App Engine, l'offerta di cloud computing di Google, con l'iPhone, la piattaforma mobile di Apple. Si vedrà anche come utilizzare la libreria open source, TouchEngine, per controllare dinamicamente i dati delle applicazioni su iPhone collegandosi al cloud App Engine e il caching che i dati per l'utilizzo offline.

Questa è una domanda generica abbastanza:)

Risposta breve: sì. Sta andando a coinvolgere qualche ripensamento del modello di dati, ma sì, i cambiamenti sono si può sostenere con l'API GAE Datastore.

Quando create i vostri modelli Python (pensare a questi come tabelle), si può certamente definire riferimenti ad altri modelli (così ora abbiamo una chiave esterna). Quando si seleziona questo modello, si otterrà indietro i modelli di riferimento (più o meno come un join).

E 'molto probabilmente il lavoro, ma non è una goccia in sostituzione di un server MySQL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top