C# RavenDB为日历应用程序建模

C# RavenDB为日历应用程序建模,c#,nosql,data-modeling,ravendb,modeling,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

我第一次尝试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

}
用户{
字符串:名称
字符串:电子邮件
//+20多处房产
}
日历条目{
日期时间:时间戳
十进制:重量
十进制:腰围
列餐单
列出训练课程
//+更多属性
}
会员们将根据体重、腰围、每日锻炼时间、含卡路里的食物摄入量等更新训练日程。因此,日历条目的列表将每天增加

所以问题是,用户对象应该包含日历项列表,还是应该使用它作为自己的实体集合,并带有指向用户的引用Id

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

如有任何建议,将不胜感激


//Kim

我不知道Raven中有任何文档大小限制,但您的第二种方法听起来还是更好。。。Calendar entry对象本身看起来相当大,因此如果每个用户上的日历项集合变大,它可能会进一步降低性能

但您真正需要问的问题是,数据将如何使用?您是否希望在数据库中查询所有日历条目,而不考虑用户?或者在给定的时间段内?如果答案是肯定的,那么您最好将日历条目存储在它们自己的集合中,这样您就可以为它们优化索引


在raven中,管理文档之间的“外键”相当容易,因此这应该不会太难实现。本页详细介绍了如何处理文档关系:

我也在考虑这个问题,我将如何查询数据。大多数情况下,这是非常直截了当的。例如,GetAllEntriesByUserId(userI)。但也许有地方我想比较不同的人练习的长度,练习的类型。。。因此,我将选择后者,使用calendar条目作为自己的集合,每个条目中都有一个UserRefId。但是您在设置CalendarEntry作为其自己的实体集合时没有看到任何基本的建模错误?正确,所描述的模型是完全可以接受和可持续的。