0

我正在开发一个社交网站。现在我正在使用 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 数据库建模?有人可以帮助我吗?

4

1 回答 1

1

NOSQL 是不同数据平台的集合,因此取决于您选择哪个。您已指定支持 Memcached 和 Redis 的 DynamoDb 和 ElasticCache。您本质上是在处理键值存储,使用键值存储支持您的用例的一种方法是:

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

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

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

于 2014-03-30T23:55:58.420 回答