2012-10-23 45 views
2

我尝试Ravendb首次,并试图建立一个锻炼的应用程序的模型。 这里是我不知道如何安排课程的一个简单的例子。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 

} 

成员将更新与体重,腰围,他们每天练习吧会话,食物摄入的卡路里等他们的训练日程。所以日历条目的列表将每天增长。

所以现在的问题是,如果用户对象包含日历条目列表或者我应该使用它作为自己的实体集合与参考编号,以用户?

我主要关心的是Ravendb中最大的文档大小(是否有一个?),因为List每天都在增长,并且如果日历条目是嵌套的,一年后用户文档可能会变得太沉重采集。

任何意见,将不胜感激

//金

回答

2

我不知道的乌鸦任何文件大小限制,但你的第二个方法仍然听起来更好...日历条目的对象看起来相当的大小在自己的权利,所以它最终可能会进一步削弱性能的路线,如果日历项的集合,生长在每个用户的大。

但你真的需要问的问题是如何将数据被消耗?您是否可能想要查询数据库中的所有日历条目,而不考虑用户?或者在特定的时间段内?如果答案是肯定的,那么你最好将自己的日历条目存储在自己的集合中,这样可以为它们优化索引。文档之间

管理“外键”是在人的乌鸦很容易因此这应该不是太难做到。本页详细介绍了如何处理文档关系:http://ravendb.net/docs/client-api/querying/handling-document-relationships

+0

我也在考虑这个问题,我将如何查询数据。大多数情况下它非常简单。例如GetAllEntriesByUserId(userI)。但可能有某处我想比较不同的人民excersize长度,excersize类型...所以我会去后者,使用日历条目作为其自己的集合与UserRefId在每个条目中。但是您将CalendarEntry设置中的基本建模错误视为其实体集合吗? – Kimpo

+0

正确,所描述的模型是完全可以接受的和可持续的。 – Nick