[英]Efficient way to implement LinkedIn like “How you are connected to” feature?
LinkedIn有這個很酷的功能,在訪問某些用戶的個人資料時,LinkedIn會提示你如何通過網絡連接到該用戶。
假設訪問者和配置文件所有者是圖的兩個節點,其中節點表示用戶,邊表示友誼,一個簡單的解決方案可以是從兩個節點開始直到某個級別的bfs並查看是否存在任何交叉點。 交叉點將是網絡鏈路節點。
雖然這聽起來很整潔,但問題在於,為了確定每個人的朋友,需要單獨的數據庫查詢。 當網絡深度超過2級時,算法將是非常耗時的。 有更好的有效替代方案嗎? 如果沒有,我們如何才能增加更好的硬件支持(並行計算,網格,分布式數據庫等)以減少計算所需的時間?
如果沒有某種遞歸存儲過程(SQL Server 2005+中的CTE),隨着關卡的深入,你需要多次往返。 但是,良好的緩存基礎結構可以真正幫助提高性能,因為最熱門/活躍用戶的連接列表將保持緩存狀態。 讀/寫緩存機制會使事情變得更好(緩存更新級聯到db更新,緩存讀取級聯到db讀取)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.