Question

Je construis une application avec plusieurs à plusieurs; Un élément de l'entité « Image » peut être lié à un certain nombre de galeries ( « Galerie »). Et bien sûr, une galerie peut contenir un certain nombre d'images.

Alors, après la suggestion de Google ici, je vais utiliser une liste à « image » qui détient les clés étrangères de « Galerie ». Telle est l'approche BigTable.

(L'ancienne approche Relational DB serait d'avoir une table / entité entre « Image » et « Galerie ».)

Voici ma question: Lors du stockage de la clé, dois-je aller pour un travail « StringListProperty » sur « Image » ou bien une « ListProperty (db.Key) » meilleure

L'une des raisons que je vois pour StringList serait, que je pouvais stocker également d'autres valeurs alors clés, mais d'autre part ce serait le style sale de toute façon. Mais je suis aussi assez sûr que Google suggère de ne pas utiliser plus d'une liste à une entité, car l'indice (s) va exploser. Donc, cela va me garder une porte dérobée.

Quant à la ListProperty avec le type " Touche " un point serait la vérification automatique, si la valeur est en fait une clé.

Comme il est très facile de convertir des chaînes Keys et vice versa, je ne vois aucune raison pour l'un des types de listes de préférer ici.

En ce qui concerne les problèmes de performance, je ne sais pas comment je pourrais le tester - mais il semble que ce sera le principal facteur dans cette décision

.

Vous voulez savoir votre entrée. Surtout si quelqu'un a testé les performances sur ce ou serait si gentil et le faire.

Cordialement, // Hannes

Était-ce utile?

La solution

Utilisez un db.ListProperty(db.Key) si vous avez l'intention de stocker des listes de clés. Ils seront stockés dans une représentation binaire, qui est plus compact que la représentation de chaîne que vous utilisez dans une liste de chaînes.

Vous avez raison que le mélange des clés avec d'autres objets dans une liste est en désordre. Avoir plusieurs listes dans une entité est très bien, aussi longtemps que vous ne indexent plus d'un d'entre eux dans le même indice personnalisé -. Qui est ce qui provoque des indices explosant

Autres conseils

Utilisez db.ListProperty (db.Key), c'est fera les extraction de données plus facile que la chaîne .. si le modèle Gallery a la propriété avait pic_list qui est de type db.ListProperty (db.Key), qui contient la liste des clés de l'entité d'image .. l'image est le Supposons que le nom de votre entité .. puis Picture.get (// // GalleryObject. pic_list) auront toutes les images ENTITES ..

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top