2012-01-28 57 views
1

這比一個技術性的一種設計模式/文件設計問題...活動流設計RavenDb

我想顯示在我的網站上的活動料將列出所有的最新動態用戶已經這樣做在我的網站......這裏有一些活動我想顯示:

  • 新媒體上傳(Bob已經上傳了一個新的軌道)
  • 在配置文件評論(保羅曾這樣評價Bob的個人資料)
  • 媒體評論(史蒂夫曾這樣評價保羅的軌道「我的曲名」)
  • 狀態更新(史蒂夫可以寫他希望的任何狀態更新)

每個活動都需要有它自己的一套數據,比如上傳新媒體活動我想包括媒體的細節,如圖片,標題,說明等)。

本次活動將主要被用來作爲全球飼料所以它是爲所有用戶一樣,雖然我需要爲用戶的選擇僅顯示從它們下面(如Twitter)用戶的飼料項目。

我想我有兩個選擇:

1)拉中的所有數據特設有一個索引,因此信息總是最新的,即使用戶改變他的媒體標題的名字......我我不知道這將如何擴展,雖然??

2)有一個包含一個子文件,例如NewMediaUploadActivity(如下所示)的ActivityFeed文檔。

ActivityFeed 
- DateTime 
- AccountId 
- ActivityType 
- Activity (this is a polymorphic object) 

NewMediaUploadActivity : Activity 
- MediaTitle 
- MediaDescription 
- GenreName 

StatusUpdateActivity : Activity 
- StatusText 

ProfileCommentActivity : Activity 
- CommentText 
- ProfileAccountId 
- ProfileUsername 

等...

如果有人有任何經驗,或在最好的方式任意輸入爲此在RavenDB我將不勝感激,我的生活網站,SQL Server內置目前做什麼,我需要使用稍微修改選項2.

保羅

回答

0

我會爲模型這樣的:

public class ActivityTracking<TActivity> 
{ 
    public string[] AffectedUsers {get;set;} 
    public TActivity Activity {get;set;} 
} 

你可以有不同的活動(不要求在繼承層次),這些「附加」給不同的用戶。 例如,Bob評論簡的照片將在這兩個流中顯示。 然後您可以查詢該用戶的活動。

+0

嗨Ayende,我很欣賞你的答覆。不過,請原諒我不太明白該怎麼辦,但你能否詳細說明一下。我將如何建模IActivity?你能否提供一個例子來說一個MediaUploadedActivity? – 2012-01-29 20:30:54