[NoSQL] 从模型关系看 Mongodb 的选择理由
往期:Mongodb攻略
回顾 Mongodb 与关系型数据库的对应关系:
MySQL MongoDB
database(数据库) database(数据库)
table(表) collection(集合)
rows(记录) document(文档对象)
建模时的决定直接影响到应用程序的性能和数据的处理能力。
一般来说,下述情况建议使用内嵌数据:
数据对象之间有 “contains” (包含) 关系。 参见 一对一关系建模:内嵌文档模型。
数据对象之间有一对多的关系。 这些情况下 “多个”或者子文档会经常和父文档一起被显示和查看。请参见 一对多关系建模: 内嵌文档模型。
通常情况下,内嵌数据会对读操作有比较好的性能提高,也可以使应用程序在一个单个操作就可以完成对数据的读取。 同时,内嵌数据也对更新相关数据提供了一个原子性写操作。
当需要访问内嵌的数据时,你可以使用 dot notation 。 欲了解如何访问数组内数据或内嵌文档数据,参见 数组内数据查询 以及 内嵌文档数据查询 。
一般来说,在下述情况下可以使用规范化模型:
当内嵌数据会导致很多数据的重复,并且读性能的优势又不足于盖过数据重复的弊端时候。
需要表达比较复杂的多对多关系的时候。
大型多层次结构数据集。
关于引用的例子,参见 一对多关系建模: 文档引用模式 。关于使用引用的树结构模型的例子,参见 树结构建模。
小结:
你可以看出,Mongodb 的明显特色是内嵌、无Schema进行存储。那么在多对多关系场景下,SQL 支持原子操作、更适应查询,其它情况下可以考虑用 Mongodb 优化掉二次查询。
这是从模型关系来看 SQL 与 NoSQL 谁更适合,当然 Mongodb 自身其它特性一定更特近不同应用的场景。
Link:https://www.cnblogs.com/farwish/p/12131313.html
[NoSQL] 从模型关系看 Mongodb 的选择理由的更多相关文章
- NoSql非关系型数据库之MongoDB应用(二):安装MongoDB可视化工具
业精于勤,荒于嬉:行成于思,毁于随. 我们上次说到NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务 这次我们介绍安装 NoSQL Manager for MongoDB 可 ...
- Laravel 5.1 文档攻略 —— Eloquent:模型关系
简介 其实大家都知道,数据表之间都是可以关联的,前面讲过了,Eloquent ORM是数据模型操作代替表操作,那么表的关联查询,在Eloquent这里也就是模型间的关联查询,这就是本章的主要内容: E ...
- 转载 NoSQL | Redis、Memcache、MongoDB特点、区别以及应用场景
NoSQL | Redis.Memcache.MongoDB特点.区别以及应用场景 2017-12-12 康哥 码神联盟 本篇文章主要介绍Nosql的一些东西,以及Nosql中比较火的三个数据库Red ...
- NoSql非关系型数据库之MongoDB应用(三):MongoDB在项目中的初步应用
业精于勤,荒于嬉:行成于思,毁于随. 我们可以结合相关的IDE做一个简单的增删改查了,实现MongoDB在项目中的初步应用. 前提是安装了MongoDB服务和MongoDB可视化工具,没有安装的可以点 ...
- django 模型关系
模型关系 关系数据库的威力体现在表之间的相互关联,Django提供了三种最常见的数据库关系:多对一 (many-to-one),多对多(many-to-many),一对一(one-to-one) 多对 ...
- NoSQL发展简史、粗略分类及选择
这里对近来看的部分NoSQL资料做一个汇总记录,主要包括简史.粗略分类及数据库选择的考虑事项.NoSQL常见的解释是“non-relational”,有时也称作Not Only SQL. 1. ...
- [你必须知道的NOSQL系列]专题一:MongoDB快速入门
一.前言 现在越来越多的公司开始采用非关系数据库了,并且很多公司的面试都要求面试者有MongoDB的使用经验,至于非关系数据库与关系型数据库之间的区别大家可以自行百度.但是作为程序员的我们,既然大部分 ...
- NOSQL学习笔记系列之MongoDB 一 基础
主题:MongoDB 学习资料参考网址: 1.http://www.w3cschool.cc/mongodb/mongodb-tutorial.html 2.http://www.icoolxue.c ...
- App创业者必看:如何选择免费数据分析平台
笔者是一位移动互联网老兵,做过好几个App的开发运营工作,其中一些如今侥幸有了上亿用户.今天和大家聊一下App开发中,不能缺少的一个工具——数据分析系统 首先,App创业者为什么需要一个数据分析系 ...
随机推荐
- 2、asp.net core 部署到服务器之后外网访问不了
解决问题 把自定义端口的http://localhost:5001改成http://*:5001. 什么都没有改也不行的小伙伴试试在Program的Main方法中的.UseKestrel()后面添加. ...
- Android Xutils框架HttpUtil Get请求缓存问题
话说,今天和服务器开发人员小小的逗逼了一下,为啥呢? 话说今天有个"收藏产品"的请求接口,是get request的哦,我客户端写好接口后,点击"收藏按钮",返 ...
- H3C 路由器的作用
- H3C 广播风暴
- H3C 路由器单播IP包转发
- H3C PPP基本配置
- Git篇
安装之后第一步 安装 Git 之后,你要做的第一件事情就是去配置你的名字和邮箱,因为每一次提交都需要这些信息: git config --global user.name "bukas&qu ...
- 【codeforces 761D】Dasha and Very Difficult Problem
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- angular 点击事件阻止冒泡及默认行为
经常遇到场景:多层级元素绑定ng-click 事件,则底层元素的点击事件存在冒泡现象,怎么解决? 类似原生JS ,只是语法稍有不同,如下: 阻止冒泡 $event.stopPropagation() ...
- Python--day38--JoinableQueue解决生产者消费者模型
############################# # 在消费者这一端: #每次获取一个数据 #处理一个数据 #发送一个记号:标志一个数据被处理成功 #在生产者这一端: #每一次生成一个数据 ...