2012-10-23 46 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