2011-06-20 54 views
1

我的網絡應用程序提供個性化的建議。當一個用戶開始使用它時,大約1000多行被插入到一個大的推薦表中,與數據庫中的其他表相關聯。用戶投票的每個項目都會影響所有這1000多行。永久表,臨時表或php會話?

由於推薦信息僅在會話期間有用,並且由於推薦表越來越大,我們希望切換到更合適的方法。一旦用戶會話結束,就有可能刪除相關的行。我猜PHP會話數組或臨時表更適合這種情況?

回答

0

首先:考慮重新設計你的數據結構,我認爲這不是最優的。 將用戶的建議存儲在表中user-recommendeditem-score:我看不到任何需要臨時表或其他任何東西。 否則,您可以開始使用會話,但應仔細封裝代碼,以便在此解決方案無法維護時更易於更改。

1

每個會話一個臨時表會導致目錄污染,所以不推薦。

您是否考慮實際保留數據,以便定期挖掘它以改進建議?

+0

難道它不會導致一個巨大而緩慢的桌子?使用過該網站的每個用戶的行數是1000行?我確實保存了用戶的實際選擇。 – Roy

+0

我也想知道什麼是性能最好的方法。是一個大桌子要走的路? – Roy

+1

嗯,這取決於您要確定要保留哪些數據以及如何最好地存儲它......說實話,每個會話有1k +寫入聽起來有點瘋狂。所以會話似乎是正確的,只是爲了避免重新查詢每個頁面視圖上的數據。 :-)然而,在那裏你可能想要存儲一些感興趣的東西(可能是以某種聚合的格式)。 –

0

我懷疑該方法存在缺陷 - 每個用戶有超過1000條建議?他們有多少人曾經在看過?如果你不知道這個問題的答案 - 那麼你需要花一些時間思考爲什麼你不知道答案。

每個項目的用戶票將影響所有這些1000+行

的你確定你的數據是正確的標準化?

但是暫且不談。生成/存儲在數據庫中的正確位置 - 關係數據庫是明確設計的,而且更有效地生成和維護表格數據集,然後是傳統的編程語言。

+0

事情是,如果你想從所有可能的項目中得到最好的建議,你必須根據用戶的選擇對所有項目進行評分,並選擇最佳項目 – Roy