2011-02-13 4 views
0

Voici ma structure que je souhaite stocker dans la base de donnéesGWT + JDO + GAE, comment organiser mes données pour une performance

GrandFather-> Père [] -> Enfant []. Grand-père contient une liste de père et père contient une liste d'enfants.

Quelle est la meilleure façon de le faire -> embbedded ou leurs propres tables?

Et comment puis-je remplir un grand-père [] du côté client. (J'ai regardé thro objectify, requestFactory et même marshalling comme DTO). Actuellement, j'ai 2400 grand-père ayant chacun 5 père et ayant chacun 5 enfants.

Mes requêtes sont quelque peu et cela prend beaucoup de temps pour récupérer les objets. pour (grand-père ...) queryAllfather pour (père ...) queryAllChildren

Pour chaque requête, il est pm.newQuery (GrandFather.class); pm.execute.

Cela prend beaucoup de temps.

Répondre

1

Tout d'abord, si vous utilisez avec réplication Datastore, ne pas utiliser JDO ou JPA. C'est la leçon que j'ai apprise à la dure. Ce n'est pas conçu pour ça.

Au lieu d'utiliser JDO ou JPA je suis allé avec une bibliothèque beaucoup plus simple, plus propre et plus efficace appelé Objectify.

En ce qui concerne le stockage de vos données que dans le DRH, vous devez en dire plus sur vos cas d'utilisation. Si vous avez un seul modèle d'ancêtre, vous pouvez le garder hiérarchique dans le DRH. Si votre modèle comprend également une ligne «maternelle», vous devrez le faire différemment. L'avoir hiérarchique (si possible) peut vous donner 2 avantages: - Possibilité de faire des transactions sur la hiérarchie. - Éviter un index supplémentaire pour l'objet parent, car l'extraction par ancêtre ne nécessitera pas l'indexation du champ parent.

Il y a aussi 2 inconvénients: - Vous ne pouvez avoir qu'un seul parent. Vous devez donc décider lequel est le meilleur candidat pour cela. Par exemple, si vous avez une mère, une grand-mère, vous devrez choisir le père ou la mère, mais pas les deux pour être parents. - Il y a quelques inefficacités à mettre/obtenir des objets avec des clés hiérarchiques plus longues. Par exemple, la clé parente devra toujours être récupérée. Je vous suggère de lire à ce sujet dans les docs, parce que je pourrais vous désinformer.

Il est important de se rappeler que vous ne pouvez pas besoin des avantages alors que les inconvénients peuvent sérieusement affecter votre projet. Donc, la réponse à votre question initiale est: vous seul pouvez le dire. :)

+0

Oui, j'ai fini par utiliser l'objectif, mais avant de vous suggérer :). – justanothercoder

+0

Pour d'autres, cela fait un moment que j'ai codé ce problème, j'ai partiellement changé les spécifications, mais toujours comme suggère ATrubka - s'il vous plaît se référer à la documentation. – justanothercoder

Questions connexes