Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >大数据开发-MongoDB 数据模型介绍

大数据开发-MongoDB 数据模型介绍

作者头像
成都加米谷大数据
修改于 2021-05-12 10:16:06
修改于 2021-05-12 10:16:06
1.2K0
举报
文章被收录于专栏:大数据开发大数据开发

本期给大家带来的是MongoDB的数据模型介绍,废话不多说,我们直接开始本期的大数据开发知识学习。

在MongoDB的数据有灵活的模式。不像SQL数据库,(SQL数据库)要求你必须在插入数据之前决定和声明一个表的模式,MongoDB的集合不强制文档的结构。这个灵活性有利于文档到实体或对象的映射。每个文档可以匹配所要表示实体的数据字段,即使数据的变化很显著。但在实际操作中,一个集合的文档共享一个相似的结构。

数据模型的关键挑战在于平衡应用的需要,数据库引擎的性能和数据存取模式。当设计数据模型时,要考虑数据在应用里的使用情况(如,查询、更新和处理数据),以及数据本身的内在结构。

文档结构

在为MongoDB应用设计数据模型时的关键是围绕文档的结构和应用时如何表示数据间的联系。有两个工具来允许应用来表示这些关系:引用和嵌入文档( references and embedded documents)。

引用

引用通过包括连接或一个文档到另一个文档间的引用存储着数据间的关系。应用能够解析这些引用来访问到相关数据。广义上说,这些都是归一化的数据模型(normalized data models).

上图的数据模型使用引用来联系文档。contract文档和access文档都保护着user文档的引用。

下面介绍归一化数据模型在使用引用的优缺点:

归一化模型使用引用描述文档间的关系。一般地,使用归一化模型的情况有,

1.当嵌入会导致数据重复且不会提供有效的读性能。

2.表示更复杂的多对多的关系

3.对大型分级数据建模

引用比嵌入式文档的灵活性更大,但客户端应用必须处理引用带来的查询问题。

嵌入数据

嵌入式文档通过在一个单一文档结构里存储相关数据来捕获数据间的关系。MongoDB的文档使在一个文档里的一个字段或字段数据嵌入一个文档作为子文档具体可能性。这些非规范化数据使得应用可以在一个单一数据库操作力获取和操纵数据。

上图的数据模型就是嵌入式字段保护所有的相关信息。

下面讨论嵌入子文档的数据模型的优缺点:

1.使用MongoDB,你可以在一个单一结构或文档嵌入相关数据。这个模型是著名的“非规范化”模型,利用了MongoDB丰富文档的优势。

2.嵌入数据模型允许应用在相同的数据库记录里存储相关片段信息。因此,应用在完成一个常规操作时,只需处理很少的查询或更新。

一般,当下面情形时可使用嵌入数据模型:

1.实体间有“包含关系”.

2.实体间有一对多的关系。在这些关系里,“多“或子文档经常被看做"一"或父文档的上下文里.

一般来说,嵌入提供了更好的读性能,以及在单一数据库操作里请求和获取相关数据的能力。嵌入数据模型使得在哪一个原子操作里更新相关数据成为可能。

然而,在一个文档的嵌入数据模型可能导致文档创建后的增长。文档的增长会影响写性能并导致数据碎片问题。并且,在MongoDB里的文档大小必须小于最大的BSON文档大小。对大型二进制数据,考虑GridFS。

写操作的原子性

在MongoDB,写操作在文档这一级是原子的,并且没有单一的写操作能原子性的影响多个文档或集合。一个有嵌入数据的非规范化数据模型在一个单一文档里包含了能表示一个实体的相关数据。这有利于写操作的原子性,因为单一的写操作能直接对一个实体插入或更新数据。规范化数据会在多个集合里分散了数据,这会要求多次写操作,因此不是原子性的。

然而,有利于原子性写的模式会限制一个应用使用数据的方法或修改数据的方法。因此需要平衡原子性和平衡性。

文档增长

有的更新,比如向数组添加元素或添加新的字段,会增大文档的大小。如果文档的大小超过了给该文档分配的空间,MongoDB会重新定位这个文档。文档的增长会影响规范化和非规范化数据的选择。

数据使用和性能

当设计一个文档模型,要考虑应用将如何使用你的数据库。比如,如果你的应用仅使用最近插入的数据,考虑使用 Capped Collections.或者,你的应用需要总是读操作,添加索引是常见的提升性能的办法。

