設計一個線程評論系統的最佳方式是什麼?設計一個線程評論系統
回答
我在這種情況下通常會做的是讓一個線程負責將數據放入數據庫,並讓所有輔助線程向該線程報告,然後將該數據排隊,然後將其寫入串行,或分批(取決於需求,以及我願意忍受多少數據庫活動)。
我猜你的問題是關於安排系統,讓您不必上班:
- 選擇所有的頂級評論
- 選擇他們的父母在步驟發現所有評論之前
- 選擇他們的父母在之前
- 步驟發現所有評論...重複,直到沒有評論發現
我會建議使用一個線程鍵設計數據庫表,這將是該職位的所有父母的字符串。你必須限制你的討論到一定的深度,但是你的sql語句應該是直接選擇和按線程鍵排序,給你回線程註釋。對您的數據庫和Web服務器徵稅較少。
一個線程鍵會像它的當前職位ID加入到它的父母的線程鍵與分隔符。
這聽起來怎麼樣?
我猜你有類似「評論」表的東西,有一個外鍵自己,指向每行的父註釋。這使得線程註釋成爲以線程啓動器作爲樹根的樹結構。
所以我們可以將這個問題改爲「從數據庫中選擇樹結構的最佳方法是什麼?」。那麼我不會假設知道最好的方式,但是我的第一個傾向(可能是錯誤的)是使用存儲過程來遍歷樹,並編譯要返回的行列表。它仍然需要多個選擇語句來獲取所有的孩子,但它只是一次數據庫往返。
Aryeh的方法與積累父列表可能是更好:)
這個網站列出了一些常見的技術: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
我會做「嵌套組」的模式,但有多個根(如每個「主題」是一棵新樹)。它的速度非常快,簡單的查詢,但複雜的維護......
SELECT ... START WITH ... CONNECT BY
Oracle有一個擴展選擇,允許輕鬆基於樹的檢索。
這個查詢將穿越其中的嵌套關系存儲在父和孩子列的表。
select * from my_table
start with parent = :TOP_ARTICLE
connect by prior child = parent;
Modified pre-order tree traversal(或什麼馬特提到的 「嵌套組」)是要走的路。
如果你碰巧在Django工作,那麼有一個第三方應用django-mptt,這使得在你的模型中實現MPTT是一個單線程。
我不得不第二次卡爾邁爾的建議,使用link text技術。我現在正在研究這樣一個系統,但是對於論壇還有一些進一步的優化。
在支持回覆的論壇系統中,您經常會插入樹中間,從而導致性能下降。爲了減少我正在努力讓數字線上的空白的痛苦。這工作就像在數組列表中預先分配內存。向右移動樹的成本對於1和100是相同的。因此,在連續回覆(更有可能)時,我可以更新更少的樹節點,並且它們將更快。
縮小規模是通過比較當前節點的左右值來中斷後代節點的計數(本帖下面的回覆數)。這些信息可以緩存在數據結構中以實現快速。所以在插入時,我將不得不用新計數來更新所有的祖先節點。更少的節點將被更新,結果將會大大加快平均情況下的插入時間。
多棵樹被存儲在同一個表中。每棵樹都有一個唯一的樹ID,每個主題一個。更小的樹更新更快。
希望幫助
- 1. 爲iOS設計一個線程評論系統
- 2. MySql數據庫設計評論系統
- 3. 評論系統數據庫設計
- 4. 製作一個網站評論系統
- 5. 一個安全的php評論系統
- 6. 在評論系統
- 7. Hierarchal評論系統
- 8. 評論系統php
- 9. XSLT評論系統
- 10. Yii評論系統
- 11. Disqus評論系統
- 12. php我有一個評論系統移動評論更接近
- 13. 如何創建一個評論系統像計算器
- 14. 如何使用評論框評論框使用評論系統
- 15. CakePHP博客教程的評論系統
- 16. 如何使用實體框架設計評論系統?
- 17. 評論系統設計中的JavaScript問題
- 18. 回覆評論系統
- 19. 多發表評論系統
- 20. 嵌套評論系統sql
- 21. Codeigniter評論回覆系統
- 22. 開源評論系統
- 23. Ajax/jQuery評論系統
- 24. PhP SQL評論系統
- 25. 評論系統rdbms vs nosql
- 26. 評論系統的結構
- 27. PHP和HTML評論系統
- 28. 評論系統 - 級聯
- 29. php + mysql評論系統
- 30. 第三方評論系統