Dato che Google App Engine non consente i join, significa che devo prendere tutti i tavoli nella mia app Web e capire come combinarli in un unico enorme tavolo?Senza i join su Google App Engine, i tuoi dati devono esistere in un'unica grande tabella?
risposta
Solo perché non sono stati implementati join dal DBMS non significa che non è possibile avere più tabelle. In App Engine, questi sono chiamati "tipi di entità" e puoi averne quanti ne vuoi.
Generalmente, è necessario denormalizzare i dati per evitare la necessità di frequenti join. Nelle poche situazioni in cui sono inevitabili, puoi utilizzare altre tecniche, come fare il join nel codice utente.
Combinarlo in un unico grande tavolo è sempre un'opzione, ma il risultato è il risultato di tabelle inutilmente grandi e ridondanti la maggior parte del tempo, quindi renderà l'app lenta e difficile da mantenere.
È inoltre possibile emulare un join, eseguendo il iterazione dei risultati di una query e eseguendo una seconda query per ogni risultato trovato per la prima query. Se avete la query SQL
SELECT a.x FROM b INNER JOIN a ON a.y=b.y;
è possibile emulare questo con qualcosa di simile:
for b in db.GqlQuery("SELECT * FROM b"):
for a in db.GqlQuery("SELECT * FROM a WHERE y=:1", b.y):
print a.x
Il passaggio da un database relazionale per App Engine Datastore richiede un cambiamento di paradigma per gli sviluppatori durante la modellazione loro dati. Dai un'occhiata a here per avere un'idea migliore. Ciò richiederà di pensare più in anticipo su come adattare il problema ai vincoli imposti dal datastore, ma se è possibile, allora si è certi che verrà eseguito rapidamente e scalabile.
Se stai cercando il modo di progettare il datatable. Ti consiglierei di fare un po 'di ricerche prima di iniziare il lavoro. Ci sono proprietà abbastanza magici per Google App Engine piace:
- Self-fondono proprietà elenco
- multivalore
che sarebbe molto utile nella progettazione. Ho condiviso my experience here.
Per informazioni sulla scalabilità è disponibile un esclusivo free course in Udacity here proprio sull'argomento. È insegnato dal fondatore di reddit.com e spiega chiaramente l'intero processo di scaling che sta accadendo in reddit, uno dei siti con il maggior numero di visitatori. Mostra l'intera implementazione della demo del corso in gae (e quello era un jackpot per me!). Offrono i video dell'intero corso free to download here. Ho lavorato duramente con il motore di app prima di avere queste risorse. Quindi ho pensato che condividere questo potrebbe aiutare altri che stanno calpestando il piede nelle acque.
- 1. Doctrine non trova i dati su Google App Engine?
- 2. Retrolambda su Google App Engine
- 3. memorizzazione impostazioni app su Google App Engine
- 4. Google App Engine su dominio Google Apps
- 5. web.py su Google App Engine
- 6. Implementazione di tag su Google App Engine
- 7. eCommerce su Google App Engine
- 8. Django su Google App Engine
- 9. Valori predefiniti per i modelli in Google App Engine
- 10. Impossibile distribuire Android App Engine progetto su Google App Engine
- 11. API di ricerca su Google App Engine
- 12. Dati principali - Backup su Google App Engine (iPhone)
- 13. Memorizzare i dati nell'archivio dati App Engine da un'app Android
- 14. ThreadLocal su Google App Engine (GAE)
- 15. identità federate su Google App Engine
- 16. ImportError su Google App Engine con lxml
- 17. intestazione p3p su GAE (Google App Engine)
- 18. Google App Engine - Impossibile trovare i miei messaggi di registrazione
- 19. Protezione RESTful API in Google App Engine
- 20. Memorizzazione dei dati in un'app di Google App Engine
- 21. Come posso esportare i dati dall'archivio dati ad alta replicazione di Google App Engine?
- 22. Join su Google Bigquery
- 23. Grails su Google-App-Engine - È morto?
- 24. Google App Engine APNS
- 25. appengine_config.py in Google App Engine
- 26. Come funzionano esattamente i registri di Google App Engine?
- 27. Google App Engine Geohasing
- 28. Google-app-engine NDB
- 29. Chiavi personalizzate per i modelli di Google App Engine (Python)
- 30. mlpy, numpy, scipy su Google App Engine
App Engine utilizza GQL che ha un sottoinsieme molto semplice di sintassi SQL. Non sono sicuro al 100% ma credo che il tuo esempio SQL non funzionerebbe. –
Sì, GQL è meno potente di SQL, ma abbastanza potente, quindi il mio esempio funzionerà. Vedi http://code.google.com/appengine/docs/python/datastore/gqlreference.html – pts
Ciò non comporterebbe un numero enorme di connessioni all'archivio dati e rallenterebbe così le cose? – chakrit