データベース内の通知の追跡: Facebook にインスピレーションを受けたデザイン
データベースの設計は、特にソーシャル アプリケーションでのデータの効率的な管理と取得において重要な役割を果たします。 Facebook などのメディア アプリケーション。 Facebook が通知を追跡する方法を理解すると、同様のシステムの設計に役立つ洞察が得られます。
通知テーブル
通知テーブルには、一意の ID (id) を含む各通知に関する情報が保存されます。 、それが属するユーザー (userid)、通知の説明 (update)、および作成時刻 (time)。このテーブルは、通知の保存と一覧表示に使用されます。
Notifications Read Table
どの通知が読まれたかを追跡するために、別個の notificationRead テーブルが導入されています。このテーブルには次のフィールドが含まれます:
未読通知のクエリ
特定のユーザーの未読通知を取得するには、次のクエリを使用できます。
<code class="sql">SELECT `userid`, `update`, `time` FROM `notifications` WHERE `notifications`.`userid` IN ( ... query to get a list of friends ...) AND `notifications`.`time` > ( SELECT `notificationsRead`.`lasttime_read` FROM `notificationsRead` WHERE `notificationsRead`.`userid` = ...$userid... )</code>
このクエリは、notifications テーブルと notificationRead テーブルを結合します。そして、通知のタイムスタンプとユーザーの最終読み取り時刻を比較します。ユーザーの最終読み取り時刻よりも大きいタイムスタンプを持つ通知は、未読とみなされます。
既読通知の更新
ユーザーが通知ページを開くと、notificationsRead テーブルの対応する行が更新されます。現在の時刻を最終読み取り時刻として記録するように更新する必要があります。このフラグを維持することで、後続のクエリで未読通知のみを効率的に取得できます。
このアプローチにより、Facebook が通知システムを管理する方法と同様の方法で、既読通知と未読通知を効率的に追跡できます。
以上がFacebook は既読通知と未読通知をどのように追跡しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。