0

フェイスブックのような通知システムを作り、その仕組みを考えて実現したかったのです。

notification(id、uid、query、date)とnotification_unread(id、nid、uid、date)の2つのテーブルがあります。

私はこれを次のように使用しようとしました。どこかにコメントを付ける場合は、次を追加します:my uid、$ _ SERVER ['QUERY_STRING']、NOW()をnotification

notification_unreadまだ読んでいない投稿のデータを挿入したかったので。この場合nid、通知IDを参照する必要があります。また、別の新しい投稿がある可能性がある場合にのみ、データがこのテーブルに挿入されます。ユーザーが何かを見るたびに、このテーブルから特定のエントリを削除します。

でも、このアプローチ(DBデザインを含む)がどこかで「間違っている」または「複雑すぎる」方法であるかどうかはわかりませんでしたが、理解できないため、これを実現できませんでした。にデータを挿入するときと方法の論理的な方法を考えてくださいnotification_unread。たとえば、新しい投稿をした後、自分に通知したくありません。しかし、私はまだテーブルにデータを挿入する必要があると思いますか?

つまり、私は必要なだけのデータを挿入し、これが最も効率的であることを実現しようとしているということです。

私をフォローしていただければ幸いです。何か提案をいただければ幸いです。

4

1 に答える 1

0

一見すると、非常にシンプルでクリーンなソリューションに見えるかもしれませんが、後で失敗します。podiluska が指摘したように、チェック フィールドがある方がよいでしょう。

未読の表示は簡単にできますが、ユーザーがチェックするとどうなるでしょうか。読み取りテーブルに移動する必要があります。これにより、システムで最も遅いプロセスであるディスク I/O が増加します。最近の 5 つの通知などを照会するだけです。

アーカイブ テーブルを作成して、古い通知をアーカイブ テーブルに移動することができます。ここで重要なことは、すべての更新がここにあるため、その通知テーブルを維持することです。大きくなればなるほど、パフォーマンスが低下します。長期にわたる影響ですが、後ではなく今すぐ解決策を検討することをお勧めします。

于 2012-09-20T14:58:23.653 に答える