设为首页 收藏本站
查看: 823|回复: 0

[经验分享] 如何设计MongoDB数据模型

[复制链接]

尚未签到

发表于 2018-10-27 06:21:29 | 显示全部楼层 |阅读模式
  有效的数据模型是为应用服务的,设计构架的关键问题是文档模型适合使用嵌入式模型(embed)还是使用引用模型(references)。
  嵌入式数据模型(Embedded Data Models)
  
  在MongoDB中,你可能将相关数据嵌入到一个单一结构或文档,这些模式通常被称为“非正规”模型,但是它充分利用了MongoDB富文档模型的有点。

  嵌入式数据模型允许应用程序存储相关的信息在一条数据库记录中,这样应用程序可能需要更少的查询和更新来完成常规的操作。
  一般来说,嵌入式数据模型适用于以下场景:
  (1)拥有包含实体之间的关系
  (2)实体之间拥有一对多的关系,在这些关系中,“many”或子文档总是出现在或人为是“one”或富文档的上下文。
  通常情况下,嵌入数据的方式在读操作上提供了更好的性能,能够在单次数据操作中请求和检索相关的数据。嵌入式数据模型使MongoDB能够在一次原子写操作中更新相关的数据。
  然后,嵌入相关的数据,可能导致文档创建后文档增长太大的问题。文档增长会影响数据的写性能并导致数据分片。而且,MongoDB中文档的大小必须小于BSON格式规定的文档最大容量(最大的BSON文档大小是16MB)。对于大部分二进制数据,需要参考GridFS。
  与嵌入式文档进行交互,使用“.”符号进入嵌入文档。
  规范化数据模型(Normalized Data Models,References)
  规范化数据模型描述了文档引用之间的关系。

  一般来说,规范化数据模型适用于以下场景:
  (1)当嵌入式数据模型会导致数据重复并且提供的读性能的优势不会重复的影响。
  (2)呈现许多复杂的多对多关系。
  (3)对大型分层数据集进行建模
  引用(References)模式比嵌入模式提供更好的灵活性,但是客户端应用程序必须解决引用的后续查询问题。换句话说,规范化数据模型需要更多轮的请求服务器。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-626884-1-1.html 上篇帖子: 简要介绍MongoDB的数据模型 下篇帖子: MongoDB的操作因素和数据模型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表