我是第一次尝试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中的最大文档大小(有吗?),因为列表每天都在增长,而且如果日历条目是嵌套集合,则用户文档可能会在一年左右后变得过重。

任何意见,将不胜感激

//金

最佳答案

我不知道Raven中有任何文档大小限制,但是您的第二种方法听起来仍然更好... Calendar条目对象本身看起来尺寸相当大,因此如果收集,它最终可能会进一步降低性能。每个用户的日历条目数量都在增加。

但是您真正要问的问题是如何使用数据?是否可能要查询数据库中的所有日历条目,而与用户无关?还是在给定的时间内?如果答案是肯定的,那么您最好将Calendar条目存储在它们自己的集合中,从而可以为它们优化索引。

在乌鸦中,管理文档之间的“外键”变得相当容易,因此这应该不太困难。此页面详细介绍了如何处理文档关系:http://ravendb.net/docs/client-api/querying/handling-document-relationships

关于c# - RavenDB对日历应用程序建模,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13028960/

10-15 07:47