1

Twitterの「このユーザーをフォローする」問題のような多対多のトリガー関係を処理するための最良の方法は何ですか。

ユーザーがスレッドの返信を「監視」している場合にも、同様の問題が発生します。スレッドを監視しているユーザーが10,000人いて、誰かが返信した場合、監視者に通知するにはどうすればよいですか?私が考えることができるのは次のとおりです。

挿入時に、「監視テーブル」[フィールド:user_id、thread_id]で、このスレッドのIDに一致するスレッドがないか確認してください。これは私が通知する必要があるユーザーのリストです。通知が必要なユーザーごとに、「通知テーブル」に行を挿入します[フィールド:user_id、message、addonなど]。これで、このテーブルを介してすべてのユーザーに通知を表示できます。

問題は、これはすべて非常に高価に聞こえるということです。特に10,000インサートパーツ。

これを行うためのより良い方法があるはずです...アイデア?

4

1 に答える 1

3

監視テーブルにlast_updatedフィールドを追加し、監視対象のスレッドが更新されたときにそれを設定できます。また、のフィールドを追加しますlast_notified。これは、ユーザーに通知するときに設定します。の場合、ユーザーに通知する必要があることがわかりますlast_updated > last_notified。ユーザーに通知する必要があると判断した場合は、スレッドからのすべてのメッセージを。で表示するだけpost_date >= last_updatedです。

于 2008-12-11T06:43:05.600 に答える