域名

MongoDB之数据建模

时间:2010-12-5 17:23:32  作者:应用开发   来源:人工智能  查看:  评论:0
内容摘要:一对一的关系:Embed,比如用户信息集合有Address字段,Address字段有省、市、县三个字段。建模如下:一对多关系:一篇文章有多条评论,为1对多关系由于MongoDB对单个文档(docume

 一对一的数据关系:Embed,比如用户信息集合有Address字段,建模Address字段有省、数据市、建模县三个字段。数据建模如下:

一对多关系:一篇文章有多条评论,建模为1对多关系

由于MongoDB对单个文档(document)有大小限制16M(高于v1.8),数据设计时也要将这个限制纳入考虑中。建模

多对多关系:学生和课程是数据多对多的关系,一个学生可以选多门课程,建模一门课程有多名学生参与。数据

多对多使用了连接(Linking),建模连接是数据通过引用(References)来连接两个集合。MongoDB References有两种:一种是建模 手动引用(Manual References),另一种是数据DBRefs。

Manual References:

(user集合)

(post集合)

红框地方就是Manual References,服务器托管如果想查询一篇文章的作者信息,首先在post集合找出那篇文章,然后在user集合查找出用户的全部信息。但是假如有这么一个场景:用户可以对图片,文章等各种资源评论,所有的评论都放在comment集合中,如果只是使用Manual References,就分不清楚评论到底是属于哪类资源了,图片?文章?。所以有了DBRef。

DBRef的形式:

{ $ref : <value>, $id : <value>, $db : <value> }

$ref:集合名称;$id:引用的id;$db:数据库名称,可选参数。

可以看到DBRef的结构比Manual References的网站模板复杂,占用的空间大,但是功能也强大,如果要跨数据库连接,上面讲的评论集合的例子,都得需要使用DBRef,MongoDB提供了函数来解析DBRef,不用像Manual References需要自己手动写两次查询。

关于MongoDB的数据建模MongoDB官网也给出了一些建议。这些建议都是提供了一些参考,实际建模需要根据具体的需求来分析,分析数据经常会执行哪些操作(排序,查找,修改)来选择Embed和Link。

原文链接:http://www.cnblogs.com/alab/archive/2012/07/25/2608905.html

【编辑推荐】

MongoDB 2.0 正式版发布 MongoDB 2.0新功能逐个看之Compact Command 主流NoSQL数据库全方位评测之MongoDB 教你如何利用MySQL学习MongoDB 在Windows环境下MongoDB搭建和简单操作亿华云计算
copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap