2

Web サイトの既存のコメント セクションに、Facebook に似た Like/Unlike システムを作成しようとしていますが、システムの設計に助けが必要です。

現在、ウェブサイトのすべての製品にはコメント セクションがあり、メンバーはコメントを投稿したり、気に入ったりすることができます。各メンバーが投稿したコメントの数と、各メンバーの各コメントがいいね! を獲得した数を知る必要があります。もちろん、分析目的で、誰がどのコメントを気に入ったかを知る必要があります (一部は、ユーザーが同じコメントを複数回気に入らないようにするためです)。

Like システムを現在のコメント モジュールに実装する単純な方法は、CommentID と UserID への外部キーを持つ新しいテーブルをデータベースに作成することです。次に、ユーザーがコメントに「いいね」を付けるたびに、ターゲット コメント ID とユーザー ID を含む行をこの新しいテーブルに挿入します。

これはうまくいくかもしれませんが、膨大な量のコメントとユーザーがこのテーブルを急速に拡大させ、この巨大なテーブルからレコードを取得したりカウントしたりするのは遅くなり、非効率的になります。いずれかの列にインデックスを付けることができますが、それがどれほど効果的かはわかりません。ウェブサイトには10​​0万件以上のコメントがあります。

PHPとMySQLを使用しています。巨大なデータベースを持つこのようなシステムの場合、Like システムをより最適化して安定させるには、どのように設計すればよいでしょうか?

4

2 に答える 2

1

あなたの主な関心事は多くのカウントになるので、コメントテーブルに個別のカウントを保持するのが簡単です。

次にTRIGGER、好き/嫌いに基づいてカウントを増減する を作成できます。

そうすれば、大きなテーブルを使用して、ユーザーが既に投票したかどうかを確認できます。

于 2016-06-10T14:30:54.550 に答える