以上就是本期大数据开发学习的所有内容了,明天将会继续带来MongoDB的学习。

希望大家点个关注,及时收取最新文章推送,想了解更多敬请咨询加米谷大数据。

有问题的欢迎在评论区留言,如有侵权请告知。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
大数据开发-什么是MongoDB?优缺点是哪些?
大家在大数据开发的学习中,肯定会遇到各种各样的数据库,比如MySQL,但是它是全能的吗?当然不是。所以才会出现各种各样的数据库,以适用于不同的场景,今天介绍的MongoDB就是如此。
成都加米谷大数据
2021/05/11
2.3K1
大数据开发-什么是MongoDB?优缺点是哪些?
MongoDB的引用式数据模型
MongoDB的引用式数据模型是一种将数据拆分为多个文档的方法,用于管理大量数据或需要频繁更新的数据。引用式数据模型使用一个文档来引用另一个文档,而不是将所有数据存储在单个文档中。
堕落飞鸟
2023/05/09
1.1K0
大数据开发-HBase关系对比
今天给大家带来的是大数据开发-HBase关系对比,相信大家也都发现了,有很多框架的用处都差不多,为什么只用这个而不用那个呢?这就是两者之间的一些不同之处的对比,然后选择一个最适用的,本期就是关系对比,为什么它最适用!
成都加米谷大数据
2021/04/29
7530
大数据开发-HBase关系对比
MongoDB 存储引擎和数据模型设计
标签: MongoDB NoSQL 1. 存储引擎 1.1 存储引擎是什么 存储引擎是位于持久化数据(通常是放在磁盘或者内存中)和数据库之间的一个操作接口,它负责数据的存储和读取方式。MongoDB数据库通过存储引擎在磁盘中读取数据,而假设我们的应用是ASP.NET MVC,我们可以使用官方的Mongo.Driver驱动,通过通信协议(如TCP)向MongoDB数据库发送各种请求。以下是一个简单的运行图示 1.2 MongoDB中的默认存储引擎 自MongoDB 3.2 Release版本起,MongoDB
潘成涛
2018/01/18
1.7K0
什么是大数据开发?看完我终于懂了......
从大数据开发的工作内容来看大数据开发主要负责大数据的大数据挖掘,数据清洗的发展,数据建模工作。
成都加米谷大数据
2021/04/02
13.5K0
什么是大数据开发?看完我终于懂了......
MongoDB的数据模型(一)
MongoDB是一种流行的NoSQL数据库,它以其灵活性和可扩展性而闻名。MongoDB的数据模型是基于文档的,这意味着数据被组织成文档,而不是传统的表格。
堕落飞鸟
2023/05/09
2960
MongoDB的数据关系建模
MongoDB是一种面向文档的数据库,因此在进行数据建模时,其与传统的关系型数据库有所不同。MongoDB支持多种数据关系建模方法,包括嵌入式数据模型和引用式数据模型。
堕落飞鸟
2023/05/09
7060
什么是MongoDB?简介、架构、功能和示例
什么是MongoDB?MongoDB是一个面向文档的NoSQL数据库,用于大容量数据存储。MongoDB是2000年代中期出现的一个数据库,属于NoSQL数据库。
MongoDB中文社区
2019/06/21
4.2K0
MongoDB的嵌入式数据模型
在MongoDB中,文档可以包含其他文档作为其字段。这些嵌套的文档称为嵌入式文档。嵌入式文档的设计是MongoDB嵌入式数据模型的核心,因为它决定了如何组织和存储数据。
堕落飞鸟
2023/05/09
1.1K0
MongoDB Schema 设计
MongoDB不需要像关系型数据库一样提前设计表结构,但是仍然需要处理业务间的关系,甚至因为灵活性,其中一对多One-to-N需要格外注意。
小刀c
2022/09/21
1.5K0
阿里大数据之路:数据模型篇大总结
核心:从业务架构设计(如何快速上手工作)到模型设计,从数据研发到数据服务,做到数据可管理、可追溯、可规避重复建设。
王知无-import_bigdata
2022/11/11
2.2K0
阿里大数据之路:数据模型篇大总结
性能最佳实践:MongoDB数据建模和内存大小调整
我们将讨论在大规模数据下实现高性能,需要在许多重要维度上进行考虑的关键因素,其中包括:
MongoDB中文社区
2020/07/22
3.3K0
性能最佳实践:MongoDB数据建模和内存大小调整
大数据开发:数据仓库建模方法与模型
大数据平台当中的数据仓库,往往需要通过建模来更好地对数据进行存储和管理,这其中涉及到性能、成本、效率、质量等多方面的综合考量,对于工程师来说,也需要细细规划。今天的大数据开发分享,我们主要来讲讲数据仓库建模方法与模型。
成都加米谷大数据
2021/01/26
1.1K0
大数据开发:数据仓库建模方法与模型
大数据开发:数仓建模常见数据模型
在数据仓库搭建的过程当中,根据需求合理地选择数据模型,是非常关键的一个环节。对于数仓建模,很多人说不就是建表吗,哪有那么复杂,事实上,这是非常错误的思想。今天的大数据开发分享,我们来聊聊数仓建模常见的几种数据模型。
成都加米谷大数据
2021/01/27
4K0
大数据开发:数仓建模常见数据模型
MongoDB系列二(介绍).
一、特点     学习一个东西,至少首先得知道它能做什么?适合做什么?有什么优缺点吧?     传统关系型数据库,遵循三大范式。即原子性、唯一性、每列与主键直接关联性。但是后来人们慢慢发现,不要把这些数据分散到多个表、节点或实体中,将这些信息收集到一个非规范化(也就是文档)的结构中会更有意义。尽管两个或两个以上的文档有可能会彼此产生关联,但是通常来讲,文档是独立的实体。能够按照这种方式优化并处理文档的数据库,我们称之为文档数据库。     设计MongoDB的初衷就是用作分布式数据库。    MongoDB
JMCui
2018/04/04
1.8K0
MongoDB【快速入门】
MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。作为一个适用于敏捷开发的数据库,MongoDB 的数据模式可以随着应用程序的发展而灵活地更新。与此同时,它也为开发人员 提供了传统数据库的功能:二级索引,完整的查询系统以及严格一致性等等。 MongoDB 能够使企业更加具有敏捷性和可扩展性,各种规模的企业都可以通过使用 MongoDB 来创建新的应用,提高与客户之间的工作效率,加快产品上市时间,以及降低企业成本。
我没有三颗心脏
2019/05/10
1K0
MongoDB【快速入门】
低代码如何设计高效的数据模型?
低代码开发平台(LCDP/LCAP)作为数字化转型的关键工具,通过可视化编程和模块化开发,显著降低了软件开发的复杂性,缩短了应用交付周期。其核心优势在于能够快速响应业务需求的动态变化,从而提升企业的敏捷性和竞争力。然而,低代码平台的性能和扩展性不仅依赖于开发工具的易用性,更取决于其底层数据模型的设计。
得帆云低代码PaaS
2025/03/24
1670
低代码如何设计高效的数据模型?
IM开发基础知识补课(六):数据库用NoSQL还是SQL?读这篇就够了!
随着互联网大数据时代的到来,越来越多的网站、应用系统都需要支撑大量甚至海量数据存储,同时还伴有高并发、高可用、高可扩展等特性要求。
JackJiang
2019/09/27
2.7K0
IM开发基础知识补课(六):数据库用NoSQL还是SQL?读这篇就够了!
数据模型与查询语言 ------《Designing Data-Intensive Applications》读书笔记2
作为一个开发者来说,在一个复杂的应用程序中,是存在很多分层模型的,但基本思想还是一样的:每一层都提供了一个干净的数据模型,从而隐藏了底层的复杂性。通过这样的抽象来允许不同的人群有效地协同工作。
HappenLee
2018/09/05
7550
数据模型与查询语言 ------《Designing Data-Intensive Applications》读书笔记2
【读书笔记】《 Hadoop构建数据仓库实践》第2章
一个列或者列集,唯一标识表中的一条记录。超键可能包含用于唯一标识记录所不必要的额外的列,我们通常只对仅包含能够唯一标识记录的最小数量的列感兴趣。
辉哥
2022/05/13
1.1K0
【读书笔记】《 Hadoop构建数据仓库实践》第2章
相关推荐
大数据开发-什么是MongoDB?优缺点是哪些?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档