2012-06-03 4 views
1

J'ai un objet Membre qui est stocké maintenant. Mon service utilise l'API Foursquare pour afficher les lieux à proximité du membre. J'aimerais commencer à suivre les endroits qu'ils ont visités.Comment optimiser les données de type "suivi d'utilisateur" dans une base de données NoSQL comme RavenDB?

je pourrais ajouter une propriété au membre comme:

Member { 
    public List<Place> PlacesVisited {get;set;} 
} 

Mais ce serait essentiellement dupliquer les objets déjà stockés place dans le RavenDB. De plus, le membre est utilisé sur l'ensemble du site, alors que les lieux visités n'ont besoin que d'être affichés sur une seule page. Ce ne serait pas un gros problème s'ils avaient seulement quelques endroits visités, mais une fois qu'ils commencent à avoir des centaines, ou plus ... Je tirerais de plus en plus de données inefficacement (quand ce n'est pas nécessaire).

Je pourrais mettre les endroits visités dans un autre objet. Peut-être quelque chose comme:

VisitedPlace { 
    public Member Member {get;set;} 
    public Place Place {get;set;} 
    public DateTime WhenVisited {get;set;} 
    ... 
} 

Cela ne me empêche pas de dupliquer les données, mais cela ne signifie que je ne suis pas en tirant tous les endroits que le Membre a visité, lorsqu'ils ne sont pas nécessaires.

Aussi, à l'avenir, je peux suivre plus que les lieux visités ... Y at-il un meilleur moyen/modèle? Je suis plutôt nouveau à NoSQL, c'est mon premier projet utilisant RavenDB. Merci d'avance!

Répondre

2

Tchad, Y at-il des raisons pour lesquelles vous ne pouvez pas faire:

Member { 
    public List<string> PlacesVisited {get;set;} 
} 

Et il suffit de tenir les IDs des lieux qu'il a visités?

+0

Vous savez ... Je pense que ce serait bien. Peut-être même faire quelque chose comme 'PlacesVisited { chaîne publique PlaceId {get; set} public string PlaceName {get; set;} publique DateTime DateVisited {get; set;} }' et mettez le membre comme suit: 'Membre { public List VisitedPlaces {get; set;} }' Note: Je souhaite que nous puissions mieux afficher le code dans les commentaires ...;) – Chaddeus

Questions connexes