【问题标题】:Data modeling for nosql database for Social Networking site社交网站的 nosql 数据库的数据建模
【发布时间】:2013-05-14 23:19:23
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-17
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      • 2013-05-18
      • 2016-09-27
      • 2011-03-30
      • 2011-09-24
      相关资源
      最近更新 更多