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图形数据库。它们专门为这些网络使用案例而设计,并且可以轻松地返回朋友的朋友,或者找到朋友的通知,或排列朋友和朋友的推荐等。