RavenDB建模日历应用程序

时间:2012-10-23 10:58:35

标签: c# nosql data-modeling ravendb modeling

我第一次尝试Ravendb并尝试为锻炼应用程序建立模型。 这是一个我不知道如何安排的类的简单示例。

User{
string:Name
string:Email
//+ 20 or so more properties

}

CalendarEntry{
DateTime:TimeStamp
decimal:Weight
decimal:Waist
List<Meal> Meals
List<WorkoutSession> WorkoutSessions
//+ more properties

}

会员将更新他们的训练日历,包括体重,腰围,每日特发训练,食物摄入量和卡路里等。因此,日历条目列表将每天增长。

所以问题是,用户对象是否应该包含日历条目列表,还是应该将其用作具有引用用户ID的自己的实体集合?

我主要担心的是Ravendb中的最大文档大小(有一个?),因为List会每天都在增长,如果日历条目是嵌套的集合,用户文档在一年左右之后可能会变得太重了

任何建议都将不胜感激

//金

1 个答案:

答案 0 :(得分:2)

我不知道Raven中有任何文档大小限制,但你的第二种方法仍然听起来更好......日历入口对象本身看起来相当大,所以最终可能会影响性能下降如果每个用户的日历条目集合变大。

但你真正需要问的问题是如何消费数据?您是否可能想要查询数据库中的所有日历条目,无论用户是谁?或者在给定的时间段内?如果答案是肯定的,那么您最好将日历条目存储在他们自己的集合中,以便为它们优化索引。

在raven中管理文档之间的“外键”非常容易,所以这不应该太难实现。此页面详细说明了如何处理文档关系:http://ravendb.net/docs/client-api/querying/handling-document-relationships