1

我有一个现在存储的成员对象。我的服务使用 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 的项目。提前致谢!

4

1 回答 1

2

乍得,你有什么理由不能这样做:

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

只保留他去过的地方的身份证?

于 2012-06-03T12:57:06.810 回答