如何优化Noven数据库中的“用户跟踪”类型数据,如RavenDB?

时间:2012-06-03 05:54:38

标签: database-design nosql ravendb

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

1 个答案:

答案 0 :(得分:2)

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

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

只是抓住他去过的地方的ids?