我有一个现在存储的成员对象。我的服务使用 Foursquare 场地 API 来显示会员附近的地点。我想开始追踪他们去过的地方。
我可以向成员添加一个属性,例如:
Member {
public List<Place> PlacesVisited {get;set;}
}
但这本质上是复制已经存储在 RavenDB 中的 Place 对象。此外,会员在整个网站中都使用,而他们访问过的地方只需要显示在一个页面上。如果他们只访问了几个地方,这没什么大不了的,但是一旦他们开始有数百个或更多......我会低效地提取越来越多的数据(当不需要时)。
我可以将访问过的地方放在另一个对象中。也许是这样的:
VisitedPlace {
public Member Member {get;set;}
public Place Place {get;set;}
public DateTime WhenVisited {get;set;}
...
}
这并不能阻止我复制数据,但这确实意味着我不会在不需要时提取会员访问过的所有地方。
此外,将来我可能会跟踪的不仅仅是访问过的地方......有没有更好的方法/模式?我对 NoSQL 比较陌生,这是我第一个使用 RavenDB 的项目。提前致谢!