33

スレッド化されたコメントをサポートできる Web アプリケーションを開発しています。受け取った投票数に基づいてコメントを並べ替える機能が必要です。(スレッド化されたコメントがredditで機能する方法と同じです)

その方法について SO コミュニティからの意見を聞きたいです。

コメントテーブルはどのように設計すればよいですか? これが私が今使っている構造です:

Comment
    id
    parent_post
    parent_comment
    author
    points

この構造にどのような変更を加える必要がありますか?

このテーブルから詳細を取得して正しい方法で表示するにはどうすればよいですか? (どの言語での実装も大歓迎です。可能な限り最善の方法で実装する方法を知りたいだけです)

CPU/データベースの負荷を軽減するために、この機能を実装する際に注意する必要があることは何ですか?

前もって感謝します。

4

4 に答える 4

4

現在の設計は、基本的に小さな階層 (1000 項目未満) には問題ありません。

特定のレベルまたは深さでフェッチする場合は、「レベル」アイテムを構造に追加し、保存の一部として計算します

パフォーマンスが問題になる場合は、適切なキャッシュを使用してください

于 2009-02-28T12:50:14.523 に答える
3

上記の表に次の新しいフィールドを追加します。

  • thread_id: 特定のオブジェクトに添付されたすべてのコメントの識別子

  • date: コメントの日付 (コメントを順番に取得できます)

  • rank: コメントのランク (ランキングでコメントの順序を取得できます)

これらのフィールドを使用すると、次のことが可能になります。

  1. 1 回の操作でスレッド内のすべてのコメントを取得する
  2. スレッド内のコメントを日付順またはランク順で並べ替える

残念ながら、SQL 標準に近いクエリ DB を維持したい場合は、メモリ内にツリーを再作成する必要があります。一部の DB は、階層データ用の特別なクエリを提供しています (fe Oracle)

./アレックス

于 2009-02-28T13:16:12.680 に答える