2010-05-03 56 views
2

我開始開發一個活動流。我讀過How to implement the activity stream in a social networkWhat’s the best manner of implementing a social activity stream?。我沒有找到的是爲活動添加評論的最佳方式。如在Facebook中,每個評論可以由另一個人評論。如何在活動流中進行評論? (如Facebook)

如果每個活動評論都保存爲另一個活動,那麼我將無法在不進行查詢的情況下獲得該評論的活動。所以我在考慮的解決方案是將註釋保存在每個活動的序列化數據字段中。如果用戶想要刪除他的評論,我將不得不更新該活動。

這是正確的解決方案嗎?有更好的方法嗎?

謝謝!

+0

不錯的問題@fesja。你最終做了什麼? – Luccas 2013-01-07 14:15:53

回答

0

這種類型取決於您使用的後端類型以及您的約束條件。

序列化評論似乎是一種合理的方法,或者我猜你可能只是簡單地使用多態評論表(如果您使用的是關係數據庫)。

1

我同意Jakub - 它取決於你的後端,但你所追求的是一種有效的方法來存儲一棵樹。如果您使用的是SQL數據庫,我會同時存儲父級活動和樹的根(主ID?)。這樣,如果有任何評論或活動ID,您就可以快速獲取整個評論樹。然後

您查找代碼會去是這樣的:

  • 要重現帶有註釋的整個活動流,與相同的主ID抓住所有記錄。您可能希望將主記錄表示爲具有空的父ID。
  • 添加註釋時,您需要更新兩個字段 - 主ID和父ID。您可以直接從父級活動中獲取這兩個數據,而無需執行任何查找。
  • 刪除評論時,只需刪除它,它就會從樹上消失。
  • 如果你只是想'主'活動,然後選擇parent = null,你就完成了。

一個例子,如果這能幫助:

  • 萬事達活性(ID = 123,P =無效,M = 123)
    • 評論(ID = 124,P = 123,米= 123)
    • 另一評論(ID = 125,p = 123,M = 123)
      • 一個子註釋(ID = 126,p = 125,M = 123)

看完記得使用帶有沙發-DB基於文檔的商店這樣的一個例子。我現在找不到它,但是從內存中它使用了類似的東西(母記錄的主ID)。

+0

感謝安東尼,這種方法的問題是,如果我想從用戶的最後活動(與評論)我抓住用戶(活動和評論)的最後30條記錄order_at: - 但是會有在30條內容中留言(所以不會有30條活動)。 - 或者可能有沒有父母活動的評論(因爲它已經被忽略了那30) – fesja 2010-05-13 08:46:55

+0

在你談論的情況下,你可能要麼爲每個活動抓住整個'樹'。你的30人中有一人是上面的id = 125,所以你抓住了所有四人)。你可以在一個查詢中做到這一點,但它可能會變得很大。您的其他選擇是按需獲取東西 - 例如。一個AJAX'閱讀更多...'鏈接或類似的東西。 你選擇的取決於你在做什麼。對於RSS活動提要,選項#2可能是最好的,但對於(例如)前檔案頁面,您更可能需要請求所有內容。 – 2010-05-14 01:17:30

相關問題