MongoDB设计方法以及技巧示例详解


本文整理自网络,侵删。

前言

MongoDB是一种流行的数据库,可以在不受任何表格schema模式的约束下工作。数据以类似JSON的格式存储,并且可以包含不同类型的数据结构。例如,在同一集合collection 中,我们可以拥有以下两个文档document:

{
  id: '4',
  name: 'Mark',
  age: '21',
  addresses : [
    { street: '123 Church St', city: 'Miami', cc: 'USA' },
    { street: '123 Mary Av', city: 'Los Angeles', cc: 'USA' }
  ]
}

{
  id: '15',
  name: 'Robin',
  department: 'New Business',
  example: 'robin@example.com'
}

为了能够充分利用MongoDB的优势,您必须了解并遵循一些基本的数据库设计原则。在讲解设计方法之前,我们必须首先了解MongoDB存储数据的结构。

一、 数据如何存储在MongoDB中

与传统的RDBMS关系型数据库不同,MongoDB并没有表Table,行row和列column的概念。它将数据存储在集合collections,文档documents和字段fields中。下图说明了与RDBMS类比的结构之间的关系:

二、数据库设计技巧和窍门

2.1.规范化存储与非规范化存储

因为MongoDB使用文档来存储数据,所以理解“规范化存储“”和“非规范化存储”的概念非常重要。

规范化存储:-规范化意味着将数据存储到多个集合collections中,并在它们之间设计关联关系。数据保存之后,更新数据比较容易。但是在读取数据的时候,规范化存储的缺点就显现出来。如果要从多个集合collections查找数据,则必须执行多个查询,从而使读取数据的速度变慢。 (比如:将网页标题、作者、内容分别存储到不同的collections中)

非规范化存储:-这种方式将若干对象数据,以嵌套的方式存储到单个文档中。它在读取数据的时候表现更好,但在写入时会变慢。这种存储数据的方式还将占用更多空间。 (比如:将网页标题、作者、内容分别存储到同一个collection中)

所以在两种存储数据方式之间进行选择之前,先评估一下你的应用数据库的使用方式。

如果您有一个不需要频繁更新的数据,更新的即时一致性不是很重要,但是在读取时需要良好的性能,那么非规范化可能是明智的选择。(比如:我们博客的博文,作者一旦保存之后,几乎就不在进行频繁的修改,但是面临着读者频繁的读取阅读操作)

如果数据库中的文档数据需要不断的更新,并且您希望在写入时具有良好的性能,那么您可能需要考虑规范化存储。(比如:需要频繁修改数据的业务类系统)

2.2. 一对多关系

与RDBMS相比,在MongoDB中对“一对多”关系建模需要进行更细粒度的设计。许多初学者陷入将文档数组嵌入父文档中的陷阱。正如我们在上文中介绍的,知道何时进行规范化存储或非规范化存储是非常重要的。因此设计者需要考虑关系的基数是“一个对少数几个”还是“一个对多个”?每种关系将具有不同的建模方法。

阅读剩余部分

相关阅读 >>

什么是mongodbmongodb简介

mongodb4.0在windows10下的安装与服务配置教程详解

详解mongodb中的日志模块

springboot系列之mongodbaggregations用法详解

mongodb与mysql之间的比较分析

mongodb最大连接数设置失效的异常分析过程与解决方法

mgo指定字符串长度查找数据的方法介绍(代码)

mongodb副本集和分片示例详解

mongodb bson的基本使用教程

mongodb教程之基本管理命令

更多相关阅读请进入《mongodb》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...