1

これは、技術的な問題というよりも、デザイン パターン/ドキュメント デザインの問題です...

ユーザーが自分のサイトで行っているすべての最新の出来事を一覧表示するアクティビティ フィードを自分の Web サイトに表示したい...表示したいアクティビティの一部を次に示します。

  • 新しいメディアがアップロードされました (Bob が新しいトラックをアップロードしました)
  • プロフィールへのコメント (Paul が Bob のプロフィールにコメントしました)
  • メディアへのコメント (スティーブはポールのトラック 'my track name' についてコメントしています)
  • ステータスの更新 (Steve は希望するステータスの更新を書き込むことができます)

各アクティビティには、画像、タイトル、説明などのメディアに関する詳細を含めたい新しいメディア アップロード アクティビティなど、独自のデータ セットが必要です。

このアクティビティは主にグローバル フィードとして使用されるため、すべてのユーザーに同じですが、ユーザーがフォローしているユーザー (Twitter など) からのフィード アイテムのみを表示するオプションが必要です。

2つのオプションがあると思います:

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 で構築された私のライブ Web サイトは、わずかに変更されたオプション 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 に答える