Domanda

Poiché il datastore di Google App Engine è basato su Tavolo grande e sappiamo che non è un database relazionale, come si progetta un file schema della banca dati/modello di dati per le applicazioni che utilizzano questo tipo di sistema di database?

È stato utile?

Soluzione

Progettare uno schema bigtable è un processo aperto e fondamentalmente richiede di pensare a:

  • I modelli di accesso che utilizzerai e la frequenza con cui ciascuno verrà utilizzato
  • Le relazioni tra i tuoi tipi
  • Di quali indici avrai bisogno
  • I modelli di scrittura che utilizzerai (per distribuire efficacemente il carico)

Il datastore di GAE denormalizza automaticamente i tuoi dati.Cioè, ogni indice contiene una copia (per lo più) completa dei dati e quindi ogni indice aumenta significativamente il tempo impiegato per eseguire una scrittura e lo spazio di archiviazione utilizzato.

Se così non fosse, progettare uno schema Datastore richiederebbe molto più lavoro:Dovresti riflettere attentamente sulla chiave primaria per ciascun tipo e considerare l'effetto della tua decisione sulla località dei dati.Ad esempio, durante il rendering di un post di un blog probabilmente avrai bisogno di visualizzare i commenti per accompagnarlo, quindi la chiave di ogni commento probabilmente inizierà con la chiave del post associato.

Con Datastore, questo non è un grosso problema:La query che usi assomigliarà a "Seleziona * da commenti dove post_id = N." (Se si desidera pagina per la pagina dei commenti, avresti anche una clausola limite e un possibile suffisso di "e comment_id> last_comment_id".) Una volta aggiunta una tale query, DataStore costruirà l'indice per te e le tue letture saranno magicamente veloce.

Qualcosa da tenere a mente è che ogni indice aggiuntivo crea dei costi aggiuntivi:è meglio utilizzare il minor numero possibile di modelli di accesso, poiché ridurrà il numero di indici che GAE costruirà e quindi l'archiviazione totale richiesta dai tuoi dati.

Rileggendo questa risposta, la trovo un po' vaga.Forse una domanda pratica sulla progettazione aiuterebbe a comprendere meglio questo aspetto?:-)

Altri suggerimenti

È possibile utilizzare www.web2py.com.Costruisci il modello e l'applicazione una volta e funziona su GAE ma anche con SQLite, MySQL, Posgres, Oracle, MSSQL, FireBird

Poiché GAE si basa sul modo in cui i dati vengono gestiti in Django, ci sono molte informazioni su come affrontare domande simili nella documentazione di Django (vedi ad esempio Qui, scorri fino a "Il tuo primo modello").

In breve, progetti il ​​tuo modello db come un normale modello a oggetti e lascia che GAE risolva tutte le mappature relazionali degli oggetti.

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