2012-06-03 22 views
1

我有一个成员对象现在被存储。我的服务使用Foursquare场馆API来显示会员附近的地点。我想开始跟踪他们访问过的地方。如何优化RailsDB等NoSQL数据库中的“用户跟踪”类型数据?

我可以将属性添加到成员,如:

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

但是,这将基本上是重复已经存储在RavenDB中放置物品。此外,会员在整个网站使用,而他们访问的地方只需要在一个页面上显示。如果他们只访问了几个地方,那么这不会是什么大不了的事情,但是一旦他们开始拥有数百个或更多...我会越来越无效地拖拽越来越多的数据(当不需要时)。

我可以把访问的地方放在另一个对象。也许是这样的:

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

这并不让我从复制的数据,但它确实意味着我不拉的成员访问了,不需要时的所有地方。

此外,在未来,我可能会追踪更多的地方访问...有没有更好的方式/模式?我对NoSQL相当陌生,这是我第一个使用RavenDB的项目。提前致谢!

回答

2

乍得, 是否有任何理由,你为什么不能做:

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

而且牵住他访问过的地方的ID?

+0

你知道......我认为那样可以。甚至使像 'PlacesVisited { 公共字符串PlaceId {获得;设置} 公共字符串地名{获取;集;} 公众的DateTime DateVisited {获取;集;} }' 并把那会员像这样: '成员{ public List VisitedPlaces {get; set;} }' 注意:我希望我们可以在评论中更好地显示代码...;) – Chaddeus