0

我正在開發一個社交網站。現在我正在使用mysql進行數據存儲。 現在,我必須移動nosql數據庫(我更喜歡ElasticCache或DynamoDb(亞馬遜服務))。但我對數據建模感到困惑。在MySQL中,我有以下數據結構。社交網站nosql數據庫的數據建模

***UserMst:*** 
UserID 
UserName 
UserEMail 
BirthDate 
..... 

***FriendMst*** 

FriendID (Pk)  
UserID  (UserID) 
HisFriendID (User's friend id) 
Status   

***Notification table*** 

NotifyID (Pk) 
UserID  (UserID) 
HisFriendID (User's friend id) 
NotifyDate (Notify date) 

如何爲nosql數據庫建模?有人能幫助我嗎?

回答

1

NOSQL是不同數據平臺的集合,因此它取決於您選擇哪個。您已經指定了支持Memcached和Redis的DynamoDb和ElasticCache。您基本上正在處理鍵值存儲,並且一種方式可以通過鍵值存儲來支持您的用例:

1)具有類似於用戶ID和組的用戶的文檔結構這些字段在文檔之間大致相似:用戶名,電子郵件等。這將是DynamoDb中的表格,MongoDB中的文檔或Cassandra中的靜態列族。

2)你FriendMst將被保存爲一個用戶名鍵和FriendUserID和地位項目的數組。對於像MongoDB這樣的文檔數據庫,這可以嵌入到用戶文檔中或存儲在相關文檔中。在卡桑德拉,這可能是一個動態的專欄家庭。類似的東西可能適用於通知,取決於您的查詢用例。

說了這麼多,可能是考慮好樣的Neo4j圖形數據庫。它們專門爲這些網絡使用案例而設計,並且可以輕鬆地返回朋友的朋友,或者找到朋友的通知,或排列朋友和朋友的推薦等。