Domanda

Poiché Google App Engine non consente l'adesione, ciò significa che devo prendere tutti i tavoli nella mia app Web e trovare un modo per combinarli in un unico enorme tavolo?

È stato utile?

Soluzione

Solo perché non hai join implementati dal DBMS non significa che non puoi avere più tabelle. In App Engine, questi sono chiamati "tipi di entità" e puoi averne quanti ne vuoi.

In generale, è necessario denormalizzare i dati per evitare la necessità di join frequenti. Nelle poche situazioni in cui sono inevitabili, puoi usare altre tecniche, come fare il join nel codice utente.

Altri suggerimenti

Combinarlo su un grande tavolo è sempre un'opzione, ma risulta per lo più inutilmente grandi e ridondanti per la maggior parte del tempo, quindi renderà la tua app lenta e difficile da mantenere.

Puoi anche emulare un join, ripetendo i risultati di una query ed eseguendo una seconda query per ogni risultato trovato per la prima query. Se hai la query SQL

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

puoi emularlo con qualcosa del genere:

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

Se stai cercando un modo per progettare il datatable. Ti consiglierei di fare un po 'di ricerca prima di iniziare il lavoro. Esistono proprietà piuttosto magiche per Google App Engine come:

  • Auto-unione
  • Proprietà dell'elenco a più valori

Sarebbe molto utile nel tuo design. Ho condiviso la mia esperienza qui .

Per conoscere l'abilità di scalabilità c'è un esclusivo corso gratuito in Udacity qui proprio sul argomento. È insegnato dal fondatore di reddit.com e spiega chiaramente tutto ciò che riguarda il ridimensionamento in corso in reddit, uno dei siti con il maggior numero di visitatori. Mostra l'intera implementazione della demo del corso in gae (e quello è stato un jackpot per me!). Offrono l'intero video dei corsi scaricabili gratuitamente qui . Ho lavorato duramente con il motore di app prima di ottenere queste risorse. Quindi ho pensato che condividere questo potrebbe aiutare gli altri a muovere il piede nelle acque.

Il passaggio da un database relazionale all'App Engine Datastore richiede un cambio di paradigma per gli sviluppatori durante la modellazione dei loro dati. Dai un'occhiata a qui per avere un'idea migliore. Ciò richiederà di pensare più in anticipo su come adattare il problema ai vincoli imposti dall'archivio dati, ma se è possibile, si ha la certezza che verrà eseguito rapidamente e ridimensionato.

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