2016-11-25 32 views
0

我建立,其中每個用戶具有3個不同的簡檔的社交網絡 - 簡介1,資料2和Profile 3.我應該在以下用例中使用Redis還是Neo4J?

這是我的用例:

用戶A如下用戶B,C和d在資料1.用戶A如下用戶C,F和G在資料2用戶C如下用戶A和E在輪廓3.

另一個問題是,在每個這些配置文件的任何用戶需要看到的最新或(比方說在他們各自的配置文件(無論是配置文件1,2或3)上,他們正在跟蹤的用戶的前N個)帖子。

我們如何才能最好地存儲上述信息?

語境: 我c。使用Django框架和一個Postgres數據庫來存儲用戶的個人信息。用戶的帖子正在存儲在雲CDN上並從中檢索。

哪種方法可以實現這些用例,即選擇最適合此方案的技術?可伸縮性是這裏發揮作用的另一個重要因素。

回答

0

Neo4J是一個圖形數據庫,適用於多跳關聯搜索。假設你想獲得A的兄弟的朋友的妹妹的前N個職位... AFAIK,這是一個獨立的實例,你不能在多個節點上分割你的數據。否則,兩個人之間的關係可能會跨越機器。

Redis是一個鍵值存儲,適合按鍵搜索。假設你想獲得A的朋友列表,或者獲得A的前N列表。你可以讓Redis集羣在多臺機器上分發你的數據。

哪個更好?這取決於你的情況。看起來你不需要多跳關聯搜索。所以Redis可能會更好。

你可以有一個SET來保存每個人的朋友列表。並有一個LIST來保存每個人的職位ID。當您需要用戶A的展示帖子時,請致電SMEMBERSSSCAN以獲取好友列表,然後撥打LRANGE爲每個好友獲取最佳N帖子ID。

相關問題