2011-06-20 8 views
1

私のウェブアプリケーションは、パーソナライズされたおすすめを提供しています。ユーザーがそれを使い始めると、データベース内の他のテーブルと関連して、約1000以上の行が1つの大きな推奨テーブルに挿入されています。ユーザーが投票したすべてのアイテムは、1000以上のすべての行に影響します。常設テーブル、一時テーブルまたはPHPセッション?

推奨情報はセッション中にのみ役立つので、推奨表が大きくなっているので、より適切な方法に切り替える必要があります。ユーザーセッションが終了するとすぐに関連する行を削除する可能性があります。私はPHPのセッションの配列や一時テーブルがこのケースの方が良いと思いますか?

答えて

0

最初に、データ構造を再設計することを検討してください。最適ではないと思います。 ユーザーの推奨事項をテーブルに保存するuser-recommendeditem-score:一時テーブルなどの必要はありません。 それ以外の場合は、セッションの使用を開始できますが、コードを慎重にカプセル化する必要があります。このソリューションがメンテナンスできなくなった場合には、簡単に変更できます。

1

セッションごとに1つの一時表がカタログの汚染につながるため、実際には推奨されません。

あなたは実際にデータを保存していると考えていますので、定期的に提案を改善してください。

+0

巨大で低速のテーブルはありませんか?これまでサイトを使用していたすべてのユーザーに1000行の時間をかけますか?私はユーザーの実際の選択を保存します。 – Roy

+0

私はまた、何が最善の方法であるかについても疑問に思っています。 1つの大きなテーブル行く方法ですか? – Roy

+1

保存するデータと保存する方法を特定するのはあなた次第です...正直言ってセッションごとに1k +書き込みをするのはちょっと狂っています。したがって、各ページビューでデータを再クエリするのを避けるだけであれば、セッションは正しいと思われます。 :-)それにもかかわらず、あなたが(おそらくいくつかの集約された形式で)保存したいと思うかもしれない興味深いものがなければなりません。 –

0

この方法には欠陥があると思われます。彼らのうち何人が今までにに見える?あなたがその質問に対する答えを知らない場合は、あなたが答えを知らない理由を考えるのに時間を費やす必要があります。

すべての項目ものを1000 +行

のすべてに影響するためのユーザーの投票は、あなたのデータが適切に正規化されていますか?

しかし、そのままにしておきます。リレーショナルデータベースは明示的に設計されており、従来のプログラミング言語の代わりに表形式のデータセットを生成および維持することについて、より効率的に設計されています。

+0

事は、あなたがすべての可能な項目の中から最高の推薦を得たいならば、あなたはそれらのすべてを利用者の選択に従って評価しなければなりません。 – Roy