2016-04-15 86 views
3

我做了一個小型社交網絡,作爲學校的一部分。我們的下一個任務是在將使用非關係數據庫的項目中實現一個功能。我們被建議去Redis或ElasticSearch。朋友的朋友使用案例 - Redis vs圖表數據庫

這我很清楚,我可以使用ElasticSearch,以查找他們的名字等

人羣組,但此刻我更感興趣的是一個潛在的朋友查找這表明基於朋友兩個用戶的共同朋友,也許他們是他們的一部分。

我的問題是:這是Redis的一個很好的用例嗎?還是使用Graph數據庫來處理這樣的事情會好很多?

這是我想象的那樣:

  • 我有一組註冊用戶稱爲「用戶」內部存儲的Redis

  • 對於每一個用戶我有一組這使他們的朋友軌道例如 「用戶:1:朋友」

  • 我也有一個爲每個用戶儲存的潛在朋友的排序集,例如
    「user:1:potential」

讓我們說一個用戶,我不是朋友,會將我的一個朋友添加到他們的朋友列表中。當發生這種情況時,我會帶走我的朋友的所有朋友,並檢查我的朋友新朋友是否是每個集合的一部分。如果不是的話,那麼我會增加分配給他的身份證的分數給我的朋友朋友的潛在朋友,他們不是新朋友的朋友。

總而言之,這在我看來很像很多工作,這就是爲什麼我不確定這是否是一個好主意。 所以再說一次 - 圖形數據庫會比這更好嗎?

回答

1

考慮到你有什麼可以實現的(包括設置no sql db),我肯定會使用graphDBs。 朋友的朋友(和更一般的建議)是這種類型的數據庫的基本用例。這是他們展示了他們的全部潛力。 我建議你看看Neo4J:http://neo4j.com 而他們的社交網絡用例:http://neo4j.com/use-cases/social-network/