简要介绍MongoDB的数据模型

简介:
  MongoDB数据是特别灵活的,与SQL数据库相比,它不需要在插入数据前先定义表的结构。MongoDB的集合不强调固定的文档结构。这种灵活性使它能够轻松映射文档结构。每一个文档都可以映射它要表达的对象,即使这些数据有实质性的不同。其实在实际中,同一集合下的文档通常采用相似的结构。


    MongoDB数据建模的主要问题时在应用程序的需求,数据库引擎的性能特性和数据检索模型之间做一个平衡。设计数据模型是,总是要考虑应用程序使用到的数据(查询、更新以及需要处理的数据等等)以及数据结构本身。


    文档结构


    设计MongoDB数据模型的关键是考虑好文档结构和应用程序表示的数据之间的关系。有两种方式可以表达这种关系:引用(references)和嵌入文档(embedded documents)。


    引用(References)


    引用(References)存储数据之间的关系,包括从一个文档链接或引用到另外一个文档。这样应用程序就解决了访问关联数据的问题,一般来说,这些都是规范数据的数据模型。

spacer.gif

wKioL1QAWFiTWWz0AAFgg2BYmHY300.jpg

    Embedded Data

    嵌入式文档通过存储相关的数据在一个文档结构中来捕获数据之间的关系。MongoDB文档可以在当前文档的字段或数组中嵌入文档作为子文档。这些非规范化数据模型允许应用程序检索和操作相关的数据在一个单一的数据库操作。


spacer.gif

wKiom1QAV1biJbDMAAEoysOwgs8971.jpg

    写操作的原子性


    在MongoDB中,写操作的原子性限制在文档级别,没有一个写操作可以自动影响到多个文档或多个集合。规范化的嵌入式数据模型整合了所有的关联数据在一个文档中来展现实体。这有助于原子写操作在一个写操作中插入和更新实体的数据。规范化数据能够分隔多个集合的数据并且需要在非原子性操作中需要多个写操作。


    然后,促进原子写的模式可能限制应用程序使用数据,也可能限制修改应用程序的方法。原子性考虑设计模式的挑战,平衡灵活性和原子性。


    文档增加


    像添加元素到数组或者增加新字段这样的更新,会增加文档的大小。如果文档的大小超过了为该文档分配空间,MongoDB会重新分配磁盘空间。考虑到空间的增加,应该规范化或使用规范的数据。


    数据使用和性能


    当设计数据模型的时候,应考虑应用程序如何使用数据库。比如,如果应用程序仅使用最近插入的文档,考虑使用顶端集合(Capped Collections)。如果应用程序需要频繁的读取集合,添加索引能够提高数据查询效率。





本文转自 genuinecx 51CTO博客,原文链接:http://blog.51cto.com/favccxx/1546655,如需转载请自行联系原作者
目录
相关文章
|
存储 NoSQL MongoDB
MongoDB 集合创建指南:命名规范、索引优化和数据模型设计
MongoDB 集合创建指南:命名规范、索引优化和数据模型设计
501 0
|
存储 NoSQL MongoDB
MongoDB数据模型与文档结构详解
【4月更文挑战第30天】MongoDB是一个基于文档的NoSQL数据库,其数据模型由文档(类似键值对集合,支持嵌套和数组)、集合(无需预定义结构的文档组)和数据库(包含集合的组织单元)构成。文档使用BSON格式,支持多种数据类型。在设计数据模型时,应注意避免过度嵌套,利用索引优化查询,并考虑数据生命周期。MongoDB通过引用处理文档间关系,提供灵活性以适应复杂数据结构。
|
存储 NoSQL JavaScript
【待完善】MongoDB - 数据模型
【待完善】MongoDB - 数据模型
231 0
|
存储 JSON NoSQL
MongoDB 简介&体系结构&数据模型& | 学习笔记
快速学习 MongoDB简介&体系结构&数据模型&
274 0
MongoDB 简介&体系结构&数据模型& | 学习笔记
|
6月前
|
NoSQL MongoDB 数据库
数据库数据恢复—MongoDB数据库数据恢复案例
MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。 结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
|
6月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
510 79
|
6月前
|
存储 NoSQL MongoDB
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
304 8
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
|
5月前
|
运维 NoSQL 容灾
告别运维噩梦:手把手教你将自建 MongoDB 平滑迁移至云数据库
程序员为何逃离自建MongoDB?扩容困难、运维复杂、高可用性差成痛点。阿里云MongoDB提供分钟级扩容、自动诊断与高可用保障,助力企业高效运维、降本增效,实现数据库“无感运维”。

推荐镜像

更多