全球最具影响力的数据科学技术社区,助你轻松玩转大数据&数据科学

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
开启左侧

[MongoDB] MongoDB数据模型设计

[复制链接]
发表于 2019-9-24 10:57:34 | 显示全部楼层 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

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

x
MongoDB的数据模式是一种灵活模式,其集合并不限制文档结构。这种灵活性让对象和数据库文档之间的映射变得很容易,即使数据记录之间有很大的变化,每个文档也可以很好的映射到各条不同的记录。但在实际使用中,同一个集合中的文档往往都有一个比较类似的结构。
  描述文档结构的方式主要有两种:引用及内嵌。
内嵌
  内嵌的方式指的是把相关联的数据保存在同一个文档结构之中。MongoDB的文档结构允许一个字段或者一个数组内的值作为一个嵌套的文档。如果使用内嵌文档模型,应用程序只需查询一次就可以获得所有需要的信息。
[AppleScript] 纯文本查看 复制代码
{
    _id:ObjectId("cccc"),
    name:"wddpct",
    age:22,
    location:"wenzhou",
    addresses:[
        {country:"china",city:"wenzhou",street:"chashan road"}
        {country:"china",city:"wenzhou",street:"north center road"}
    ]
}

一般来说,下述情况建议使用内嵌数据:
  1. 数据对象之间有包含关系。
  2. 数据对象之间有一对多的关系。
引用
  引用方式通过存储链接或者引用信息来实现两个不同文档之间的关联。应用程序可以通过解析这些数据库引用来访问相关数据。类似关系型数据库的关联查询。
[AppleScript] 纯文本查看 复制代码
{
    _id:ObjectId("cccc"),
    name:"middle1",
    location:"wenzhou",
    students:[
        ObjectId("xxxx"),
        ObjectId("yyyy"),
        ……
    ]
}
一般来说,下述情况下适合使用引用方式:
  1. 当内嵌数据会导致很多数据的重复,并且读性能的优势又不足于覆盖数据重复的弊端
  2. 需要表达比较复杂的多对多关系的时候
  3. 大型层次结果数据集
通用建议
以下给出一张较通用的建议表,仅供参考
内嵌
引用
子文档较小
子文档较大
数据不会定期更改
数据经常改变
最终数据一致即可
中间阶段数据也必须一致
文档数据小额增加
文档数据大幅增加
数据通常需要执行二次查询
数据通常不包含在查询结果中
快速读取
快速写入


来源:https://www.cnblogs.com/leanfish/p/8795765.html
楼主热帖
168大数据(www.bi168.cn)是国内首家系统性关注大数据科学与人工智能的社区媒体!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2020-9-23 21:28 , Processed in 0.117067 second(s), 19 queries , Xcache On.

Powered by BI168社区

© 2012-2014 海鸥科技

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