1

这更像是一个设计模式/文档设计问题,而不是技术问题......

我想在我的网站上显示一个活动提要,其中将列出用户在我的网站上所做的所有最新事件......以下是我想显示的一些活动:

  • 上传了新媒体(Bob 上传了新曲目)
  • 对个人资料的评论(保罗对鲍勃的个人资料发表了评论)
  • 媒体评论(史蒂夫评论了保罗的曲目“我的曲目名称”)
  • 状态更新(史蒂夫可以写任何他想要的状态更新)

每个活动都需要有自己的数据集,例如新媒体上传活动我想包括有关媒体的详细信息,例如图像、标题、描述等)。

此活动将主要用作全局提要,因此对所有用户都相同,尽管我需要用户选择仅显示他们关注的用户的提要项目(如 twitter)。

我想我有两个选择:

1) 使用索引提取所有 Ad-Hoc 数据,以便信息始终是最新的,即使用户更改了他的媒体标题名称......我不确定这将如何扩展?

2) 有一个 ActivityFeed 文档,其中包含一个子文档,例如 NewMediaUploadActivity(如下所示)。

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

NewMediaUploadActivity : Activity
 - MediaTitle
 - MediaDescription
 - GenreName

StatusUpdateActivity : Activity
 - StatusText

ProfileCommentActivity : Activity
 - CommentText
 - ProfileAccountId
 - ProfileUsername

ETC...

如果有人有任何经验,或者对在 RavenDB 中执行此操作的最佳方式有任何意见,我将不胜感激,我使用 SQL Server 构建的实时网站目前可以使用稍微修改的选项 2 来满足我的需要。

保罗

4

1 回答 1

0

我将其建模为:

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

您可以将不同的活动(不需要在继承层次结构中)“附加”到不同的用户。例如,鲍勃对简的照片发表评论会出现在两个信息流中。然后,您可以只查询该用户的活动。

于 2012-01-29T15:42:10.173 回答