MongoDB数据建模

1.目标

在本章中,我们将学习MongoDB的数据建模,讨论MongoDB文档结构和MongoDB数据建模的一些注意事项。

—–have a picture here

MongoDB Data Modeling with Document Structure

2. MongoDB数据建模

MongoDB是面向文档的数据库或NoSQL数据库,是一个无结构模式的数据库,它具有灵活的模式。结构化数据库需要提前确定表的结构模式,MongoDB则不需要事先定义结构模式。

MongoDB数据库中含有集合,文档和字段,可以在同一个集合中包含不同字段或结构集的文档,另外,集合中的字段可以包含不同类型的数据。

MongoDB数据建模的关键是了解清楚应用程序的需求,在建模的时候可以有效地确保性能满足要求。在MongoDB数据建模时,注意以下事项:

根据应用程序需要设计模型;

查询的对象字段等信息,最好应包含在同一个文档中;

充分利用聚合;

3. MongoDB文档结构

可以通过两种方式在MongoDB中建立数据之间的关系:

Referenced Documents

Embedded Documents

1542260272145809.png

MongoDB Document Structure

Referenced Documents

引用(Reference)是通过包含从一个数据到另一个数据的链接来存储数据之间关系的方法。 在此方法中,一个集合的数据引用来自另一个集合的数据,应用程序解析这些引用以访问相关的数据, 该数据模型引用是标准化的数据模型。

引用关系建立的文档之间有一对多或多对多关系。

—–have a picture here too

MongoDB Document Structure – Reference Document

Embedded Documents

Embedded Documents被视为非标准化数据模型。 顾名思义,嵌入式文档是通过将相关数据存储在单个文档结构中来创建数据之间的关系。 该数据模型允许应用程序在单个数据库操作中检索和操作相关数据。

当嵌入式内容是文档的组成部分并且不经常更新时,应该考虑嵌入式文档, 嵌入式文档经常在实体之间存在包含关系时使用。

—–have a picture here

MongoDB Document Structure – Embedded Documents

4. MongoDB数据建模的注意事项

在设计MongoDB的数据模型时,可考虑以下几个方面,以便提高数据库的性能,并且建立可以扩展高效的数据库模型:

 Data Usage

在设计数据模型时,应该考虑应用程序如何访问数据库。如数据模型设计成什么样会高效,考虑读取,写入,更新和删除数据操作,有些应用程序是以读取为主的,有些是以写入为主的,有些数据可能会频繁使用,而某些数据完全是静态的,应该在设计数据模型时考虑这些因素。

Document growth

某些更新可能会增加文档的大小。在初始化期间,MongoDB分配固定的文档大小。在使用嵌入式文档时,须分析嵌入的对象是否大小超过其限制,当文档的大小超过其限制时,可能会出现性能下降等问题。如果文档大小超过该文档的分配的空间,MongoDB会将文档重新定位到磁盘上。

Atomicity(原子性)

与关系型数据库相比,原子性意味着数据库操作必须作为单个单元,要么失败要么成功。如果一个事务有许多子操作,即使单个子操作失败,那么该事务也会失败。 MongoDB中的操作发生在文档级别,写操作不会影响多个集合,即使写操作试图影响多个集合,每个写操作也将被视为单独的操作,单个写操作可以插入或更新数据在单个集合中。该特性有利于原子写操作。

MongoDB数据建模

发表评论

邮箱地址不会被公开。 必填项已用*标注

42 ÷ = 七

滚动到顶部