基于RavenDb的活动流设计

基于RavenDb的活动流设计,ravendb,user-activity,Ravendb,User Activity,这更多的是一个设计模式/文档设计问题,而不是一个技术问题 我想在我的网站上显示一个活动提要,该提要将列出用户在我的网站上所做的所有最新活动……以下是我想显示的一些活动: 已上载新媒体(Bob已上载新曲目) 个人资料评论(Paul对Bob的个人资料发表了评论) 媒体评论(史蒂夫对保罗的曲目“我的曲目名称”发表了评论) 状态更新(Steve可以编写他想要的任何状态更新) 每个活动都需要有自己的数据集,例如新媒体上传的活动(我想包括媒体的详细信息,如图像、标题、描述等) 此活动主要用作全局提要,因

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

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

  • 已上载新媒体(Bob已上载新曲目)
  • 个人资料评论(Paul对Bob的个人资料发表了评论)
  • 媒体评论(史蒂夫对保罗的曲目“我的曲目名称”发表了评论)
  • 状态更新(Steve可以编写他想要的任何状态更新)
每个活动都需要有自己的数据集,例如新媒体上传的活动(我想包括媒体的详细信息,如图像、标题、描述等)

此活动主要用作全局提要,因此对所有用户都是一样的,尽管我需要用户只显示他们正在跟踪的用户(如twitter)的提要项的选项

我想我有两个选择:

1) 通过索引临时拉入所有数据,以便信息始终是最新的,即使用户更改了其媒体标题名称…我不确定这将如何扩展

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

等等

如果有人有任何经验,或者对在RavenDB中实现这一点的最佳方法有任何意见,我将不胜感激,我用SQL Server构建的live网站目前使用稍微修改的选项2实现了我需要的功能

保罗

我将其建模为:

public class ActivityTracking<TActivity>
{
   public string[] AffectedUsers {get;set;}
   public TActivity Activity {get;set;}
}
公共类活动跟踪
{
公共字符串[]影响用户{get;set;}
公共触觉活动{get;set;}
}
您可以有“附加”到不同用户的不同活动(不需要在继承层次结构中)。 例如,Bob对Jane照片的评论将出现在两条流中。
然后,您可以查询该用户的活动。

Hi Ayende,感谢您的回复。不过,请原谅我不太理解这一点,但请你再详细说明一下。我将如何为IActivity建模?您能否提供一个示例,例如MediaUploadeActivity?
public class ActivityTracking<TActivity>
{
   public string[] AffectedUsers {get;set;}
   public TActivity Activity {get;set;}
}