Domanda

sto costruendo una domanda con una relazione molti a molti rapporti; Un elemento di entità 'Immagine' può essere collegato a qualsiasi numero di gallerie ( 'Galleria'). E, naturalmente, una galleria può contenere qualsiasi numero di immagini.

Quindi, seguendo il suggerimento di Google qui, userò un elenco a 'Picture' che detiene le chiavi esterne di 'Gallery'. Questo è l'approccio BigTable.

(Il vecchio stile approccio relazionale DB sarebbe quella di avere un tavolo / entità tra 'Immagine' e 'Gallery'.)

Ecco la mia domanda:? Quando si ripone la chiave, dovrei andare a fare una "StringListProperty" su 'Immagine' o semplicemente di una "ListProperty (db.Key)" lavoro migliore

Una ragione che vedo per un StringList sarebbe, che avrei potuto conservare anche altri valori, allora Keys, ma d'altra parte che sarei stile sporco comunque. Ma sono anche abbastanza sicuro che Google ha suggerito di non usare più di una lista ad un'entità perché l'Index (es) esploderà. Quindi questo mi terrà una backdoor.

Per quanto riguarda il ListProperty di tipo " chiave " un certo punto sarebbe la verifica automatica, se il valore è in realtà una chiave.

Per quanto è molto facile per convertire le stringhe di chiavi e viceversa, non vedo alcuna ragione per uno dei tipi di elenco a preferire qui.

Quando si tratta di problemi di prestazioni, non ho idea di come ho potuto testare questo - ma sembra che questo sarà il principale fattore in questa decisione

.

Mi incuriosisce il vostro input. Soprattutto se qualcuno ha testato le prestazioni su questo o sarebbe così gentile e farlo.

Saluti, // Hannes

È stato utile?

Soluzione

Usa un db.ListProperty(db.Key) se avete intenzione di memorizzare liste di chiavi. Essi verranno memorizzati in una rappresentazione binaria, che è più compatto rispetto alla rappresentazione di stringa si usa in una lista di stringhe.

Hai ragione che la miscelazione tasti con altri oggetti in un elenco è disordinato. Avere più elenchi in un'entità va bene, a patto che non lo fai indice di più di uno di loro nello stesso indice personalizzato -. Che è ciò che provoca gli indici che esplodono

Altri suggerimenti

Usa db.ListProperty (db.Key), questa è la volontà di rendere i dati recuperano più facile che stringa .. se Galleria modello ha proprietà aveva pic_list che è di tipo db.ListProperty (db.Key), che contiene l'elenco delle chiavi di soggetti immagine .. Supponiamo immagine è il nome del soggetto .. poi Picture.get (// // GalleryObject. pic_list) potranno ottenere tutti i entités foto ..

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