1

Je modèles mis en place comme suit:Select types d'enfants de moteur app datastore - avantages et les inconvénients

class Day(db.Model): 
    date = db.DateProperty() 
    total = db.FloatProperty() 

class Event(db.Model): 
    desc = db.StringProperty() 
    amount = db.FloatProperty() 

La hiérarchie est en tant que telle: l'utilisateur> Jour> Événement (Les utilisateurs ont Journées des événements..

Lorsqu'un utilisateur se connecte, je veux sélectionner ses jours (pour une plage par date, disons) et ensuite pour chaque jour je veux obtenir leurs événements. Disons simplement que ceux-ci sont affichés dans une liste pour le moment.

Dois-je utiliser la propriété parent pour créer un groupe d'entités explicite? Ou devrais-je ajouter une propriété de référence le jour pour un utilisateur, et ajouter une propriété de référence sur l'événement pour un jour?

Quels sont les avantages et les inconvénients de chaque méthode? Considérations de performance Considérations d'évolutivité? Et aussi, comment pourrais-je interroger pour cela de la meilleure façon possible.

Merci!

Répondre

1

Si vous devez mettre à jour les modèles de jour et d'événement de manière transactionnelle (par exemple, le champ "total" doit être mis à jour à chaque événement), utilisez des groupes d'entités. Sinon, utilisez les propriétés de référence.

Pour sélectionner de manière plus efficace tous les événements d'une plage de dates, votre meilleure option serait de dénormaliser quelque peu et de mettre une propriété 'date' sur l'événement. Ensuite, vous pouvez faire une requête sur tous les événements pour l'utilisateur donné, dans la plage donnée, et récupérer les entités Day à partir de ceux-ci, si vous en avez besoin.