[NoSQL] 从模型关系看 Mongodb 的选择理由

往期: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

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章