社交网站的nosql数据库的数据建模

时间:2013-05-20 11:47:50

标签: database-design amazon-dynamodb datamodel data-modeling amazon-elasticache

我正在开发一个社交网站。现在我正在使用mysql进行数据存储。 现在我必须继续使用nosql数据库(我更喜欢ElasticCache或DynamoDb(亚马逊服务))。但我对数据建模感到困惑。在mysql中我有以下数据结构。

***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 个答案:

答案 0 :(得分:1)

NOSQL是不同数据平台的集合,因此取决于您选择的内容。您已指定DynamoDb,以及支持Memcached和Redis的ElasticCache。您实际上是在处理键值存储,并且使用键值存储支持您的用例的一种方法是:

1)为用户提供类似文档的结构,类似于UserID键和文档之间大致相似的一组字段:用户名,电子邮件等。这将是DynamoDb中的一个表,MongoDB中的文档,或Cassandra中的静态列族。

2)您的FriendMst将被保存为UserID键和具有FriendUserID和状态的项目数组。使用像MongoDB这样的文档数据库,可以将其嵌入到用户文档中或存储在相关文档中。在Cassandra,这可能是一个动态的列族。类似的东西可能适用于通知,取决于您的查询用例。

说了这么多,考虑像Neo4J这样的图形数据库可能会很好。它们专为这些网络用例而设计,可以轻松回复朋友的朋友,或者通过朋友查找通知,或者对朋友及其朋友的推荐进行排名等。