MongoDB数据建模小案例

[复制链接]
发表于 2025-12-11 14:42:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
MongoDB数据建模小案例

朋侪圈品评内容管理

需求

外交类的APP需求,一样寻常都会引入“朋侪圈”功能,这个产物特性有一个非常紧张的功能就是品评体系。

先整理下需求:


      
  • 这个APP盼望点赞和品评信息都要包罗头像信息:   
         
    • 点赞列表,点赞用户的昵称,头像;   
    • 品评列表,品评用户的昵称,头像;   


      
  • 数据查询则相对简单:   
         
    • 根据分享ID,批量的查询出10条分享里的全部品评内容;   

建模

欠好的计划

跟据上面的内容,先来一个非常非常"淳厚"的计划:

  1. {
  2.   "_id": 41,
  3.   "username": "小白",
  4.   "uid": "100000",
  5.   "headurl": "http://xxx.yyy.cnd.com/123456ABCDE",
  6.   "praise_list": [
  7.     "100010",
  8.     "100011",
  9.     "100012"
  10.   ],
  11.   "praise_ref_obj": {
  12.     "100010": {
  13.       "username": "小一",
  14.       "headurl": "http://xxx.yyy.cnd.com/8087041AAA",
  15.       "uid": "100010"
  16.     },
  17.     "100011": {
  18.       "username": "mayun",
  19.       "headurl": "http://xxx.yyy.cnd.com/8087041AAB",
  20.       "uid": "100011"
  21.     },
  22.     "100012": {
  23.       "username": "penglei",
  24.       "headurl": "http://xxx.yyy.cnd.com/809999041AAA",
  25.       "uid": "100012"
  26.     }
  27.   },
  28.   "comment_list": [
  29.     "100013",
  30.     "100014"
  31.   ],
  32.   "comment_ref_obj": {
  33.     "100013": {
  34.       "username": "小二",
  35.       "headurl": "http://xxx.yyy.cnd.com/80232041AAA",
  36.       "uid": "100013",
  37.       "msg": "good"
  38.     },
  39.     "100014": {
  40.       "username": "小三",
  41.       "headurl": "http://xxx.yyy.cnd.com/11117041AAB",
  42.       "uid": "100014",
  43.       "msg": "bad"
  44.     }
  45.   }
  46. }
复制代码
可以看到,comment_ref_obj与praise_ref_obj两个字段,有非常重的关系型数据库陈迹,推测,这个体系之前应该是放在了平常的关系型数据库上,大概计划者被关系型数据库的影响较深。而在MongoDB这种文档型数据库里,实际上是没有须要如许去计划,这种建模只造成了多于的数据冗余。

别的一个标题是,url占用了非常多的信息空间,这点在压测的时间会有表现,带宽会过早的成为瓶颈。同样username信息也是云云,此类信息相对来说是全局稳固的,根本不会做厘革。而且这类信息跟随品评一起在整个APP中流转,也无法处理惩罚”用户名修改“的需求。


回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表