0

だから私は次のドメインモデルを持っています:

Articleこれは基本的にブログ投稿であり、現在はエンティティです。

ここで、次の機能を追加したいと思います。

  • ユーザーが (ブラウザーで) 記事を表示すると、API 呼び出しが行われ、ブログ投稿が既読として「フラグ」付けされます。

ここで計算を行うと、まだ読まれていない記事を特定できるはずです。

  • ユーザーが記事にコメントを投稿すると、ブログ投稿がフォローされていることを示す「フラグ」を立てる API 呼び出しが行われます。

ここで計算を行うと、最新のユーザーのコメント投稿以降に新しいコメントが投稿されているかどうかを判断できるはずです。

基本的に、両方の機能 (読み取りとフォロー) は、属性、記事 ID、ユーザー ID、および読み取り/アクションの日付を共有します。

Article をフォローしてから読んだ場合は、読んだ日付を使用する必要があることに注意してください。

したがって、同じオブジェクトを使用して追加の属性を追加して、次のようにマークすることもできます。

デザインのアイデアはありますか?

多くの記事とユーザーがいることに注意してください。私はDoctrine2とMySQLを使用していますが、これはどの言語にも当てはまります。

4

1 に答える 1

1

アプリケーションが適切にスケーリングされるように、イベントがトリガーされたときにローカルで計算を行います。つまり、誰かがコメントを追加すると、システムはその新しいコメントに誰が投資しているかをチェックします。そうしないと、スケジュールされたタスクがすべてのデータを処理することになり、最初は正常に実行されますが、ユーザー、記事、およびコメント間の関係が増加するにつれて、ワークロードが指数関数的に増加します。

Map/Reduce パターンの使用を調べることもできます。Ayendeには、これに関する優れた紹介記事があります。これは、説明したものとほぼ同じアプリケーション ドメイン (記事、コメントなど) にあります。

特定のユーザーが記事またはコメントを既読としてマークするイベントに関しては、これは記事またはユーザーのものではありません。ドキュメント データベースを使用していて、このデータをユーザーに対して保存したい場合、時間の経過とともにかなりの量のデータが蓄積される可能性があるため、データを新しいエンティティに保存するか、記事 (理論的には、これには最初の関心が集中し、人気を表すレベルまで関心が低下します。

うまくいけば、そのいくつかが役立つかもしれません。

于 2013-03-08T10:12:34.107 に答える