2017-05-15 1 views
-2

ニュースサイトがあります - 現在、mysql dbには約50,000のニュースがあります。私は各ニュースページのための最も興味深い関連したニュースのリストを作成し、現在のユーザーのための既に見られた項目を削除する必要があります(実際のパーソナライゼーション)。 私は既にクッキーで表示されたニュースのリストを作成しました。ですから、私が必要とするのは、閲覧されたニュースをフィルタリングするためのアーキテクチャ上の最良のアプローチです。PHPユーザのパーソナライズ

私は牽引のオプションを参照してください。

  1. はすでに最も人気のあるニュース(20-30k項目)の完全なリストを計算し、各顧客の要求削除見るもののためにメモリに保管してください。
  2. ユーザーがそのページを開くたびに、彼の人気アイテムのリストを再度作成します。

    オプション1では、APC、REDISなどでキャッシュを使用できますが、大量のメモリを消費している各リクエストに常に大きなデータ配列がコピーされます。しかし、オプション2では、毎回dbにリクエストする必要があり、高速ではなく、CPUとDBのリソースを消費します。

私は非常に多くのリソースを使用して高速化することはできません。

+1

回答が多すぎるか、この回答の回答が長すぎる可能性があります。回答セットを絞り込むか、いくつかの段落で回答できる問題を特定するための詳細を追加してください。私は一般的な問題を解決するための開発フォーラム(おそらく[Quora](http://www.quora.com/Computer-Programming))を見つけることをお勧めします。次に、特定のコーディングの問題がある場合は、Stack Overflowに戻ってください。お手伝いします。 –

+0

私が言ったように私は私のケースではなく、コードスニペットやいくつかの低レベルの詳細では、データを操作することができます私は建築的アプローチが必要... – Alex

答えて

0

あなたはuserIdに一致するとViewedArticlesテーブルにarticleIdに一致していない選択だけで記事を、選択する必要があり

SELECT ... article data .. FROM Articles 
LEFT JOIN ViewedArticles USING (articleId) 
LEFT JOIN Users USING (userId) 
WHERE ViewedArticles.articleId IS NULL AND Users.userId = :id 

のようなものを作ることができます。

関連する問題