往期:Mongodb攻略

回顾 Mongodb 与关系型数据库的对应关系:

  MySQL         MongoDB

  database(数据库)   database(数据库)

  table(表)       collection(集合)

  rows(记录)      document(文档对象)

建模时的决定直接影响到应用程序的性能和数据的处理能力。

内嵌式数据模型和规范化数据模型的选择

一般来说,下述情况建议使用内嵌数据:

通常情况下,内嵌数据会对读操作有比较好的性能提高,也可以使应用程序在一个单个操作就可以完成对数据的读取。 同时,内嵌数据也对更新相关数据提供了一个原子性写操作。

当需要访问内嵌的数据时,你可以使用 dot notation 。 欲了解如何访问数组内数据或内嵌文档数据,参见 数组内数据查询 以及 内嵌文档数据查询 。

一般来说,在下述情况下可以使用规范化模型:

  • 当内嵌数据会导致很多数据的重复,并且读性能的优势又不足于盖过数据重复的弊端时候。

  • 需要表达比较复杂的多对多关系的时候。

  • 大型多层次结构数据集。

关于引用的例子,参见 一对多关系建模: 文档引用模式 。关于使用引用的树结构模型的例子,参见 树结构建模

引用比内嵌要更加灵活一些。 但客户端应用必须使用二次查询来解析文档内包含的引用。换句话说,对同样的操作来说,规范化模式会导致更多的网络请求发送到数据库服务器端。 

经验:MongoDB数据库设计中6条重要的经验法则

小结:

你可以看出,Mongodb 的明显特色是内嵌、无Schema进行存储。那么在多对多关系场景下,SQL 支持原子操作、更适应查询,其它情况下可以考虑用 Mongodb 优化掉二次查询。

这是从模型关系来看 SQL 与 NoSQL 谁更适合,当然 Mongodb 自身其它特性一定更特近不同应用的场景。

EnDoc:https://docs.mongodb.com/manual/tutorial/model-referenced-one-to-many-relationships-between-documents/

CnDoc:http://www.mongoing.com/docs/tutorial/model-referenced-one-to-many-relationships-between-documents.html

Link:https://www.cnblogs.com/farwish/p/12131313.html

最新文章

  1. 网站中使用echart
  2. 简明Linux命令行笔记:mv
  3. 【BZOJ-3156】防御准备 DP + 斜率优化
  4. Java回调实现
  5. [转]Apache Maven 入门篇(下)
  6. Rsync原理介绍及配置应用
  7. zabbix邮件报警
  8. 我的IT相关网址收藏
  9. MySQL之学生名次问题
  10. 几款开源的图形界面库(GUI Libraries)
  11. 信号之sigsuspend函数
  12. RH133读书笔记(11)-Lab 11 System Rescue and Troubleshooting
  13. 【转】并行类加载——让tomcat玩转双十一 @双十一实战
  14. sqlalchemy的使用
  15. mysql Access denied for user root @localhost (using password:YES)错误
  16. jsp页面<%@ page报错问题
  17. http 动态路由
  18. ROS知识(24)——ros::spin()和spinOnce的含义及其区别
  19. Cloudstack介绍(一)
  20. 《转》python学习(4)对象

热门文章

  1. [ZJOI2007] 小Q的矩阵游戏 (模板—Dinic)
  2. spark sql thrift server
  3. JSX语法及特点介绍
  4. TP5 在模板读出Session值
  5. CSS中常用的简写模式
  6. 2018-8-10-win10-uwp-使用-Geometry-resources-在-xaml
  7. C# 使用转换语义版本号
  8. P1017 聪聪排数字
  9. Jmeter完整Demo
  10. 原 Linux:ping不通baidu.com