我有一個相當複雜的社區網站(在php/mysql中)有一些「東西」,註冊用戶可以「觀看」。如何創建「Watch」系統?尋找最佳實踐
「東西」是:帖子,評論,事件更新,用戶狀態的變化等的「事情」至少有10種不同類型供選擇,用戶可以觀看其他用戶的「東西」(認爲Facebook)
「觀看」表示:用戶可以觀看任何「事物」,並查看所有類型的「事物」中每個「事物」的所有更新/添加的提要。
我建立了一個類似的應用程序少得多的「東西」,可以觀看和我的設置基本上是這樣的:
「手錶」表中的字段:ID,用戶id,的itemId [ID在國外表] ,itemClass [外部表的引用ID]
用戶可以添加'手錶',在'手錶'表中創建一條記錄,然後我們將查詢該表(並緩存),以便他們瀏覽我們可以注意到(在用戶界面上)他們是否已經在觀看特定的物品,他們可以查看並管理他們正在觀看的系統中的所有物品。很簡單。所以,(在這個冗長的介紹之後),我們正在構建的這個社區網站將需要更大幅度地擴展。成千上萬的用戶將會觀看數百件「事物」,我們不僅需要輪詢「手錶」表本身,還要查詢每個外表的聯接表以獲取詳細信息以填充每個用戶的觀看饋送。
如果您對我的意思感到困惑,請考慮您在Facebook主頁上提供的Facebook好友Feed。如何在沒有運行大量查詢的情況下進行更新?
我一直就同一問題進行至少6個月,我已經找到一個「好」的解決方案尚未 – JasonDavis
更好地描述什麼可以觀看沒有取得進展。你說「事情」:帖子,評論等。有人觀看所有帖子,或只有某些帖子,所有評論或只有某些評論。如何儲存此腕錶信息至關重要,但我需要在提出建議之前更好地理解它。 –
@KM - 好問題。以下是簡單的細分(我希望):如果您觀看用戶,您會收到所有帖子,評論,圖片,狀態更改以及該用戶狀態更改的評論的通知。如果您觀看帖子或圖片,您會收到有關該帖子或圖片的所有評論的通知。如果您觀看新聞話題,您會收到該新聞話題中所有帖子的通知(不是評論)。 – phirschybar